Linux and GNU - GNU Project (2024)

Linux and the GNU System

by Richard Stallman

Many computer users run a modified version ofthe GNU systemevery 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 usersare not awarethat it is basically the GNU system, developed by theGNU Project.

For more information see alsothe GNU/Linux FAQ,and Why GNU/Linux?

There really is a Linux, and these people are using it, but it is justa part of the system they use. Linux is the kernel: the program inthe system that allocates the machine's resources to the otherprograms that you run. The kernel is an essential part of anoperating system, but useless by itself; it can only function in thecontext of a complete operating system. Linux is normally used incombination with the GNU operating system: the whole system isbasically GNU with Linux added, or GNU/Linux. All the so-called“Linux” distributions are really distributions ofGNU/Linux.

Many users do not understand the difference between the kernel, whichis Linux, and the whole system, which they also call“Linux.” The ambiguous use of the name doesn't helppeople understand. These users often think that Linus Torvaldsdeveloped the whole operating system in 1991, with a bit of help.

Programmers generally know that Linux is a kernel. But since theyhave generally heard the whole system called “Linux” as well, theyoften envisage a history that would justify naming the whole systemafter the kernel. For example, many believe that once Linus Torvaldsfinished writing Linux, the kernel, its users looked around for otherfree software to go with it, and found that (for no particular reason)most everything necessary to make a Unix-like system was alreadyavailable.

What they found was no accident—it was the not-quite-complete GNUsystem. The available freesoftware added up to a complete system because the GNU Projecthad been working since 1984 to make one. Inthe GNU Manifesto we set forththe goal of developing a free Unix-likesystem, called GNU. The Initial Announcement of the GNU Project also outlines some of theoriginal plans for the GNU system. By the time Linux was started, GNUwas almost finished.

Most free software projects have the goal of developing a particularprogram for a particular job. For example, Linus Torvalds set out towrite a Unix-like kernel (Linux); Donald Knuth set out to write a textformatter (TeX); Bob Scheifler set out to develop a window system (theX Window System). It's natural to measure the contribution of thiskind of project by specific programs that came from the project.

If we tried to measure the GNU Project's contribution in this way,what would we conclude? One CD-ROM vendor found that in their “Linuxdistribution,” GNUsoftware was the largest single contingent, around 28% of thetotal source code, and this included some of the essential majorcomponents without which there could be no system. Linux itself wasabout 3%. (The proportions in 2008 are similar: in the “main”repository of gNewSense, Linux is 1.5% and GNU packages are 15%.)So if you were going to pick a name for the system based onwho wrote the programs in the system, the most appropriate singlechoice would be “GNU.”

But that is not the deepest way to consider the question. The GNUProject was not, is not, a project to develop specific softwarepackages. It was not a project todevelop a C compiler, although we did that. It was not a projectto develop a text editor, although we developed one. The GNU Projectset out to develop a complete free Unix-like system: GNU.

Many people have made major contributions to the free software in thesystem, and they all deserve credit for their software. But thereason it is an integrated system—and not just acollection of useful programs—is because the GNU Project set outto make it one. We made a list of the programs needed to makea complete free system, and we systematically found, wrote,or found people to write everything on the list. We wrote essentialbut unexciting [1] componentsbecause you can't have a systemwithout them. Some of our system components, the programming tools,became popular on their own among programmers, but we wrote manycomponents that are not tools [2]. We evendeveloped a chess game, GNU Chess, because a complete system needsgames too.

By the early 90s we had put together the whole system aside from thekernel. We had also started a kernel, theGNU Hurd, which runs on top ofMach. Developing this kernel has been a lot harder than we expected;theGNU Hurd started working reliably in 2001, but it is a long wayfrom being ready for people to use in general.

Fortunately, we didn't have to wait for the Hurd, because of Linux.Once Torvalds freed Linux in 1992, it fit into the last major gap inthe GNU system. People couldthen combine Linux with the GNU system to make a complete free system—aversion of the GNU system which also contained Linux. TheGNU/Linux system, in other words.

Making them work well together was not a trivial job. Some GNUcomponents [3] needed substantial changeto work with Linux. Integrating a complete system as a distributionthat would work “out of the box” was a big job, too. Itrequired addressing the issue of how to install and boot thesystem—a problem we had not tackled, because we hadn't yetreached that point. Thus, the people who developed the various systemdistributions did a lot of essential work. But it was work that, inthe nature of things, was surely going to be done by someone.

