Chapter 2. Background
2.1.2. Free Software Foundation
In 1984 Richard Stallman’s Free Software Foundation (FSF) began the GNU project, a project to create a
free version of the Unix operating system. By free, Stallman meant software that could be freely used,
read, modified, and redistributed. The FSF successfully built a vast number of useful components,
including a C compiler (gcc), an impressive text editor (emacs), and a host of fundamental tools.
However, in the 1990’s the FSF was having trouble developing the operating system kernel [FSF 1998];
without a kernel their dream of a completely free operating system would not be realized.
2.1.3. Linux
In 1991 Linus Torvalds began developing an operating system kernel, which he named “Linux”
[Torvalds 1999]. This kernel could be combined with the FSF material and other components (in
particular some of the BSD components and MIT’s X-windows software) to produce a freely-modifiable
and very useful operating system. This book will term the kernel itself the “Linux kernel” and an entire
combination as “Linux”. Note that many use the term “GNU/Linux” instead for this combination.
In the Linux community, different organizations have combined the available components differently.
Each combination is called a “distribution”, and the organizations that develop distributions are called
“distributors”. Common distributions include Red Hat, Mandrake, SuSE, Caldera, Corel, and Debian.
There are differences between the various distributions, but all distributions are based on the same
foundation: the Linux kernel and the GNU glibc libraries. Since both are covered by “copyleft” style
licenses, changes to these foundations generally must be made available to all, a unifying force between
the Linux distributions at their foundation that does not exist between the BSD and AT&T-derived Unix
systems. This book is not specific to any Linux distribution; when it discusses Linux it presumes Linux
kernel version 2.2 or greater and the C library glibc 2.1 or greater, valid assumptions for essentially all
current major Linux distributions.
2.1.4. Open Source / Free Software
Increased interest in software that is freely shared has made it increasingly necessary to define and
explain it. A widely used term is “open source software”, which is further defined in [OSI 1999]. Eric
Raymond [1997, 1998] wrote several seminal articles examining its various development processes.
Another widely-used term is “free software”, where the “free” is short for “freedom”: the usual
explanation is “free speech, not free beer.” Neither phrase is perfect. The term “free software” is often
confused with programs whose executables are given away at no charge, but whose source code cannot
be viewed, modified, or redistributed. Conversely, the term “open source” is sometime (ab)used to mean
software whose source code is visible, but for which there are limitations on use, modification, or
redistribution. This book uses the term “open source” for its usual meaning, that is, software which has
its source code freely available for use, viewing, modification, and redistribution; a more detailed
definition is contained in the Open Source Definition. In some cases, a difference in motive is suggested;
those preferring the term “free software” wish to strongly emphasize the need for freedom, while those
using the term may have other motives (e.g., higher reliability) or simply wish to appear less strident. For
information on this definition of free software, and the motivations behind it, can be found at
http://www.fsf.org.
Those interested in reading advocacy pieces for open source software and free software should see
http://www.opensource.org and http://www.fsf.org. There are other documents which examine such
6