For the gnu, a large hooved mammal, see wildebeest.
The GNU logo
The GNU project was launched by Richard Stallman with the goal of creating a complete free operating system: the GNU system. The project was announced to the public on September 27, 1983, on the net.unix-wizards newsgroup. The original announcement was followed by Stallman's "GNU Manifesto" and other essays that laid out his motivations for the GNU project, one of which was to "bring back the cooperative spirit that prevailed in the computing community in earlier days".
GNU is a recursive acronym for "GNU's Not Unix". Stallman requests that it be pronounced guh-NOO to "avoid horrible confusion" with the word "new". UNIX is a proprietary operating system that was already in widespread use; since its architecture had proven technically sound, the GNU system was designed to be compatible with it. The UNIX architecture allowed GNU to be written as individual software components: components that were already freely available, such as the TeX typesetting system and the X Window graphics system, could be adapted and reused; others would be written from scratch.
To ensure that GNU software would remain free for all users "to run, copy, modify and distribute", the project would release it under a license designed to give everyone those permissions while preventing them from adding restrictions of their own. This idea, referred to as copyleft, was then embodied in the GNU General Public License (GPL).
In 1985, Stallman founded the Free Software Foundation (FSF), a tax-exempt charity, to provide logistical, legal and financial support for the GNU project. The FSF also employed programmers to contribute to GNU, though a substantial portion of development was (and continues to be) performed by volunteers. 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.
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. 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 MIT, whose authors had decided to distribute for free, and was compatible with UNIX version 7. 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. By 1988, the Mach message-passing kernel being developed at CMU was being considered instead, although it was intially delayed while its developers removed code owned by AT&T. Initially, the kernel was to be called Alix, but developer Michael Bushnell later preferred the name Hurd, so the Alix name was moved to a subsystem and eventually dropped completely. Eventually, development of the Hurd had stalled due to technical and personality conflicts.
In 1991, Linus Torvalds wrote the UNIX-compatible Linux kernel and released it under the GPL. Linux was further developed by various programmers over the Internet. In 1992, Linux was combined with the GNU system, resulting in a fully functional free operating system. The GNU system is most commonly encountered in this form, usually referred to as a "GNU/Linux system" or a "Linux distribution". (As of 2003, the Hurd is still in active development, and an experimental version of the GNU system that uses the Hurd instead of Linux is now available.)
It is also common to find components of GNU installed on proprietary UNIX systems, in place of the original UNIX programs. This is because many of the programs written for the GNU project have proven to be of a superior quality to the equivalent UNIX versions. Often, these components are collectively referred to as the "GNU Tools". Many GNU programs have also been ported to Microsoft Windows and Mac OS X platforms.
Some of the software developed by the GNU project are:
- Bison - parser generator intended to replace yacc
- Bash - command shell
- BFD - object file library
- Binutils - GNU Assembler, GNU Linker, and related tools
- Classpath - libraries for Java
- DotGNU - replacement for .NET
- Emacs - extensible, self-documenting text editor
- GCC - optimizing compiler for many languages, particularly C
- GDB - debugger
- GIMP - image-editing program
- glibc - C library
- GMP - arbitrary precision numerical calculation programming library
- GNOME - graphical desktop environment
- GNU build system
- GNUnet - decentralized, peer-to-peer communication network designed to be resistant to censorship
- GNUstep - implementation of the OpenStep standard for a set of libraries and development tools for graphical applications
- GSL - the GNU Scientific Library
- Gzip - a library and program for data compression
- Hurd - a microkernel and set of servers that perform the same function as a UNIX kernel
- Maxima - a computer algebra system
- Octave - a program for numerical computations similar to MATLAB
- GNU MDK - a development kit for programming in MIX
- Texinfo - documentation system