A History of UNIX That Clicks / Bonus 5If the tools aren't free, you can't sow the seed

Episode 2's question — why did a gcc and bash that Linux could use already exist?

Why GNU? — A Free Toolchain In Episode 2, the first Linux was brought up with GNU's gcc and bash. So why were those free tools already on Torvalds's desk? Because Stallman had spent the whole of the 1980s building a free toolchain. If the tools aren't free — you can't sow the seed yourself.

Prerequisites: Episode 2 (Linux's first cry) & Episode 3 (gcc) The reveal: the very tools that turn the loop must themselves be free

In Episode 2 we saw that Linux was born from gcc on MINIX and united with GNU's tools (gcc, bash) to become a single OS. Here a natural question arises — why, at the point of 1991, were a freely usable C compiler and shell all set and ready? It was no accident. Since 1983, Richard Stallman had been quietly piling up a free toolchain in the "GNU Project," rebuilding Unix from a blank sheet. This time, we read that motivation — why it had to be free — together with the main series' chicken-and-egg.

01The 1983 declaration — GNU's Not Unix

On September 27, 1983, Stallman declared that he would "make a Unix-compatible, but completely free, OS." The name was GNU — a recursive acronym for "GNU's Not Unix!" The design would follow Unix, but the code from a blank sheet (Episode 1's reimplementation tree itself). In the 1985 GNU Manifesto, he raised its philosophy — that software should have the freedom to use, study, modify, and redistribute it.

// 1983-09-27, Stallman's first announcement (gist) "Free Unix!" I am going to write a complete Unix-compatible software system called GNU (for Gnu's Not Unix), and give it away free ... "free" here means freedom, not zero cost

02Why build the "tools" first?

If you're making an OS from a blank sheet, what do you need first? — the tools (the toolchain). Without a compiler, you can't write anything. So GNU started with the editor Emacs (around 1984), then GCC (1987, Episode 3), and went on to make Unix utilities like bash, ls, grep, make, and ld, one after another, as free software. By around 1987, an assembler, a nearly-finished GCC, Emacs, and various utilities were all in place.

The crux this time — if the tools aren't free, you can't sow the seed yourself

The main series' watchword: "the first egg was carved by hand." But who gets to carve it? What if the tool that turns Episode 0's loop (gcc) or the freedom to prepare Episode 9's seed were held by one particular company? The origin of your software would then depend on someone else's permission and fees. What GNU did was — to make the chicken-and-egg chain something anyone can turn freely. It freed the very tools that turn the loop. That's why, in 1991, a single student could bring up his own OS with gcc, without anyone's permission.

◇ ◇ ◇

03The last missing piece — the kernel

By around 1992, GNU had nearly all the parts of an OS freely in place. Editor, compiler, shell, utilities — but one piece was missing. The kernel at the heart of it. GNU's own kernel, GNU Hurd (from 1990, on the Mach microkernel), was slow to reach completion. The GNU system stayed in a state of not being finished — one piece short. In the figure below, watch GNU's parts fill in, and the kernel's hole remain at the end.

Figure 1: The GNU system jigsaw. Free parts fill in — Emacs → GCC → bash… — but the last "kernel" piece stays empty. Into it fits a young leaf from another tree, Linux.

04Linux filled that hole — GNU/Linux

In 1991, Torvalds's kernel (Episode 2) appeared, and in 1992's v0.12 it became GPLv2. Linux is not part of the GNU Project. But it was made with GNU's tools such as gcc, and released under the same GPL — so with GNU's userland plus Linux's kernel, a completely free OS ran for the first time. This is why it's called "GNU/Linux." The largest real example of Episode 1's "the two trees exchange leaves at their crowns."

The young leaves of two trees come together (Episode 1, redeemed)

GNU (the reimplementation tree) had a userland and lacked a kernel. Linux (another young leaf of the same reimplementation tree) had only a kernel. The two came together under the GPL and became one complete, free OS. Neither inherited AT&T's code; they shared only the philosophy (freedom and Unix compatibility) — which is why they meshed without friction.

05The reveal — freedom guarantees the "anyone" of chicken-and-egg

The main series was the story of "the chicken-and-egg chain starting to turn from a seed." What GNU added was to write "anyone" into that chain. In the figure below, see how whether the tool that turns the loop is proprietary or free changes who can bring up software.

Figure 2: The right to turn the loop. If the toolchain is proprietary, turning the loop (making software) needs the gatekeeper's permission. If it's free, anyone can turn it — which is why one student could birth Linux.
The honest line — names and motives, carefully

(1) "GNU/Linux or Linux" is a long-running naming dispute. Stallman and others ask for "GNU/Linux" to reflect GNU's contribution, while common usage simply says "Linux." The technical fact is "the Linux kernel + (in many cases) the GNU userland," and this piece takes neither side. (2) GNU's "free" is freedom, not zero cost (gratis). It means "you can freely use, study, modify, and redistribute."

(3) GNU Hurd isn't a "failure"; it's a project still under development. "The kernel was unfinished" is a statement about the situation at the time. (4) GNU isn't the only free Unix-like system — the BSDs also offered freedom (under a different license) (Bonus 4). (5) Torvalds himself valued practicality over the philosophy of freedom in some respects, and his adoption of the GPL (Episode 2) included pragmatic judgment. "The ideal of freedom" and "practicality" are intertwined throughout history.

Practice problems (solvable with this bonus alone)
  1. Why did a free gcc and bash that Linux could use already exist in 1991?
    See the answer
    Because since 1983 Stallman had been piling up a free toolchain (gcc, bash, various utilities) in the GNU Project. Torvalds could bring things up using it.
  2. Why did GNU build "the tools first"?
    See the answer
    Because making an OS from a blank sheet requires tools like a compiler (the toolchain) first. Without tools, you can't write anything.
  3. What one piece was GNU missing around 1992? What filled it?
    See the answer
    The kernel (GNU Hurd was unfinished). The Linux kernel filled it, and GNU userland + Linux = GNU/Linux ran as a completely free OS.
  4. What does "the tools being free" add to the main series' chicken-and-egg?
    See the answer
    It adds "anyone can turn it" to the chain. If the tool that turns the loop is proprietary, the origin depends on someone else's permission, but if it's free, anyone can bring up software. GNU guaranteed that.

SummaryBecause there was someone who freed the tools

It was no accident that in Episode 2 Linux could be brought up with gcc and bash. It's because since 1983 Stallman had been piling up a free toolchain in the GNU Project ("GNU's Not Unix," Unix-compatible but from a blank sheet and completely free). First Emacs, then GCC (1987), and then bash, coreutils, make, ld… To make an OS you first need tools — and GNU prepared those tools freely.

By around 1992 GNU had nearly all the parts assembled, but only the kernel was missing (GNU Hurd was unfinished). Into it fit Linux (another young leaf of the same reimplementation tree), and under the GPL GNU/Linux = a completely free OS came into being (the largest real example of Episode 1's "exchanging leaves at the crown"). What GNU added to the main series' chicken-and-egg was "anyone" — because it freed the very tools that turn the loop, a single student could birth an OS without anyone's permission. The seed can be carved by hand. As long as the tool you carve with is free.

This document is Bonus 5 of the series "A History of UNIX That Clicks." Historical facts: the GNU Project is the plan Richard Stallman announced on September 27, 1983, to make a Unix-compatible, completely free operating system. GNU is a recursive acronym for "GNU's Not Unix." The GNU Manifesto came in 1985. From around 1984, GNU Emacs; in 1987, GCC (Episode 3); and thereafter bash, coreutils, make, binutils (ld), and the like were developed as free software. From 1990, GNU Hurd was developed on the Mach microkernel, but the kernel long remained unfinished. Linus Torvalds's Linux kernel (1991, GPLv2 with v0.12 in 1992) was developed with GNU tools such as GCC, and combined with GNU's userland, a completely free OS (called GNU/Linux) came into being. Linux itself is not part of the GNU Project. "free" means freedom, not gratis. There are differing positions and views on the "GNU/Linux" vs. "Linux" naming, the assessment of Hurd, and free Unix-like systems other than GNU (such as BSD). — To print, use your browser's "Print" and "Save as PDF" (in the print version, the figures' controls and the answers are frozen / hidden).

Print / save as PDF: ⌘+P (Ctrl+P on Windows). On screen, Figure 1's slider shows GNU's parts falling into place and Linux fitting into the kernel hole at the end, and Figure 2's buttons show how "proprietary/free" changes who can turn the loop. "See the answer" opens each solution.