'GNU' (
pronounced ) is a computer
operating system composed entirely of
free software. Its name is a
recursive acronym for ''GNU's Not Unix'', which was chosen because its design is
Unix-like, but differs from Unix by being free software and by not containing any
Unix code.
[1] GNU was founded by
Richard Stallman and was the original focus of the
Free Software Foundation (FSF).
The project to develop GNU is known as the ''
GNU Project'', and programs released under the auspices of the GNU Project are called ''GNU packages'' or ''GNU programs''. The system's basic components include the
GNU Compiler Collection (GCC), the
GNU Binary Utilities (binutils), the
bash shell, the
GNU C library (glibc), and
GNU Core Utilities (coreutils).
As of 2007, GNU is being actively developed. Although most components have been completed long ago and have been in production use for a decade or more, its official
kernel,
GNU Hurd, is incomplete and not all GNU components work with it. For this reason, most GNU users use the third-party
Linux kernel. While Linux has not been officially adopted as the kernel of GNU, GNU does officially include other third party software such as the
X.Org release of the
X Window System and the
TeX typesetting system. Many GNU programs have also been ported to numerous other operating systems such as
Microsoft Windows,
BSD variants,
Solaris and
Mac OS.
The
GNU General Public License (GPL), the
GNU Lesser General Public License (LGPL), and the
GNU Free Documentation License (GFDL) were written for GNU, but are also used by many unrelated projects.
History
The plan for the GNU operating system was publicly announced on
September 27 1983, on the net.unix-wizards and net.usoft
newsgroups by
Richard Stallman.
[1] Software development began on
January 5,
1984, when Stallman quit his job at
Massachusetts Institute of Technology so that they could not claim ownership or interfere with distributing GNU as free software. According to Stallman, the name was inspired by various plays on words, including the song ''
The Gnu''.
[3]
The goal was to bring a wholly free software operating system into existence. Stallman wanted computer users to be free, as most were in the 1960s and 1970s: free to study the source code of the software they use, free to share the software with other people, free to modify the behaviour of the software, and free to publish their modified versions of the software. This philosophy was published in March 1985 as the
GNU Manifesto.
Much of the needed software had to be written from scratch, but existing compatible free software components were used. Two examples were the
TeX typesetting system, and the
X Window System. Most of GNU has been written by volunteers; some in their spare time, some paid by companies, educational institutions, and other non-profit organizations. In October 1985, Stallman set up the
Free Software Foundation (FSF). In the late 1980s and 1990s, the FSF hired software developers to write the software needed for GNU.
Richard Stallman's experience with the
Incompatible Timesharing System (ITS), an early operating system written in
assembly language that became obsolete due to discontinuation of
PDP-10, the computer architecture that ITS was written for, led to a decision that a
portable system was necessary.
[4] It was thus decided that GNU would be mostly compatible with
Unix. At the time, Unix was (and is) a popular
proprietary operating system. The design of Unix had proven to be solid, and it was modular, so it could be reimplemented piece by piece.
As GNU gained prominence, interested businesses began contributing to development or selling GNU software and technical support. The most prominent and successful of these was
Cygnus Solutions, now part of
Red Hat.
Design and implementation
The initial plan for GNU was to be mostly Unix-compatible, while adding enhancements where they were useful. By 1990, the GNU system had an extensible
text editor (
Emacs), a very successful optimizing
compiler (
GCC), and most of the core libraries and utilities of a standard Unix distribution. As the goal was to make a whole free operating system exist - rather than necessarily to write a whole free operating system - Stallman tried to use existing free software when possible. In the 1980s there was not much free software, but there was the
X Window System for graphical display, the
TeX typesetting system, and the
Mach micro kernel. These components were integrated into GNU.
The main component still missing was the kernel. In the GNU Manifesto, Stallman had mentioned that "an initial kernel exists but many more features are needed to emulate Unix." He was referring to TRIX, a remote procedure call kernel developed at Massachusetts Institute of Technology, whose authors had decided to distribute it as free software, and was compatible with
Version 7 Unix. In December 1986, work had started on modifying this kernel. However, the developers eventually decided it was unusable as a starting point, primarily because it only ran on "an obscure, expensive 68000 box" and would therefore have to be
ported to other architectures before it could be used.
The GNU Project's early plan was to adapt the BSD 4.4-Lite kernel for GNU. Thomas Bushnell, the initial Hurd architect said in hindsight that "It is now perfectly obvious to me that this would have succeeded splendidly and the world would be a very different place today".
[5] However, due to a lack of cooperation from the
Berkeley programmers,
Richard Stallman by 1988, the
Mach message-passing kernel being developed at
Carnegie Mellon University was being considered instead, although its release as free software was delayed until 1990 while its developers worked to remove code copyrighted to
AT&T.
The design of the kernel was to be GNU's largest departure from "traditional" Unix. GNU's kernel was to be a multi-server
microkernel, and was to consist of a set of programs called servers that offers the same functionality as the traditional Unix kernel. Since the Mach microkernel, by design, provided just the low-level kernel functionality, the GNU Project had to develop the higher-level parts of the kernel, as a collection of user programs. Initially, this collection was to be called Alix, but developer
Thomas Bushnell later preferred the name Hurd, so the Alix name was moved to a subsystem and eventually dropped completely.
[6] Eventually, development progress of the Hurd became very slow due to ongoing technical issues.
[7]
Despite an optimistic announcement by Stallman in
2002[8] predicting a release of GNU/Hurd, further development and design are still required. The latest release of the Hurd is version 0.2. It is fairly stable, suitable for use in non-critical applications.
As of 2005, Hurd is in slow development, and is now the official kernel of the GNU system. There is also a project working on porting the GNU system to the kernels of
FreeBSD,
NetBSD, and
OpenSolaris.
After the
Linux kernel became usable,
Linux became the most common host for GNU software. The GNU project coined the term ''GNU/Linux'' for such systems.
Copyright, licenses, and stewardship
The GNU Project requires that contributors assign the copyright for GNU packages to the Free Software Foundation,
[9] although exceptions have been made in the case of
MULE,
[10] and large parts of
GNOME. Most GNU packages are licensed under the GPL, while a few use the LGPL, and an even smaller number use other
free software licenses.
Owning the copyright for the software allows FSF to enforce the licenses and to make changes in the licenses.
[11]
Ordinarily, copyright law prohibits people from copying and distributing a work, but FSF wrote a license for the GNU software which grant recipients permission to copy and redistribute the software. For most of the 80s, each GNU package had its own license - the Emacs General Public License, the GCC General Public License, etc. In 1989, FSF published a single license they could use for all their software, and which could be used by non-GNU projects: the
GNU General Public License (GPL).
This license is now used by most GNU programs, as well as a large number of free software programs that are not part of the GNU project; it is the most commonly used
free software license. It gives all recipients of a program the right to run, copy, modify and distribute it, while forbidding them from imposing further restrictions on any copies they distribute. This idea is often referred to as
copyleft.
In 1991, the
GNU Lesser General Public License (LGPL) was written for certain libraries. 1991 also saw the release of version 2 of the GNU GPL. The
GNU Free Documentation License (FDL), for documentation, followed in 2000.
Most GNU software is distributed under the GPL. A minority is distributed under the LGPL, and a handful of packages are distributed under
permissive free software licences.
[12]
GNU software
Main articles: List of GNU packages
Prominent components of the GNU system include the
GNU Compiler Collection (GCC), the
GNU C Library (glibc), the
GNU Emacs text editor, and the
GNOME desktop environment.
Many GNU programs have been ported to a multitude of other operating systems, including various
proprietary platforms such as
Microsoft Windows and
Mac OS X. They are often installed on proprietary
UNIX systems as a replacement for proprietary utilities, however, this is often a hot topic among enthusiasts, as the motive for developing these programs was to replace those systems with free software, not to enhance them. These GNU programs have in contested cases been tested to show as being more reliable than their proprietary Unix counterparts.
[13]
A list of packages that are well known in the
free software community includes:
★
System software
★
★
Bison –
parser generator intended to replace
yacc
★
★
Bash –
Unix shell
★
★
BFD – object file
library
★
★
Classpath – libraries for
Java
★
★
Coreutils – basic Unix utilities such as
cat,
ls, and
rm
★
★
Emacs – extensible, self-documenting
text editor
★
★
GNU C Library –
Standard POSIX C library, plus additional functionality
★
★
gzip – a library and program for
data compression
★
★ The
GNU toolchain for software development:
★
★
★
GNU Binary Utilities –
assembler,
linker, and related tools
★
★
★
GNU build system –
Autoconf,
Automake,
Libtool
★
★
★
GCC – optimizing
compiler for many
programming languages, including
C,
C++,
Fortran,
Ada, and
Java
★
★
★
GDB –
debugger
★
★
Screen – a terminal multiplexer
★
★
Texinfo – documentation system for producing online and printed manuals
★
★
Wget – advanced file retrieval from networks and the Internet
★
★
GNUnet – decentralized, peer-to-peer communication network designed to be resistant to censorship
★
★
GNU Hurd – a
microkernel-based set of servers that perform the same function as a Unix kernel
★
Application software
★
★
GIMP – GNU Image Manipulation Program
★
★
Gnash – player for movies in
Adobe Flash format.
★
★
GMP –
arbitrary precision numerical calculation programming
library
★
★
GNOME – graphical desktop environment
★
★
GNU LilyPond – sheet music engraving program
★
★
GNU Octave – program for numerical computations similar to
MATLAB
★
★
GNU Privacy Guard (GnuPG) – free encryption tool which can replace
PGP
★
★
GNU Robots – small but addictive game for computer programmers
★
★
GNU Scientific Library – is a
software library for numerical calculations in
applied mathematics and
science
★
★
GNUstep – implementation of the
OpenStep standard for a set of libraries and development tools for graphical applications
★
★
GNU Guile – embeddable
Scheme interpreter
As of
2007-02-17, there are a total of 319 GNU packages hosted on the official GNU development site.
[14]
Distributions of GNU
GNU (using Hurd) can be tried using a
live CD.
★
Bee GNU/Hurd
★
Debian GNU/Hurd
★ Superunprivileged.org's Hurd
LiveCD [3]
GNU variants not using the Hurd
Main articles: GNU variants
★
Linux — by far the most popular variant of GNU
★
Debian GNU/kFreeBSD
★
Debian GNU/NetBSD
★
Nexenta OS — GNU plus the kernel of
OpenSolaris
GNU Logo
The logo for GNU is a
gnu head. The well-known drawing was originally done by
Etienne Suvasa. It appears in GNU software and in printed and electronic documentation for the GNU project, and is also used in Free Software Foundation materials.
[4]
References
1.
2.
3. Stallman explaining why the name "GNU" was chosen
4. Stallman describing why a Unix-like design was chosen
5. The Hurd and BSDI Peter H. Salus
6. http://www.gnu.org/gnu/thegnuproject.html
7. Stallman describing Hurd progress
8. Free Software Sees Gnu Loose of Linux John Ribeiro
9. [1]
10. [2]
11. http://www.gnu.org/licenses/why-assign.html
12. http://slashdot.org/comments.pl?sid=225606&cid=18272276
13. http://ftp.cs.wisc.edu/pub/paradyn/technical_papers/fuzz-revisited.ps
14. http://savannah.gnu.org/stats/
See also
★
Open Source history
★
Free software movement
★
GNU Free Documentation License
★
GNU Project
★
List of GNU packages
★
Linus Torvalds
External links
★
Official website
★
Ports of GNU utilities for Microsoft Windows
★
The deamon, the GNU and the penguin
★
GNUCHILE Foundation