The GNU project started in 1983, with the stated intent to “free unix”. Free in the sense that it would not be restricted for use, and would be available at no charge. In the words of the initiator of the project, Richard Stallman, the goals of the project were ambitious:
“To begin with, GNU will be a kernel plus all the utilities
needed to write and run C programs: editor, shell, C compiler,
linker, assembler, and a few other things. After this we will
add a text formatter, a YACC, an Empire game, a spreadsheet,
and hundreds of other things. We hope to supply, eventually,
everything useful that normally comes with a Unix system,
and anything else useful, including on-line and hardcopy
documentation.”-Richard Stallman
1983, net.unix-wizards mailing list
link
While the GNU project is much larger than the originally listed components, the first four are listed below by their official names:
Of those, only the last 3 are in common use by Linux distros. The HURD kernel has been in development for decades and has never matured to a state where it could replace the Linux kernel.
Even if we account for all of the other things the GNU project contributes to a fully functional Linux distribution (there are a lot), the sum of all the parts is not made up of only the Linux kernel and the GNU components. There are significant pieces shipped with a Linux distribution that have nothing to do with the GNU project. Some of them are not even licensed under the FSFs preferred licenses.
Some significant ones:
- The X.org Windowing system – Not GPL, not from GNU
- The Qt framework – Originally proprietary, not from GNU
- Firefox – Nothing to do with GNU
There are others, but just those 3 things are a significant part of of a shipped Linux distribution. While it is true that the foundation that enables all these things to run is made up of a significant number of GNU components, it is also made up of the Linux kernel, which is essential if you want the system to work at all, and other significant components that are involved in booting and managing the system. For instance the init system, which is the first process the kernel executes and is in charge of starting (and now managing in some cases) the rest of the system, has nothing to do with GNU, none of the current implementations of an init daemon came from the GNU project. Oh there is one, it’s called DMD (and it sounds cool), but so far as i can tell most major Linux distributions are not using it. Ubuntu developed their own called Upstart, everyone else uses either the sysvinit package written by Miquel van Smoorenburg, or the BSD init package.
Now of course nothing is entirely isolated, these things all depend on each other and lower level systems and libraries to function, for instance many programs make use of the GTK+ toolkit, or the GNU C library, but that does not make them GNU projects. If we were to make a chart with 2 columns, one side GNU, other side “3rd party”, which column do you suppose Firefox, Gnome, Pidgin, Xfce, or any other high level interface component or program would go in?
If we are to declare that a system using GNU components among other things, should be called the GNU operating system, are we saying that the operating system is primarily defined by these low level components? And that only the GNU components should get a spot in the official name of an operating system that makes use of them? The GNU components aren’t much use without a kernel or an existing complete operating system to use them on, the Linux kernel doesn’t do much without some userland software like the GNU components, and none of the high level components listed like Firefox or Gnome would work at all without an operating system underneath them. But since that is the case, might an average user of Ubuntu refer to their operating system as the Mozilla/X.Org/Gnome/GNU/Linux operating system? That would be silly.
So what is the measure by which we justify including the name of a specific contributor in the official title of an operating system? Is it lines of code? Percentage of total space used? Are we going to have to go through the lines of code one by one and count them, or count the absolute size in kilobytes of all of these components to see which group makes up the majority?
Fortunately we don’t have to do that, the GNU project has a webpage up on their site about this very topic, unsurprisingly they take the opposite position that I do. On that page, they actually give an example of a measurement someone made at one point, comparing the total contribution of the GNU project to an arbitrary distribution compared to other projects and developers. It was 15% in 2008. The GNU project explains away their reasoning that the GNU components are “the largest single contingent”, which clearly justifies naming the whole thing GNU. I’m not even sure if that is true at this point, some of the high level libraries are absolutely huge, the kde libraries and the Qt libraries they make use of are probably over 100MB alone. They also state that the Linux kernel makes up 1.5%, so why not drop it entirely? Just call it the GNU operating system.
Or maybe the significance of the code in question should define the operating system? The kernel is very important so we obviously must keep it in the name, but to an average Ubuntu user, the Firefox web browser and the desktop environment they use are probably the most significant, second only to the fact that their hardware (hopefully) works correctly thanks to the kernel. So that would be Mozilla/Gnome/Linux or Mozilla/KDE/Linux. Stupid right?
In the end, all of this is absurd narcissism, 15% of the codebase is a minority. The whole point of free software is that the best parts to do a specific job are used, re-used, modified, passed around and compiled into complete usable operating system distributions, or not. It’s just software, it’s out there if someone wants to use it. Many other packages are included in a distribution like Ubuntu, most of them are essential in delivering the user experience. To trivialize all of the other excellent software that goes into a complete operating system like Ubuntu, and demand that an implementation of a free Unix-like operating system should be defined by what the GNU project claims is the largest single contributor, is arrogant. The largest contributor is the COMMUNITY, so why don’t we just call it Community/Linux, or CommunityOS?
We have a brand name already, Linux. It is easily recognized, most sysadmins know what Linux is, most companies are aware of its advantages, and a growing number of users are using a distribution of this operating system and calling it Linux. It is easy to say, compared to GNU/Linux or even just GNU. The GNU projects preferred pronunciation is Guh-new, which is even harder to say than spelling the letters out (which is what i do, by the way). At this point Linux is the defacto brand for all this software, so get behind it.
How many of the apps on your Linux box would be functioning if I removed GNU libc? :)
Probably none, but glibc isn’t essential, there are other C libraries.
Thank you for this post. It needed to be said.
The “GNU philosophy” irritates me to no end. They wanted free components, so they wrote them. So what? People do that all the time, and that doesn’t make you special. Half of the GNU contributors contributed to the GNU projects without caring a bit about the philosophy. They saw a promising and free product and wanted to make it work for them, even if it meant signing away the rights to their code. Don’t be so presumptuous as to assume that they raise the Stallman standard, too.
GNU libc may indeed be integral to the current implementation. But Andrew, how much of your libc would run without a kernel? Absolutely none of it. Therefore, Linux is Linux with GNU piled on top. You could of course compile it for another kernel. But wait, there isn’t a usable GNU kernel, is there?
GNU software is not the most low-level nor the most high-level portion of code in the Linux operating system. It’s bloody middle-ware. It’s no more important than anything else in the system. And the cog that turns it all, the piece that sets the standard for communication with the rest of the system is Linux. You compile against the kernel and *link* libraries in order to make use of them.
If I wanted “freedom” I’d turn the computer off and go fishing. I turn my computer on to get shit done, be it work or play. Having the convenience of your software at the price of your philosophical evangelism and ego is not worth it. I am not made *free* by using your software, I am chained to it by the manacles of your academic oppression and fanaticism. So just sod off and go build your toy kernel.
I’d just like to interject for a moment. What you’re refering to as Linux, is in fact, GNU/LInux, or as I’ve recently taken to calling it, GNU plus Linux. Linux is not an operating system unto itself, but rather another free component of a fully functioning GNU system made useful by the GNU corelibs, shell utilities and vital system components comprising a full OS as defined by POSIX.
Many computer users run a modified version of the GNU system every day, without realizing it. Through a peculiar turn of events, the version of GNU which is widely used today is often called “Linux”, and many of its users are not aware that it is basically the GNU system, developed by the GNU Project.
There really is a Linux, and these people are using it, but it is just a part of the system they use. Linux is the kernel: the program in the system that allocates the machine’s resources to the other programs that you run. The kernel is an essential part of an operating system, but useless by itself; it can only function in the context of a complete operating system. Linux is normally used in combination with the GNU operating system: the whole system is basically GNU with Linux added, or GNU/Linux. All the so-called “Linux” distributions are really distributions of GNU/Linux.
The applications you are describing as being a large part of the OS, such as QT, firefox and X, in fact have nothing to do with the operating system. We have hundreds of servers where I work and not one of the linux boxes has any of those things installed. A distribution may be mostly programs like that. So perhaps you are saying for example Ubuntu is more like GNU/Linux + Applications when installed with default packages.
The fact is without GNU you have no useful linux on this scale and without linux GNU would be very obscure indeed. They are a partnership and without any of the other programs you mention they work just fine together. I recognize it as GNU+Linux, GNU/Linux or when I’m lazy just linux.
Linux is the name for the KERNEL. The run-time system is called the “GNU System”.
I would submit that it no longer matters. Linux has become a brand name, I think we should embrace it and move forward. Attribution is already made as to the author of all this software, I don’t think much more can be gained by insisting that we call the whole thing GNU/Linux. Given that people already use similar name structure for distributions like Ubuntu Linux or Redhat Linux, calling it GNU/Linux is just going to cause confusion, and Ubuntu GNU/Linux is just a kludge, to say nothing of pronouncing the slash.
The widespread usage of Linux as a brand name for the GNU+Linux system means nothing for the case of clear thinking. The point that RMS makes is that by labelling the system just after Linux, people are led to believe wrong things about the different components. There is a real confusion arising from overloading the Linux label to describe every program conveyed with a GNU+Linux system.
One such confusion is that people believe that the GNU software are nothing more than a bunch of userland tools. This is not accurate as GNU is an almost complete operating system. By 1991, the system was mostly complete as it was missing one critical component – the kernel program. With this in mind, it doesn’t take much effort to understand why people pair Linux (an operating system kernel program) together with GNU (an operating system without a kernel). Confusion about the reality can be minimized by persisting in the distinctions.
We are well aware of all the other important software that may be distributed together with a GNU+Linux system. Examples may include KDE, X.org, or BSD system software. Whatever extra software is included, the fact remains that all these other software run above the fundamental GNU plus Linux operating system.
I disagree. It is GNU+Linux, not Linux. Without GNU, there would be no linux. Why not give the guy credit? GNU/Linux.
As i believe i pointed out in the article, the following formula holds true for a lot of software:
“Without ___________, there would be no Linux”
Insert GNU, Gnome, KDE, or any of the other very large, high profile projects and the sentence works (And may be even more correct). GNU is important, but not enough to force this horrible “GNU/Linux” name, that no one will use, on the world.
I didn’t fully understand what GNU was until I started experimenting with the BSD distributions, which as you probably know are the free successors to UNIX. From what I can tell, the complete GNU system is comparable in function to a complete installation of FreeBSD, NetBSD, or OpenBSD.
FreeDOS is similar. You don’t just get a kernel and a command-line interpreter. There are various tools included with both MS-DOS and FreeDOS that are needed to do day-to-day work with the OS. FreeDOS is a complete replacement for MS-DOS, and GNU is a complete replacement for UNIX, with Linux added to provide low-level management of the computer’s resources.
On the net, you can find various unauthorized versions of Microsoft Windows with extra programs either added in or taken out. They also have names, just like Ubuntu does, like “Windows XP Black” or “Tiny XP”.
You have to be very careful where you draw the line between what a complete operating system is, and what are added third-party applications.
People need to know and value why GNU/Linux exists. It’s here to be useful, and it’s here to restore freedom to people who are enslaved by the evils of proprietary software.
The GNU project (and Stallman’s beard) reeks of stagnation (and old bits of food) .. and I find the project’s collective ego to be downright annoying. Their rant about the naming dispute just makes them seem pretentious – the average person is bored by those kind of semantics.
I prefer to reward the household name to whatever seems appropriate at the time. Rather, it seems important to ask, “What have you done for me lately?”
(ie.. Ubuntu.. which is basically what I refer to, when I am talking about the operating system of choice..) If I were still using Fedora, I’d probably just go back to calling it Linux.
It’s about marketing .. GNU is about .. well I don’t know, but it’s not about that.
Leave a comment or question