GNU, the system most people call Linux
What GNU is and why it isn't Linux: a printer at MIT, a 1983 Usenet post, the GPL, GCC and Bash, a kernel that never got finished, and a Finnish student who filled the gap. Plus the GNU/Linux naming fight and a few curiosities.
If you run Linux on a laptop or a server, you're almost certainly using a lot of GNU too, even if the name never shows up anywhere. The two get mixed up all the time, so here's the story of GNU: what it is, where it came from, and why some people insist on writing "GNU/Linux" with a slash.

The short answer #
Linux is a kernel. The kernel is the core of an operating system, the part that talks to the hardware, hands out memory and decides which program runs next. On its own, a kernel doesn't give you a shell to type in, a ls to list files or a compiler to build programs.
GNU is a project to build a complete operating system made only of free software. Over the 1980s it wrote almost everything a Unix-like system needs: the compiler, the C library, the shell, the core commands, the text editor. The one piece it never finished was its own kernel.
Put the two together and you get what most people call "Linux": GNU tools running on the Linux kernel. You can see both halves on any ordinary Debian server. This blog runs on one, and asking it a few questions gives this:
$ grep PRETTY_NAME /etc/os-release
PRETTY_NAME="Debian GNU/Linux 13 (trixie)"
$ uname -sr
Linux 6.12.115+deb13.1-amd64
$ ls --version | head -1
ls (GNU coreutils) 9.7
$ bash --version | head -1
GNU bash, version 5.2.37(1)-release (x86_64-pc-linux-gnu)
$ gcc --version | head -1
gcc (Debian 14.2.0-19) 14.2.0On the server above, the kernel is Linux. The ls, the shell and the compiler are GNU. Android shows that the two really are separate pieces: it runs on the Linux kernel, but with its own C library, Bionic, and its own command-line tools, so it's Linux without GNU.
A printer at MIT #
The story usually starts with a printer. In 1980, the AI Lab at MIT got a new Xerox 9700 laser printer. Richard Stallman, a programmer at the lab, had changed the software of the lab's previous printer so it told users when their job had finished and warned everyone when the paper jammed. With the new one, he couldn't, because the lab was refused access to its source code.
It sounds small, but for Stallman it showed where software was heading. In the early days, programmers at places like MIT shared code freely and fixed each other's tools. By the early 80s, more and more software came with licenses and non-disclosure agreements that forbade exactly that.
"Free Unix!" #
On September 27, 1983, Stallman posted a message to Usenet with the subject "new Unix implementation". It opened like this:
Free Unix!
Starting this Thanksgiving I am going to write a complete Unix-compatible software system called GNU (for Gnu's Not Unix), and give it away free to everyone who can use it.
Further down, he explained why:
I consider that the golden rule requires that if I like a program I must share it with other people who like it. I cannot in good conscience sign a nondisclosure agreement or a software license agreement.
He chose to copy the design of Unix for a practical reason. Unix was already popular and its interfaces were well known, so volunteers anywhere could each write a compatible replacement for one Unix tool, and the pieces would fit together. The plan in that first message lists a kernel, an editor, a shell, a C compiler, a linker, an assembler, and later "a text formatter, a YACC, an Empire game, a spreadsheet, and hundreds of other things".
The real work started in January 1984, and Stallman quit his job at MIT so the university couldn't claim the code. In March 1985 he published the GNU Manifesto in Dr. Dobb's Journal, and in October of that year he founded the Free Software Foundation to support the project.

Free as in freedom #
The word "free" caused trouble from day one. The GNU site now keeps a footnote under that 1983 announcement admitting that "the wording here was careless". The point was never that software should cost nothing. It was that nobody should need permission to use it, study it, share it or change it. The usual way to say it is "free as in free speech, not as in free beer".
That idea became four freedoms, numbered from zero the way programmers count:
- freedom 0: run the program as you wish, for any purpose
- freedom 1: study how it works and change it, which needs the source code
- freedom 2: give copies to others
- freedom 3: give others copies of your changed versions
To protect those freedoms, GNU came up with a clever legal trick, the GNU General Public License, or GPL. It uses copyright against itself: you can copy, change and share GPL software, but if you distribute a changed version, it has to go out under the same license, with its source. That's called copyleft. The first GPL came out in 1989, version 2 in 1991, and version 3 in 2007.
What GNU built #
Piece by piece, the system took shape:
- GNU Emacs, the editor, in 1985
- GCC, first released on March 22, 1987, as the GNU C Compiler. It added C++ the same year and is now the GNU Compiler Collection.
- Bash, the shell most people still meet first when they open a terminal
- the GNU C Library, glibc, which nearly every program on a typical Linux system calls into
- the core utilities,
ls,cp,mv,catand friends, plusgrep,sed,tar,makeand hundreds more
By the early 90s, almost the whole system was there, except for one piece.
The missing kernel #
GNU's kernel is called the Hurd. Work on it started in 1990, built on Mach, a microkernel from Carnegie Mellon. In a microkernel design, most of what a normal kernel does runs as separate programs instead, which is elegant and also very hard to get right. Stallman said years later: "I thought using Mach would speed the work by saving us a large part of the job, but I was wrong."
While the Hurd crawled along, a Finnish student wrote a kernel of his own. On August 25, 1991, Linus Torvalds posted to the comp.os.minix newsgroup:
I'm doing a (free) operating system (just a hobby, won't be big and professional like gnu) for 386(486) AT clones.
Early Linux was built with GCC and ran Bash. In early 1992 it moved to the GPL, and from then on, GNU's tools and Linux's kernel fit together as a complete free system. Torvalds has said that if the GNU kernel or 386BSD had been ready at the time, he probably wouldn't have written his own.
GNU/Linux or just Linux? #
This is where the slash comes from. The Free Software Foundation argues that calling the whole system "Linux" gives all the credit to a kernel and erases the project that wrote most of the rest, along with the idea of freedom that started it. Stallman has said it makes people think everything began with Torvalds in 1991.
Torvalds, for his part, has called the idea of naming Linux in general "GNU Linux" "just ridiculous", while saying a distribution that really is a GNU distribution of Linux can call itself that.
Some distributions took the long name. Debian has been "Debian GNU/Linux" since early 1994, after Stallman asked, which is why it shows up in the output above. Most people still just say "Linux". Whatever you call it, the system is two projects working together.
There's a trace of this argument hidden in almost every Linux machine. In 1996, Stallman released an Emacs version that called the system "lignux". That didn't stick, but the replacement did: when software describes the platform it's built for, it writes linux-gnu, like the x86_64-pc-linux-gnu in the Bash line above.
A few curiosities #