The GNU Project supports GNU/Linux systems as well as the GNUsystem. The FSF funded the rewriting ofthe Linux-related extensions to the GNU C library, so that now theyare well integrated, and the newest GNU/Linux systems use the currentlibrary release with no changes. The FSF also funded an early stageof the development of Debian GNU/Linux.

Today there are many different variants of the GNU/Linux system (oftencalled “distros”). Most of them include nonfreeprograms—their developers followthe “opensource” philosophy associated with Linux rather than the“freesoftware” philosophy of GNU. But there are alsocompletely free GNU/Linux distros.The FSF supports computer facilities for a few of them.

Making a free GNU/Linux distribution is not just a matter ofeliminating various nonfree programs. Nowadays, the usual version ofLinux contains nonfree programs too. These programs are intended tobe loaded into I/O devices when the system starts, and they areincluded, as long series of numbers, in the “source code” of Linux.Thus, maintaining free GNU/Linux distributions now entails maintaininga free version ofLinux too.

Whether you use GNU/Linux or not, please don't confuse the publicby using the name “Linux” ambiguously. Linux is thekernel, one of the essential major components of the system. Thesystem as a whole is basically the GNU system, with Linux added. Whenyou're talking about this combination, please call it“GNU/Linux.”

If you want to make a link on “GNU/Linux” for furtherreference, this page and https://www.gnu.org/gnu/thegnuproject.html are good choices. Ifyou mention Linux, the kernel, and want to add a link for furtherreference, https://foldoc.org/linux is a good URL to use.

Postscripts

Aside from GNU, one other project has independently produceda free Unix-like operating system. This system is known as BSD, andit was developed at UC Berkeley. It was nonfree in the 80s, butbecame free in the early 90s. A free operating system that existstoday [4] is almost certainly either avariant of the GNU system, or a kind of BSD system.

People sometimes ask whether BSD too is a version of GNU, likeGNU/Linux. The BSD developers were inspired to make their code freesoftware by the example of the GNU Project, and explicit appeals fromGNU activists helped persuade them, but the code had little overlapwith GNU. BSD systems today use some GNU programs, just as the GNUsystem and its variants use some BSD programs; however, taken aswholes, they are two different systems that evolved separately. TheBSD developers did not write a kernel and add it to the GNU system,and a name like GNU/BSD would not fit the situation [5].

Footnotes

  1. These unexciting but essential componentsinclude the GNU assembler (GAS) and the linker (GLD), bothare now part of the GNU Binutilspackage, GNU tar, and many more.
  2. For instance, The Bourne Again SHell (BASH),the PostScript interpreterGhostscript, and theGNU C library are notprogramming tools. Neither are GNUCash, GNOME, and GNU Chess.
  3. For instance, theGNU C library.
  4. Since that was written, a nearly-all-freeWindows-like system has been developed, but technically it is not atall like GNU or Unix, so it doesn't really affect this issue. Most ofthe kernel of Solaris has been made free, but if you wanted to make afree system out of that, aside from replacing the missing parts of thekernel, you would also need to put it into GNU or BSD.
  5. On the other hand, in the years since this articlewas written, the GNU C Library has been ported to several versions ofthe BSD kernel, which made it straightforward to combine the GNU systemwith that kernel. Just as with GNU/Linux, these are indeed variants ofGNU, and are therefore called, for instance, GNU/kFreeBSD andGNU/kNetBSD depending on the kernel of the system. Ordinary users ontypical desktops can hardly distinguish between GNU/Linux andGNU/*BSD.
Linux and GNU
- GNU Project (2024)
Top Articles
Latest Posts
Article information

Author: Twana Towne Ret

Last Updated:

Views: 5647

Rating: 4.3 / 5 (44 voted)

Reviews: 83% of readers found this page helpful

Author information

Name: Twana Towne Ret

Birthday: 1994-03-19

Address: Apt. 990 97439 Corwin Motorway, Port Eliseoburgh, NM 99144-2618

Phone: +5958753152963

Job: National Specialist

Hobby: Kayaking, Photography, Skydiving, Embroidery, Leather crafting, Orienteering, Cooking

Introduction: My name is Twana Towne Ret, I am a famous, talented, joyous, perfect, powerful, inquisitive, lovely person who loves writing and wants to share my knowledge and understanding with you.