GNU Project

From Pulsed Media Wiki

The GNU Project is a free software mass collaboration project, announced by Richard Stallman on September 27, 1983. Its goal is to create a complete operating system composed entirely of free software. The name "GNU" is a recursive acronym for "GNU's Not Unix!", highlighting its design similarities to Unix but emphasizing that it is free software and contains no Unix code.

The project emphasizes a philosophy that users should have the freedom to use, study, distribute, and modify software. This philosophy was formalized in the GNU General Public License (GPL), one of the most widely used free software licenses.

Overview and Goals

The primary goal of the GNU Project is to develop a free software operating system, which they named GNU. "Free" in "free software" refers to freedom, not price. The project defines four essential freedoms that users of software should have:

  • The freedom to run the program as you wish, for any purpose (Freedom 0).
  • The freedom to study how the program works, and change it so it does your computing as you wish (Freedom 1). Access to the source code is a precondition for this.
  • The freedom to redistribute copies so you can help your neighbor (Freedom 2).
  • The freedom to distribute copies of your modified versions to others (Freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.

The project aimed to build all the necessary components of an operating system from scratch or by using existing free software, including utilities, libraries, a compiler, and a text editor.

History

Richard Stallman, then working at the MIT's Artificial Intelligence Laboratory, announced the start of the GNU Project on September 27, 1983, via posts to Usenet newsgroups. His motivation stemmed from frustration with the increasing prevalence of proprietary software and the restrictions it placed on users, contrasting with the collaborative and open environment he experienced in the earlier days of computing at MIT. The goal was to build a Unix-compatible operating system from scratch that would be entirely free software.

Development began shortly after, focusing on core tools essential for system development. The GNU Emacs text editor was one of the first components to be developed, starting in 1984. The GNU C Compiler (GCC), initially released in 1987, was a major milestone, providing a free compiler capable of compiling the operating system itself and other free software applications. These early successes demonstrated the viability of developing complex, high-quality software as free software.

In 1985, Stallman founded the Free Software Foundation (FSF) as a non-profit organization to provide legal, administrative, and financial support for the GNU Project and to promote the free software philosophy more broadly.

By the early 1990s, the GNU Project had created most of the major components of the GNU operating system—including the shell (Bash), core utilities (coreutils), libraries, and development tools. The main missing piece was the kernel, the central part of the operating system responsible for managing the system's hardware resources. The GNU Project had started developing its own kernel, the GNU Hurd.

The independent development of the Linux kernel by Linus Torvalds in 1991, and its subsequent release under the GNU GPL license in 1992, provided a kernel that could be combined with the nearly complete GNU system. This combination resulted in functional and powerful operating systems, commonly referred to as "Linux" distributions, which are widely used today. This led to the GNU Project's advocacy for the term "GNU/Linux" to emphasize the significant contribution of GNU software to these systems.

How the GNU System Works (with Hurd)

While most users encounter the GNU system running with the Linux kernel (forming GNU/Linux), the GNU Project's original kernel is the GNU Hurd. The intended architecture of a complete GNU system running with the Hurd differs significantly from traditional monolithic kernel systems like Linux.

The Hurd is designed as a collection of servers that run on top of a minimal microkernel, the Mach kernel (specifically, a version called GNU Mach). In a traditional monolithic kernel, many operating system services (like file systems, network protocols, device drivers) run within a single, large block of code in privileged mode. In contrast, the Hurd's design places these services into separate, smaller programs called "servers" that run largely independently of each other, usually in user space.

  • Microkernel (GNU Mach): Provides basic low-level services like inter-process communication (IPC), process scheduling, and virtual memory management. It is kept as small and simple as possible.
  • Servers: These are user-space programs that provide specific OS functionalities. For example, a file system server handles file operations, a network server handles network protocols, a device server manages a specific hardware device.
  • Inter-Process Communication (IPC): Servers communicate with each other and with user programs by sending messages back and forth via the microkernel.

This modular design aims to make the system more robust (a crash in one server doesn't necessarily bring down the whole system) and easier to develop and debug, as individual servers are smaller and less complex than a monolithic kernel. However, the development of the Hurd has been a complex and lengthy process, and it has not achieved the widespread adoption of the Linux kernel. The GNU userland (the collection of utilities, libraries, etc., developed by the GNU project) is designed to be portable and can run on various kernels, including Linux, making the GNU/Linux combination possible.

Components of the GNU System

The GNU Project has developed a vast collection of software that forms a nearly complete operating system. Some key components include:

  • GNU Compiler Collection (GCC): A widely used set of compilers supporting various programming languages.
  • GNU Binutils: A suite of binary utilities, including an assembler and linker.
  • GNU Coreutils: Basic file, shell, and text manipulation utilities (like `ls`, `mv`, `cp`, `cat`).
  • Bash (Bourne Again Shell): A popular command-line interpreter.
  • GNU Debugger (GDB): A powerful debugging tool.
  • GNU Emacs: An extensible, customizable text editor.
  • GNOME: A popular desktop environment.
  • GNU Hurd: The kernel developed by the GNU Project, based on a microkernel architecture.

The GNU/Linux Distinction

By the early 1990s, the GNU Project had completed almost all parts of the GNU operating system except for its kernel, the GNU Hurd. In 1991, Linus Torvalds released the Linux kernel under the GPL. This kernel provided the missing piece needed to assemble a complete, free operating system using the GNU components.

Operating systems that combine the GNU system components with the Linux kernel are what are commonly referred to as "Linux" distributions (e.g., Ubuntu, Fedora, Debian). The GNU Project and the FSF advocate for the term "GNU/Linux" to acknowledge the significant contribution of the GNU software to these operating systems.

Philosophy

The core of the GNU Project's philosophy is the concept of free software and the four freedoms it guarantees to users. This is distinct from "freeware," which means software available at no cost but without the freedoms to modify or redistribute it.

The project promotes the use of copyleft licenses, notably the GNU GPL. Copyleft is a licensing strategy that requires modified versions of the software to also be free software. It uses copyright law to protect the users' freedoms, rather than to restrict sharing and modification.

Free Software Foundation (FSF)

The Free Software Foundation (FSF) is a non-profit organization that serves as the main organizational sponsor for the GNU Project. It provides funding, legal support, and infrastructure for GNU development. The FSF holds the copyright for many GNU software packages and is a leading advocate for free software principles globally.

See also