The question we posed in Episode 0 ── now we assemble the whole picture of its answer
gcc, gcc by an existing cc, C from B, the assembler from a cross-assembler, the first bytes by human hands, and their meaning by wiring. ── Looking up from the very bottom we descended to, the answer to the chicken and egg comes together into a single picture.
In Episode 0, we posed a question ── "Linux is compiled by gcc running on Linux. So what compiled the first Linux?" Ever since, we've descended, step by step, outside and below that loop. gcc on MINIX, an existing cc, C grown from B, O-code, PDP-7 assembly, the GE-635 cross-assembler and paper tape, the few words hand-entered with toggle switches, and the wired decoder that gives them meaning. It was a long staircase. Now we're at the bottom. This time we climb back up, and put the answer to the chicken and egg into clear words.
First, a bird's-eye view of the whole. The staircase foretold in Episode 0, we actually descended all the way down. In the figure below, light the seed at the very bottom. The fire lights from the bottom up, one after another, and at the very top ── Episode 0's self-hosting loop begins to turn.
The chicken and egg naively seem to go back infinitely. But in reality it was different. The chain is finite, caught and stopped by two non-software seeds.
Seed 1: the first bytes (Episode 9) ── the few words a human made by hand into machine code from an instruction table, and entered with toggle switches.
Seed 2: the machine that gives meaning (Episode 10) ── the logic gates, designed and wired by humans, that turn those bytes into action.
Neither is a program. They are humans + physics. The loop in which the chicken (running software) and the egg (its source) need each other was ignited from outside, just once, by these two seeds. From then on ── the loop of software making software has kept turning by itself.
You can ask of seeds 1 and 2, too, "well then, what about the humans? the physics?" But that is no longer the question of "what compiled it". It's a matter of human intent and physical law ── a different chain from the software chicken and egg. The chain of "what compiled/assembled what" that we've been tracing has correctly ended the moment it reached something non-software (hands and wiring). It wasn't infinite regress, but a landing.
And here's the most beautiful part. The fire entered the seed only once. After that, the self-hosting loop keeps turning ── C makes C, gcc makes gcc, Linux makes Linux, and on top of that yet another gcc… So you, today, no longer have to flip switches by hand. The loop that grew from a seed sown once, half a century ago, has turned all the way to your hands, without ever once stopping. In the timeline below, follow that single path.
bootstrap was a tall tale, as physically impossible as "pulling yourself up by your own bootstraps" (Episode 9). Software looks like it's doing exactly that ── a compiler makes a compiler, an OS makes an OS. But the riddle is solved. Just the very first time, a human hand on the outside did the lifting instead. Once it's lifted even a little, from then on you can lift yourself up by using "the previous self" as a foothold. Self-hosting means standing on the shoulders of the previous self. The answer to the bootstraps riddle is ── just the first step, you borrowed someone else's (a human's) hand.
Which came first, the chicken or the egg?
── The first egg was carved by hand.
And after that carved seed, the loop of software making software has kept turning, without ever once stopping.
gcc nowWhen you type gcc at the terminal and build Linux ── that one line is connected in an unbroken chain. To the previous gcc, the one before that, …, the C that Ritchie grew from B, the assembler that Thompson carried on paper tape, the few words someone flipped in on the console switches, and the logic gates the engineers wired. That chain has never once been broken. Your build is the tip of a branch, still growing today, from a seed sown by hand half a century ago. ── This was the answer of "A History of UNIX That Clicks."
(1) "Hitting bottom at two seeds" is the answer to the software chicken and egg (what compiled what). The manufacture and design of the hardware itself has its own bootstrap (the tools that design a chip are, again, other chips and software…), and that is its own rich, separate story ── still continuing, beyond the reach of this series.
(2) The fine details of history (dates, people, circumstances) vary by source, and in each episode's footnotes we kept to the range for which sources can be found. (3) "Carved by hand," "seed," and "fire" are turns of phrase for understanding, but they are backed by facts ── the early hand-assembly and switch input (Episode 9), and the human design of the instruction set (Episode 10). (4) This series took as a given that the framework of compilers, OSes, and self-hosting works effectively, and only re-examined its "starting point."
Beginning from "what compiled the first Linux," we kept descending, outside and below the loop ── gcc on MINIX, an existing cc, C grown from B, O-code, PDP-7 assembly, the GE-635 cross-assembler and paper tape, the few words toggled in by hand, the wired instruction decoder. The chicken and egg was not infinite regress, but hit bottom at two non-software seeds ── 1. the first bytes entered by hand, and 2. the machine that gives meaning, wired by hand. Both were humans + physics.
The fire entered the seed only once. After that, the self-hosting loop has kept turning for half a century, without ever once stopping, and reaches all the way to your gcc today. The answer to bootstrap ── the impossible feat of pulling yourself up by your own bootstraps ── is, "just the first step, a human hand did the lifting." The two trees of Episode 1 (bloodline and reimplementation), too, stood beneath their roots on the same physical earth. ── Which came first, the chicken or the egg? The first egg was carved by hand. After that carved seed, the loop of software making software keeps turning. This is the answer of this series. Thank you for reading.
Print / Save as PDF: ⌘+P (Ctrl+P on Windows). On screen, use "▶ Light the seed" in Figure 1 for the ignition of the whole, and the slider in Figure 2 to trace the timeline. Click "See the answer" to open each solution. Return to the table of contents and revisit any episode you're curious about.