GNU/Linux is a term promoted by the Free Software Foundation (FSF), its founder Richard Stallman, and its supporters, for operating systems that include GNU software and the Linux kernel. The FSF argues for the term GNU/Linux because GNU was a longstanding project to develop a free operating system, of which they say the kernel was the last missing piece. Proponents of the Linux term dispute GNU/Linux for a number of reasons, such as the fact that the term Linux is far more commonly used by the public and media.
Plans for the GNU operating system were made in 1983 by Richard Stallman, founder of the Free Software Foundation. In September of that year, Stallman published a manifesto in Dr. Dobb's Journal detailing his new project publicly, and outlining his vision of free software. Software development work began in January 1984. GNU was to be a complete Unix-like operating system composed entirely of free software. By 1991, the GNU mid-level portions of the operating system were almost complete, and the upper level could be supplied by the X Window System, but the lower level (kernel, device drivers, system-level utilities and daemons) was still mostly lacking. The GNU kernel, GNU Hurd, was still in its infancy. The Hurd followed an ambitious design which proved unexpectedly difficult to implement and has only been marginally usable.
In 1991, the first version of the Linux kernel was released by Linus Torvalds. Early Linux kernel developers ported GNU code, including the GNU C Compiler, to run on Linux. Later, when the GNU developers learned of Linux, they adapted other parts of GNU to run on the Linux kernel. This work filled the remaining gaps in running a completely free operating system.
Over the next few years, there were a number of suggestions for how to name operating systems using the Linux kernel and GNU components. In 1992, the Yggdrasil Linux distribution adopted the name "Linux/GNU/X". In Usenet and mailing-list discussions, one can find usages of "GNU/Linux" as early as 1992 and of "GNU+Linux" as early as 1993. The Debian project switched to calling itself "GNU/Linux" in early 1994; Debian founder Ian Murdock later noted that this change was made in response to a request by Richard Stallman (who initially proposed "Lignux," but suggested "GNU/Linux" instead after hearing complaints about the awkwardness of the former term). GNU's June 1994 Bulletin describes "Linux" as a "free Unix system for 386 machines" (with "many of the utilities and libraries" from GNU), but the January 1995 Bulletin switched to the term "GNU/Linux" instead. Stallman's and the FSF's efforts to include "GNU" in the name started around 1994, but were reportedly mostly via private communications (such as the abovementioned request to Debian) until 1996. In May 1996, Stallman released Emacs 19.31 with the Autoconf system target "linux" changed to "lignux" (shortly thereafter changed to "linux-gnu" in emacs 19.32), and included an essay "Linux and the GNU system" suggesting that people use the terms "Linux-based GNU system" (or "GNU/Linux system" or "Lignux" for short). He later used "GNU/Linux" exclusively, and the essay was superseded by Stallman's 1997 essay, "Linux and the GNU project".
Modern free and open source software systems are composed of software by many different authors, including the Linux kernel developers, the GNU project, and other vendors such as those behind the X Window System. Desktop- and server-based distributions use GNU components such as the GNU C Library (glibc), GNU Core Utilities (Coreutils), and bash.
In an analysis of the source code for packages comprising Red Hat Linux 7.1, a typical Linux distribution, the total size of the packages from the GNU project was found to be much larger than the Linux kernel. Determining exactly what constitutes the "operating system" per se is a matter of continuing debate.
On the other hand, some embedded systems, such as handheld devices, residential gateways (routers), and Voice over IP devices, are engineered with space efficiency in mind and use a Linux kernel with few or no components of GNU. A system running μClinux is likely to substitute uClibc for glibc and BusyBox for Coreutils. Everyone, including the FSF, agrees that "GNU/Linux" is not an appropriate name for these systems.
The FSF justifies the name "GNU/Linux" primarily on the grounds that the GNU project was specifically developing a complete system, of which they argue the kernel Linux filled one of the final gaps; the large number of GNU components and GNU source code used in such systems is a secondary argument:
So if you were going to pick a name for the system based on who wrote the programs in the system, the most appropriate single choice would be GNU. But we don't think that is the right way to consider the question. The GNU Project was not, is not, a project to develop specific software packages. [...] Many people have made major contributions to the free software in the system, and they all deserve credit. But the reason it is an integrated system — and not just a collection of useful programs — is because the GNU Project set out to make it one. We made a list of the programs needed to make a complete free system, and we systematically wrote, or found people to write, everything on the list.
In addition, the FSF also argues that "GNU/Linux recognizes the role that our idealism played in building our community, and helps the public recognize the practical importance of these ideals", in contrast to the focus on "technical advantage" rather than "freedom" of the Linux kernel developers. In the case of the Linux kernel, notable and recurring examples of this focus on technical advantage over freedom come from the long-time inclusion in the Linux kernel of many non-free firmware files and other files with non-free license terms.
The ordinary understanding of "operating system" includes both the kernel — the specific subsystem that directly interfaces with the hardware — and the "userland" software that is employed by the user and by application software to control the computer. Moreover, both the name "GNU" and the name "Linux" are intentionally related to the name "Unix", and Unix has always conceptually included the C library and userland tools as well as the kernel. In the 1991 release notes for versions 0.01 to 0.11 of the Linux kernel (which was not released under the GNU General Public License until version 0.12), Torvalds wrote, "Sadly, a kernel by itself gets you nowhere [...] Most of the tools used with linux are GNU software." Torvalds also wrote during the 1992 Tanenbaum-Torvalds debate that, "As has been noted (not only by me), the linux kernel is a miniscule part of a complete system".
The use of the word "Linux" to refer to the kernel, the operating system, and entire distributions, often leads to confusion about the distinctions among the three. Many GNU packages are a key part of almost every Linux distribution. Media sources frequently make erroneous statements such as claiming that the entire Linux operating system (rather than simply the kernel) was written from scratch by Torvalds in 1991; that Torvalds directs the development of other components such as graphical interfaces or the GNU tools; or that new releases of the kernel involve a similar degree of user-visible change as do new versions of proprietary operating systems such as Microsoft Windows, where many things besides the kernel change simultaneously.
Because of this confusion, legal threats and public relations campaigns apparently directed against the kernel, such as those launched by the SCO Group or the Alexis de Tocqueville Institution (AdTI), have been misinterpreted by many commentators who assume that the whole operating system is being targeted. These organisations have even been accused of deliberately exploiting this confusion.
In response to suggestions that Stallman's renaming efforts stem from egotism or personal pique, Stallman has responded that his interest is not in giving credit to himself, but to the GNU Project: Some people think that it's because I want my ego to be fed. Of course, I'm not asking you to call it "Stallmanix". Stallman has admitted to irritation, although he believes it to be justified in response to seeing "an idealistic project stymied and made ineffective, because people don't usually give it the credit for what it has done," concluding "If you're an idealist like me, that can ruin your whole decade."
In response to another common argument (see below), the FSF acknowledges that many people have contributed to the system and that a short name cannot credit all of them, but argues that this cannot justify calling the system "Linux":
Since a long name such as GNU/X11/Apache/Linux/TeX/Perl/Python/FreeCiv becomes absurd, at some point you will have to set a threshold and omit the names of the many other secondary contributions. There is no one obvious right place to set the threshold, so wherever you set it, we won't argue against it ... But one name that cannot result from concerns of fairness and giving credit, not for any possible threshold level, is "Linux". It can't be fair to give all the credit to one secondary contribution (Linux) while omitting the principal contribution (GNU).
"Linux" is by far the more widespread name, while references to "GNU/Linux" appear only infrequently in mainstream sources. "Linux" has more historical momentum because it is the name Torvalds has used for the combined system since 1991, while Stallman only began asking people to call the system "GNU/Linux" in the mid 1990s, some time after the "Linux" name had already become popular. "Linux" also is shorter and easier to say than "GNU/Linux".
Some people object that the name "Linux" should be used to refer only to the kernel, not the entire operating system. This claim is a proxy for an underlying territorial dispute; people who insist on the term GNU/Linux want the FSF to get most of the credit for Linux because [Stallman] and friends wrote many of its user-level tools. Neither this theory nor the term GNU/Linux has gained more than minority acceptance.
Linus Torvalds has said in the documentary Revolution OS, when asked if the name GNU/Linux was justified:
Well, I think it's justified, but it's justified if you actually make a GNU distribution of Linux ... the same way that I think that "Red Hat Linux" is fine, or "SuSE Linux" or "Debian Linux", because if you actually make your own distribution of Linux, you get to name the thing, but calling Linux in general "GNU Linux" I think is just ridiculous.
An earlier comment by Torvalds on the naming controversy was:
Umm, this discussion has gone on quite long enough, thank you very much. It doesn't really matter what people call Linux, as long as credit is given where credit is due (on both sides). Personally, I'll very much continue to call it "Linux".
In a similar vein, the debate over the name for the operating system is sometimes characterized as a trivial distraction; e.g. John C. Dvorak wrote "the Linux community spends too much of its energy on things such as nomenclature (like the name GNU/Linux versus Linux)."
The Linux Journal speculated that Stallman's advocacy of the combined name stems from frustration that "Linus got the glory for what [Stallman] wanted to do."
Others have suggested that, regardless of the merits, Stallman's persistence in what sometimes seems a lost cause makes him and GNU look bad. For example, Larry McVoy (author of the proprietary software BitKeeper, once used to manage Linux kernel development, until the gratis license was revoked in the reverse-engineering controversy) opined that "claiming credit only makes one look foolish and greedy".
Many users and vendors who prefer the name "Linux" point to the inclusion of non-GNU, non-kernel tools such as the Apache HTTP Server, the X Window System or the KDE workspace in end-user operating systems based on the Linux kernel. As stated by Jim Gettys, originator of X:
There are lots of people on this bus; I don't hear a clamor of support that GNU is more essential than many of the other components; can't take a wheel away, and end up with a functional vehicle, or an engine, or the seats. I recommend you be happy we have a bus.
Although "GNU/Linux" (pronounced /ɡəˈnuː slæʃ ˈlɪnəks/) is often pronounced without the slash, Stallman recommends explicit pronunciation in order to avoid the mistaken suggestion that the Linux kernel itself is a GNU package.