A History of UNIX That ClicksFinale / Looking up from the bottom

The question we posed in Episode 0 ── now we assemble the whole picture of its answer

The Answer to the Chicken and Egg ── The Seed Was Carved by Hand Linux was compiled by 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.

The confluence of all 10 previous episodes The motto: the first egg was carved by hand

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.

01The staircase we descended, once more

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.

Figure 1: Ignition. Fire enters from the "seed (human hands + wiring)" at the bottom and lights up machine code → assembler → C → gcc → Linux, and at the topmost stage the self-hosting loop begins to turn ── this is the single picture of the whole series
The seed at the very bottom = human hands (Episode 9) + wired-in meaning (Episode 10). Light the fire here, and…

02The answer ── not infinite regress, but hitting bottom at two seeds

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.

The series' answer ── two 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.

How to answer "and what made that seed?"

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.

03After the seed is sown ── the loop hasn't stopped

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.

Figure 2: A single-path timeline. From the reaction against Multics to Unix, C, MINIX, Linux, and to now. Use the slider to check the "role" at each milestone ── every one of them is on the same single loop
CONNECTING VOICE ── the two trees, too, stand on the same seed (revisiting Episode 1) In Episode 1 we split off "the bloodline tree (BSD…)" and "the reimplementation tree (MINIX, GNU, Linux)." As lineages they are two separate trees, but both trees, beneath their roots, stand on the same physical seed. Whether you inherit the genes or only the ideas, to run you need "a wired machine that gives meaning" and "the hand that first started it." Even though the two trees branch above ground, below ground they were supported by the same earth ── the hardware that humans designed and wired.
◇ ◇ ◇

04bootstrap ── the riddle of the bootstraps, solved

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.

05When you type gcc now

When 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."

THE HONEST LINE ── carefully, at the end

(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."

Final practice problems (solvable with the whole series)
  1. If you go back infinitely on "what compiled Linux," where, and at what, do you land?
    See the answer
    It doesn't continue infinitely; it lands finitely. It is caught and stopped by two non-software seeds ── 1. the first bytes a human entered by hand, and 2. the machine that gives meaning, designed and wired by humans (logic gates).
  2. State in one sentence what is happening "after the seed is sown."
    See the answer
    The self-hosting loop (the loop of software making software) keeps turning, without ever once stopping. That's why you don't have to flip switches by hand now.
  3. What is the answer to the riddle of bootstrap (pulling yourself up by your own bootstraps)?
    See the answer
    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 using "the previous self" as a foothold (self-hosting).
  4. Explain the motto "the first egg was carved by hand" in your own words.
    See the answer
    (Example) Neither chicken nor egg springs from nothing; only at the very start did a human make machine code by hand and wire the machine to start it. After that one "hand-carved seed," the loop of software making software runs on its own.

ConclusionWhat came into view once we reached the bottom

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.

This document is the Finale of the "A History of UNIX That Clicks" series. Starting from the question "what compiled the first Linux," this series traced the bootstrapping of the toolchain (what compiled/assembled what) in reverse chronological order, covering Linux (1991, gcc on MINIX) → gcc (existing cc, 3-stage bootstrap) → C (continuous evolution from B, 1972-73) → B/BCPL (O-code) → the first Unix (1969, PDP-7 assembly) → cross-assembler and paper tape (GE-635/GECOS) → the manual bootstrap (hand-assembly, toggle switches) → the instruction decoder (logic gates). The software chicken and egg is finite, reducing to two non-software seeds (a manual initial boot, and hardware designed and wired by hand). The bootstrap of the manufacture and design of the hardware itself is a separate problem, outside the reach of this series. Dates, people, and circumstances vary by source, and were noted, in each episode's closing footnotes, within the range for which sources can be found. "Seed," "fire," and "carved by hand" are turns of phrase for understanding, but they are based on the facts of the early hand-assembly, switch input, and the human design of the instruction set. ── To print, use your browser's "Print" and "Save as PDF" (in the print version, the figures' controls, animations, and answers are static/hidden).

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.