Headbanging: GNU versus Linux

GNU vs Linux

One of the oldest flamewars in the non-Windows world is the one between people who call the operating system based on the kernel developed by Linus Torvalds “Linux” or “GNU/Linux”.

A bit of history

All the way back in 1983, a certain Richard Stallman started a project he called “GNU” (Gnu is Not Unix). It’s a recursive and funny (at least on dad joke levels) acronym to refer to a complete operating system which was supposed to work like UNIX, but composed exclusively of free software. In this case, “free” does not mean cost-free, as it would sometimes be the case, but rather carries the meaning that there is a certain freedom to software that falls under this category. This distinction is notoriously referred to as “free as in freedom, not as in free beer“.

The GNU Project

Stallman proposed that software should serve the user, and not the other way around. He propagates the idea that the user should have the ability to control everything that the software working on his computer does. That included the right to copy, modify and redistribute as they see fit. For that he created GPL (the GNU General Public License), which specifies that this software is free and that it is forbidden not to distribute its source-code or any changes made to it (although making money off of it is perfectly okay).

GNU aims to be a complete operating system, with all required tools to perform any task. And, in fact, since that time countless standard tools were already implemented as free software, including some well-known packages like coreutils, tar, make, gcc, bash, among others. But there was a problem: the core of the OS, the program responsible for mediating communications between programs and the hardware, did not exist. Several ideas were proposed, but none of them went very far. One of those, Hurd, was born in 1990 and crept on through the years and is alive still today, with a few distributions shipping with it. Back in 1991, however, Hurd was far from viable.

Linux arrives

Then came along some college student from Helsinki, Finland called Linus Torvalds, who published a pet project of his to the comp.os.minix Usenet group:

Hello everybody out there using minix –

I’m doing a (free) operating system (just a hobby, won’t be big and professional like gnu) for 386(486) AT clones.  This has been brewing since april, and is starting to get ready.  I’d like any feedback on things people like/dislike in minix, as my OS resembles it somewhat (same physical layout of the file-system (due to practical reasons) among other things).

I’ve currently ported bash(1.08) and gcc(1.40), and things seem to work. This implies that I’ll get something practical within a few months, and I’d like to know what features most people would want. Any suggestions are welcome, but I won’t promise I’ll implement them 🙂

                Linus (torv…@kruuna.helsinki.fi)

PS.  Yes – it’s free of any minix code, and it has a multi-threaded fs. It is NOT protable (uses 386 task switching etc), and it probably never will support anything other than AT-harddisks, as that’s all I have :-(. 

People promptly responded, asking for details and wanting to contribute. Some (not much) time later, versions of the GNU OS started to appear using that kernel, which eventually started being called “Linux” (according to Linus himself, for lack of a better term).

It’s a well-known fact that Linus likes (or rather used to like) a good argument, and eventually he got into rather… intense… exchanges with several people, including Andrew Tannenbaum, author of minix, after he declared Linux “stillborn”. In the end, however, minix (and Tannenbaum, some would claim) are but footnotes, and Linux (from a certain point of view) conquered the world: most of the Internet runs, mainly, on Linux. In that sense, even people that use exclusively Windows use Linux, in a way.

The point is that the arrival of Linux saved GNU: by having a functional kernel, now it was actually possible to create an entire operating system using only open source code (since Linux itself is licensed under GPLv2).

The flamewar debate begins

One of the first distributions to ship Linux was Yggdrasil, and they termed it “Linux/GNU/X” in 1992. Shortly after that the term “GNU/Linux” started popping up everywhere. It didn’t take long for Stallman and the Free Software Foundation (which was founded by him and published the GPL) started to undertake a campaign to make it clear that that operating system that was growing so quickly should be called GNU/Linux, since, after all, Linux was only the kernel of the system, and all of the rest was developed independently of it.

On one side were the proponents of the “complete” name, claiming that due credit was not being given to those who contributed to develop the GNU tools, going to the extreme of accusing the “other side” of cheating (or worse). On the other side were those who argued that adding names to “it” would only complicate matters, creating an unnecessary complex and convoluted acronym combination, calling it “politically correct overcompensation” and going to the extreme of accusing the “other side” of being communist. When things get to that point, the whole issue loses meaning.

This astonishingly irrelevant debate flamed on for almost two decades, with adamant positions defended by both sides. It serves as an example for one of the negative aspects of the free software/open source community in general. On many occasions a decision that is not that relevant becomes the center of endless arguments, while more important issues remain unresponded or unattended. If less pointless debates like that happened in the past, maybe “Desktop Linux” might be closer to being a reality.

So what do I call this thing then?

At the end of the day, I call it GNU/Linux. Most people call it just Linux, and that’s fine, too. Others prefer to call it “GNU+Linux” (and they actually pronounce the “plus”), and that’s also fine.

In the end, the kernel is the most important part of the OS and without it GNU would be just a great collection of free tools, in search of a kernel. On the other hand, if it hadn’t been thrown into the mix with GNU, Linux might have coalesced with other collections and would have moved on, although probably not as successfully.

GNU has, without a doubt, massively contributed to the success of Linux. The Free Software Foundation and Richard Stallman deserve all the credit for that. But credit is not just in the name; source code and documentation are always abundantly clear about that. Making a point of forcing GNU onto the name of the operating system is derived more from ego than from credit proper.

If only name carried merit, then each particular setup would have a particular name, like Debian/GNU/Linux/X/GNOME/whatever. Instead, I’ll just say I use Debian. It’s reasonable to use “Debian GNU/Linux” in a more formal context, but on a day-to-day basis, it’s Debian or Linux, and Stallman is going to have to deal with it.

As a further ado, and to cite another example from the computer industry, no one says they use “Windows/Adobe/Oracle” systems. They say they use “Windows”, and it’s implicit that there is software from several different sources running there besides Microsoft. I see no reason why it should be different with Linux.

Conclusion

Stallman’s activism is a positive thing. It contributes to an operating system that is better than the alternatives in almost every relevant aspect. Sadly, the presence of Linux on the desktop is not that widespread, on account of Microsoft’s headstart. It is advisable to take that activism with a grain of salt, though. No kind of extremism is healthy, including when it is “for the sake of freedom”. Over the years the insistence on “purity” may have caused more trouble than benefit. Evolution is not born out of intransigence, but from dialogue.