The Linux kernel was originally created by Linus Torvalds, a Finnish computer science student, and first announced to the world on August 25, 1991—exactly 20 years ago today. At the time, Torvalds described his work as a "hobby" and contended that it would not be "big and professional" like the GNU project.
But the Linux kernel turned out to be one of the most significant pieces of open source software ever developed. Over the past two decades, it has grown from a humble hobby project into a global phenomenon that runs on everything from low-cost e-book readers to a majority of the world's supercomputers. Here's how it grew.
From Freax to Linux
While it's easy now to take the name "Linux" for granted, Torvalds had modestly rejected the idea of naming the new kernel after himself, instead calling it Freax. The name "Linux" was selected by Ari Lemmke, an employee at the Helsinki University of Technology (HUT) who created the folder in which the original Linux source code was hosted on the Finnish University and Research Network (FUNET) FTP server. Lemmke reportedly disliked the name "Freax" and thought that "Linux" sounded more appealing.
The original 0.01 release of Linux could not actually run. Torvalds published the source code—despite its technical shortcomings—for the benefit of Lemmke, who had expressed interest after the initial announcement. Not until the 0.02 release on October 5, 1991 could the OS function.
The earliest versions of the Linux kernel source code were published under licensing terms that made the software free to use and to redistribute for non-commercial purposes. The code was transitioned to GNU's General Public License in 1992 following the release of version 0.12, and the Linux kernel is still distributed under that license today.
The UNIX landscape at the birth of Linux
Other prominent UNIX clones were already under development at the time of Linux's birth, including some that were distributed in source code form for the benefit of academics and hobbyists.
The Berkeley Software Distribution (BSD), originally derived from Bell Labs UNIX code, gradually emerged as a distinct UNIX variant during the late 1980s. Most of the proprietary UNIX code had been purged by the time that the non-functional BSD Networking Release 2 (Net/2) was published in 1991, one month before Torvalds announced his kernel project. Developer William Jolitz released a functional 386-compatible port the following year.
Although BSD had significant potential and a strong developer base, the project was crippled out of the starting gate due to a lawsuit brought by AT&T's Unix System Laboratories subsidiary, which held the rights to the proprietary System V UNIX operating system. AT&T had some questions about whether code encumbered by USL's intellectual property rights had truly been purged from BSD in its entirety. Such concerns stifled BSD adoption until the lawsuit was settled in 1994 under terms that cleared away the cloud of uncertainty.
Richard Stallman, the idealistic founder of the Free Software movement, launched the GNU project in 1983 with the goal of building a UNIX clone under a Free Software license. The GNU project was originally going to adopt MIT's TRIX kernel in 1986, but later decided to build on top of the Mach microkernel, which was being developed at Carnegie Mellon University (CMU).
At the start of 1991, GNU was waiting for CMU to determine if it could release Mach under a suitable software license. The actual development of GNU's Hurd kernel on top of Mach didn't seriously begin until late in 1991. Hurd development never gained significant momentum and consequently hasn't seen much adoption. Hurd is still under active development, however, and will soon be supported in an official Debian port.
MINIX also played a major role in early Linux history. Vrije Universiteit Amsterdam professor Andrew Tanenbaum created the MINIX kernel and released the source code in 1987 through textbook publisher Prentice Hall, which sold copies to students and researchers for $69. MINIX was built with a microkernel architecture that reflected what the academic community then regarded as the best practices of operating system design.
Tanenbaum had created MINIX and an accompanying textbook to teach operating system design, so he had no interest in evolving the code into a production-quality platform. As he explained in a 2004 essay about the history of MINIX, he wanted to keep the code as svelte and comprehensible as possible for the benefit of his students. He turned down requests to extend the code with various features that would have increased its complexity and diminished its expository pedagogical value.
GNU and MINIX both played an essential part in Linux's creation. The earliest versions of Linux were bootstrapped on MINIX and drew inspiration from the MINIX kernel. Early Linux users also depended heavily on GNU's tools and its C compiler—as many still do today.
"Sadly, a kernel by itself gets you nowhere. To get a working system you need a shell, compilers, a library etc. These are separate parts and may be under a stricter (or even looser) copyright. Most of the tools used with linux are GNU software and are under the GNU copyleft," Torvalds wrote in the original Linux 0.01 release notes. "The linux kernel has been made under minix, and it was my original idea to make it binary compatible with minix. That was dropped, as the differences got bigger, but the system still resembles minix a great deal."
The Torvalds and Tanenbaum debate
Although Linux and MINIX had much in common at the start, including a similar filesystem layout, significant technical differences between the two kernels would later become the subject of a running debate between Torvalds and Tanenbaum.
The Linux kernel has a "monolithic" architecture, whereas Tanenbaum's MINIX was designed as a modular microkernel. In a 1992 statement, Tanenbaum declared that the Linux kernel was "obsolete" from the start and that building a monolithic kernel was a "giant step back" from the state of the art and "a truly poor idea." Tanenbaum went on to suggest that people who wanted a modern free operating system would be better off waiting for GNU to deliver a microkernel rather than using Linux.
Torvalds responded sharply to the criticism and defended his design decisions. Although he acknowledged the theoretical benefits of microkernel design, he argued that Linux was a better real-world kernel than MINIX due a number of pragmatic technical advantages in areas like threading and multitasking. He thought GNU might eventually produce a superior alternative, but he continued pressing forward with Linux because there was clearly demand for an immediate solution.
"I've got more excuses than you have, and linux still beats the pants off minix in almost all areas," Torvalds wrote in response to Tanenbaum. "From a theoretical (and aesthetical) standpoint linux loses. If the GNU kernel had been ready last spring, I'd not have bothered to even start my project: the fact is that it wasn't and still isn't. Linux wins heavily on points of being available now."
Linux arrived at a crucial time in computing history, offering the right blend of useful characteristics. Torvalds was willing to collaborate with others and add features that users wanted, the code was a clean-room implementation without any legacy intellectual property encumbrances, and it was being driven at a good pace with a focus on pragmatic considerations. These advantages allowed Linux to attract interest during its formative years.