LINFO

GNU Definition


GNU (pronounced g'noo) is a recursive acronym for "GNU's Not Unix." It is an on-going project by the Free Software Foundation (FSF) whose purpose is to create a complete, POSIX-compliant and freely distributable computing environment.

POSIX (Portable Operating System Interface) is a set of standards that ensures the ability of applications to run on all conforming Unix variants. These standards were developed under the auspices of the IEEE (Institute of Electrical and Electronics Engineers). POSIX compliance is a requirement for purchases by the U.S. government and many corporations.

Origins of The GNU Project

The GNU project was begun by Richard Stallman in the latter part of 1983 at the Massachusetts Institute of Technology (MIT) when he was attempting to obtain funding for his freely distributable editor, Emacs. At that time, the various versions of Unix were encumbered with licenses that were restrictive and included fees.

Stallman announced his project to the public in newsgroups in September, 1983. Full-scale work began on January 5, 1984, when he resigned from his position at MIT in order to devote his full attention to the project.

Stallman wrote the first extensible Emacs text editor while at MIT in 1975. He is also the principal author of the GCC (GNU C compiler collection), a portable optimizing compiler designed to support diverse architectures and multiple languages. These two GNU tools have become very popular and are widely used. Stallman was awarded the prestigious MacArthur Fellowship ("genius grant") in 1990 for his work in developing and promoting free software.

In 1985, Stallman founded the FSF to provide logistical, legal and financial support for the GNU project. This non-profit organization also employed programmers to supplement the development done by volunteers. As the project gained prominence, businesses began making financial contributions as well as selling its software and technical support for it. Among these was Cygnus Solutions, which is now part of Red Hat.

Stallman's now classic GNU Manifesto was published in the March, 1985 issue of the highly respected Dr. Dobb's Journal. It explained his motivations and goals for the GNU project, one of which was to restore the cooperative spirit that formerly prevailed in the computing community. This essay is regarded by many advocates of free software as a fundamental philosophical resource.

The basic philosophy of the GNU project is to produce software that is non-proprietary. GNU software allows anybody to download, modify and redistribute it, with the sole restriction that they may not limit further redistribution of it.

Linux relies heavily on GNU software, and GNU systems previously used the Linux kernel. This close connection has led some people to mistakenly equate GNU with Linux. However, they are actually quite separate. In fact, the FSF has been developing a new kernel called Hurd to replace the Linux kernel in GNU systems. The Hurd currently runs on the x86 platform, and it is expected that it will eventually be ported to additional platforms.

Although it is not the most advanced kernel, the Hurd does have several very attractive features, including that it is: free, compatible (has familiar programming and user environments), aggressively multithreaded (allowing it to run efficiently on both single processors and symmetric multiprocessors), extensible and scalable.

The GPL

Another major achievement of the GNU project was the GPL (GNU General Public License), which was developed in 1989 by Stallman and Eben Moglen, a professor of law at Columbia University and general counsel for the FSF. The GPL is by far the most widely used license for free software in the world, and most GNU software packages, the Linux kernel and much of the other software generally included in Linux distributions have been released under it.

A few GNU programs (and parts of programs) employ looser licenses, such as the GNU Lesser General Public License (LGPL), for strategic reasons. The LGPL was developed as a compromise between the GPL and the much more permissive BSD and MIT licenses. The main differences from the GPL are that it can be linked to software not licensed under the GPL or LGPL and that it is only useful for software libraries.

The goal of the GPL was to develop a single license that could be used for all free software in place of the individual licenses that were being written for individual programs. Its purpose is to protect the rights of people to access, improve and redistribute software. This is in sharp contrast to conventional licenses, which are designed to restrict people's rights to use the software and generally prevent them from modifying or redistributing it.

Specifically, the GPL is designed to ensure that anyone (1) may distribute copies of free software (and charge for this service if they so desire), (2) can easily obtain the source code, (3) may modify or extend the software as well as use pieces of it in new free programs (which must likewise be covered by the GPL) and (4) is assured that they have these rights. The GPL also forbids anyone to (1) deny these rights to others or (2) ask others to surrender such rights for software licensed by the GPL.

In 1992 Linus Torvalds changed the license for the Linux kernel to the GPL, and Linux was combined with the GNU system, resulting in a fully functional free operating system. Although the Linux kernel is now licensed under the GPL, it is not part of the GNU project.

From the mid-1990s, Stallman began requesting that the combined system (regardless of distribution) be referred to as "GNU/Linux" rather than just "Linux" because of the large amount of GNU developed software in it. Although this terminology is sometimes used, such as by the Debian project, it has not really caught on in the computer community or amongst the general public.

GNU Programs

GNU programs are also widely used on proprietary flavors of Unix in place of the original Unix programs. This is because many of them have proven to be superior in quality. These components are frequently referred to collectively as the "GNU Tools." In fact, many of them have also been ported to the Mac OS X and Microsoft Windows operating systems.

As of early 2004 there were more than 250 GNU projects in various stages of development. Some of the best known are:

  • Bison - a general-purpose parser generator that is intended to replace yacc
  • Bash - the default command shell on most GNU/Linux systems as well as on Mac OS X Panther
  • Binutils - the GNU Assembler, GNU Linker and related tools
  • Classpath - an ambitious GNU Project to create a free version of the core Java libraries
  • DotGNU - a replacement for Microsoft's .NET
  • Emacs - an extensible, self-documenting text editor
  • GCC - an optimizing compiler for numerous languages, including Ada, C, C++, Fortran and Java
  • GIMP - an image editing program comparable to PhotoShop
  • glibc - the Standard POSIX C library, plus additional functionality
  • GMP - an arbitrary precision numerical calculation programming library
  • GNOME - one of the two main graphical desktop environments
  • GNU build system - contains Automake, Autoconf and Libtool
  • GNUnet - a decentralized, peer-to-peer communication network designed to be resistant to censorship
  • GNUstep - an implementation of the OpenStep standard for a set of libraries and development tools for graphical applications
  • GSL - the GNU Scientific Library, a comprehensive programming library for scientific computation
  • Gzip - the familiar compression program program that produces files with the .gz extension
  • Hurd - a microkernel-based set of servers that perform the same function as a Unix kernel
  • Texinfo - a documentation system for producing online and printed manuals

The GNU project also assists with the development and distribution of several additional software packages that were originally developed elsewhere. Among them are the widely used CVS (for source code control), DDD (a graphical front end for debuggers) and eCos (a compact, open source, real-time operating system for embedded devices).

A gnu (lower case) is either of two species of large South African antelopes that have an ox-like head with horns that curve forward on both sexes as well as a horse-like mane and a bushy tail. It is also the mascot for the GNU project.












Created April 2, 2004. Copyright © 2004. All Rights Reserved.