- A gnu is a real animal, also called a wildebeest, the bearded antelope that crosses the African plains in huge herds. That's the head on the logo.
- GNU is a recursive acronym: "GNU's Not Unix". The G stands for GNU, which stands for GNU's Not Unix, and so on forever.
- It's pronounced with the g, as one syllable: "g-noo".
- The Hurd has a recursive name too, two of them in fact. Hurd is the "Hird of Unix-Replacing Daemons", and Hird is the "Hurd of Interfaces Representing Depth". Said out loud, both sound like "herd", as in a herd of gnus.
- The Hurd still exists. Debian GNU/Hurd 2025 came out in August 2025, for 32-bit and 64-bit PCs, with about 72% of the Debian archive available. It's still not considered ready for production, and the recommended way to try it is in a virtual machine.
- In the old editor war between Emacs and vi, Stallman answered by canonizing himself as St. IGNUcius of the Church of Emacs.
- That first announcement asked manufacturers for donated machines, with a warning that a donated machine "had better be able to operate in a residential area, and not require sophisticated cooling or power".
Why it matters #
Today, GNU code runs on an enormous number of servers, laptops and embedded devices, mostly without anyone noticing the name. Every time you open a terminal on a Linux machine, type ls and press enter, a small piece of a project announced on Usenet in 1983 runs for you.
If you want to read the originals, the 1983 announcement and the GNU Manifesto are both on gnu.org, and both are short.