The Penguin and the Gnu

Posted on January 21, 2010


Another episode of Computer FLOSS, a YouTube series aimed at educating about FLOSS. This episode is about two flagships of the FLOSS movement (GNU and Linux), how they came to be and how they relate.

The Penguin and the Gnu

Yes, all right. No series about free and open source software would be complete without talking the Linux kernel, perhaps the most successful and famous of all such software. It’s interesting by itself, but it also serves as a concrete example for this series of how a free or open source project might develop. In fact, Eric Raymond, open source’s very own pugnacious polemicist, portrayed the Linux kernel as a kind of exemplary project that open source developers would do well to learn from.


Notice that I refer to it as the Linux kernel. A kernel is the core of an operating system — it manages the system’s resources and provides an interface to the hardware for your programs. Strictly speaking, Linux is a kernel. This is an important point because so often these days the name Linux refers to the whole operating system. By the end of this video you’ll see that that’s not totally accurate.

Simply by itself, a kernel is not terribly useful. So then why did its authors bother to develop it? And why does it deserve to be so celebrated? Well, let’s step into history and travel to a far away magical land… Finland. Once upon a time, in Helsinki, there was a university student. We’ll call him Linus Torvalds, because that’s his name. He was on a computer science course and he used a version of the Unix operating system called Minix. Minix was intended only as a teaching tool and Torvalds soon grew tired of its limitations. So he did the kind of thing that, gosh darned it, makes you proud to be a programmer: he decided to just create his own Unix clone.

Critically, he didn’t have to replace the entire system. Like Unix, Minix was highly modular — the kernel was just another program that could be swapped for another. The other pre-existing programs, like the compiler and the command-line interpreter, could be re-used with Linus’s new kernel (after a bit of tweaking). Very soon, Linux and the programs built around it grew and grew; tens of thousands of lines of code, hundreds of thousands, even millions of lines of code. Now it’s feasible for one person to be able to produce a kernel, but a whole operating system with a variety of applications and utilities?

So what happened between Linux’s birth and its eventual success? The key was, if you’ll pardon the phrase, Linus Torvalds’s promiscuity. Soon after producing a working version, Linus made his kernel freely available on the Internet – it was seen by a handful of hackers, who got involved and contributed some code of their own. From there the word spread and, in a snowball effect, more people got involved and then even more: writing code, reporting and fixing bugs, requesting new features. Linus was soon getting contributions from other programmers from all over the world. Not only that, but thanks to that modularity of which we spoke earlier , it was quickly made apparent that there was a certain collection of free software already in existence that the Linux kernel could simply slot beside to produce a working operating system thereby saving a huge amount of effort. Let me explain…

Yes, it’s that beard again. In 1984, Richard Stallman and others began to produce GNU, an Unix-like operating system made entirely from free software. By the early 1990s most of the essential system utilities and programs were ready, but Stallman’s gang had run into serious technical difficulties getting their kernel to work. So on one side you had a gang with programs but no kernel, and on the other, you had the Linux gang with a kernel and no programs. So the Linux community made their kernel work with the existing GNU software and so ended up with a working operating system.

This resulting operating system that was initially a fusion of GNU and Linux, has come to be called just “Linux”. A few insist on calling it GNU/Linux, but this has never found more than minority acceptance. After all, it is now so much more than just GNU and Linux. Thousands upon thousands of other programs have now been written to work with the operating system. So much so, it might be a daunting prospect to attempt to get hold of a working version of Linux and the programs that you want. But thank heaven for “distros”.

Distros, or more precisely Linux distributions, are projects that package together the Linux kernel, the GNU programs, and a cornucopia of other applications. Most of them provide access to a very clever infrastructure that allows you to browse through a continuously-maintained repository of thousands of ready-packaged free software programs and install them onto your machine with just the click of a mouse button. The distros come in a wealth of different forms: there are user-friendly distros for the newbies; power distros for the ultra-nerds; even live distros that come on CDs or pen drives and allow you to run Linux without installing it to your hard drive. Furthermore, Linux is finding its way into the corporate sector, running on a large proportion of Internet servers and powering supercomputers.

But I’d better stop before I begin to sound like an evangelist, because that’s not what I’m here for. Once again, the moral of the story comes down to the fact that Linux’s success is dependent upon it’s open source nature. Technically, it’s not highly remarkable, it’s just another Unix. But because Linus Torvalds decided to make the source freely available to all under the GNU General Public Licence, Linux pervaded to become the success it is today. If he had guarded the source code and denied others the right to share and modify it, I very much doubt you’d ever have heard of Linux — and certainly, little Tux the Penguin would never have born at all. And, quite frankly, what kind of a world would it be without him?