The Structure and Administration of the GNU Project
Version 1.0.1
by Brandon Invergo and Richard StallmanThe GNU Project develops and maintains the GNU operating system. Through this work, and other related activities, the GNU Project advocates and promotes software freedom, the core philosophy of the free software movement.
An operating system consists of many software components that together make a computer do useful jobs. It includes code for low-level functionality, such as the kernel and drivers, plus system libraries, as well as the programs (utilities, tools, applications, and games) that users explicitly run. The GNU operating system comprises software across this entire spectrum. Many of the programs are specifically developed and released by the GNU Project; these are termed “GNU packages.” The GNU system also includes components that are free programs released by other developers, outside of the GNU Project.
Just as the programs composing an operating system must work together coherently, the GNU Project must operate coherently. Most of the work consists of developing specific programs, but these programs are not independent projects; they must fit well together to constitute the GNU system we wish for. Therefore, over the course of decades, we have developed structure for the project. None of it is new, but this is the first time we have documented all of it in one place.
The Free Software Foundation provides many kinds of support (facilities, services) to the GNU Project. How that works is outside the scope of this document.
Software Development Structure
Most of the GNU Project's activity consists of development of software packages. Here is how GNU software development is structured.
The Chief GNUisance
The GNU Project is led by the Chief GNUisance, Richard Stallman, the founder of the project. The Chief GNUisance is responsible in principle for all significant decisions, including the overall philosophy and standards, and directs the project in carrying them out. The Chief GNUisance dubs software packages as GNU packages, or decommission one when necessary, and appoints their maintainers.
In practice, the Chief GNUisance delegates many of these decisions and most of the tasks to others, and only rarely intervenes in the specifics of development of a GNU package—and usually that is with a suggestion.
Assistant GNUisances
This team, residing at <[email protected]>, is available as a first point-of-contact for maintainers of GNU Software. They keep track of development activity across the entire project, ensuring timely releases, checking that the maintainers follow GNU's philosophy and guidelines, and resolving any conflicts that might arise. They also handle cases when a maintainer steps down or when a new volunteer steps up to maintain an existing package (in which case they can appoint a new maintainer on behalf of the Chief GNUisance).
New members are recruited from existing GNU volunteers when needed. However, help is often welcome for specific tasks and interested GNU volunteers are welcome to get in touch.
Package maintainers
Each GNU software package has specific maintainers, appointed by the Chief GNUisance or the assistant GNUisances. The package maintainers are responsible to the Chief GNUisance, under whose authority they are appointed and on rare occasions dismissed, and they are in charge of developing their packages on behalf of the GNU Project.
The initial appointment of maintainers is done when a program is accepted as a GNU package. These are normally some of the main developers who agreed to make the program a GNU package.
Over time, maintainers occasionally step down. In some cases, the sole maintainer steps down from the role, leaving the package unmaintained. The Chief GNUisance usually delegates finding and appointing new maintainers to the assistant GNUisances. See the list of currently unmaintained packages. We ask the old maintainers to recommend new maintainers, and we consider those suggestions appreciatively.
The maintainers of a package often recruit others to contribute to its development, and delegate some technical decisions to them. However, the maintainers retain authority over the whole of the package so they can carry out their responsibility to the GNU Project.
A maintainer's primary responsibility is to do a good, practical job of developing and maintaining the program in accord with the GNU Project's philosophy, mission, policies, and general decisions. Maintainers must also ensure that their packages work well with the rest of the GNU System. For more information, read about maintainers' basic duties and what it means for a program to be a GNU package.
In general, maintainers determine the technical directions that the software packages take and thus they make the day-to-day decisions for the packages. Likewise, in making their packages work well together, maintainers can work directly with each other, and we encourage them to do so. Rarely, the Chief GNUisance will make a decision that directly affects one or more GNU packages. The maintainers of the affected packages have the responsibility to execute the decision on behalf of the GNU Project.
More complete information about the specific responsibilities of maintainers and technical guidance for maintaining GNU software can be found in the Information for Maintainers of GNU Software and GNU Coding Standards documents.
We do not require that GNU package maintainers agree with our philosophy, or approve of our policies—only to follow them. Maintainers and contributors must carry out our philosophy, policies and occasional specific decisions in their work on GNU software.
Support for GNU Package Development
Several teams provide various kinds of support to the development and management of GNU packages. Most of these teams have a coordinator to direct them; in most cases, the coordinator reports directly to the Chief GNUisance unless otherwise stated. When in doubt, you can contact the GNU Volunteer Coordinators for advice.
Software Evaluation
The software evaluation team at <[email protected]> evaluates software packages proposed as GNU packages. This involves a careful assessment of the software's functionality as well as pertinent issues related to software freedom and how the program fits with the GNU system.
New members are recruited from existing GNU volunteers when needed. Prior experience with non-GNU software evaluation on Savannah is preferable.
Software Security Evaluation
The software security evaluation team at <[email protected]> works with the software evaluation team. They determine whether there are any security concerns in software that has been offered to GNU.
New members are recruited from existing GNU volunteers when needed.
Security Team
The Security Team helps to resolve security bugs in a timely fashion. If the maintainer of a GNU package fails to respond to a report of a security flaw, the reporter can escalate the issue to the security team. If it decides the issue is urgent, it can develop a patch and publish a fixed release of the package. Maintainers can also ask the security team for advice in securing their packages.
New members are recruited from existing GNU volunteers when needed.
Platform Testers
Volunteers behind the [email protected] mailing list test GNU software pre-releases on different hardware platforms to ensure that it functions correctly.
New volunteers are welcome.
Mentors
The GNU Mentors at <[email protected]> volunteer to provide guidance for new software maintainers.
We ask long-time GNU maintainers to volunteer.
Proofreaders
The proofreaders list is available to help GNU package maintainers by proofreading English text. To request proofreading, write to <[email protected]>.
Other Teams and Services
Several other teams facilitate or manage the day-to-day operations within the GNU Project, or advance specific goals of the project.
GNU Advisory Committee
The GNU Advisory Committee (GAC) exists to provide advice to the Chief GNUisance. Members of the Advisory Committee are appointed by the Chief GNUisance. The Advisory Committee generally monitors the health of the GNU Project on behalf of the Chief GNUisance and they raise potential issues for discussion.
Savannah Hackers
Savannah is the GNU Project's software forge. It hosts code repositories, bug reporting tools, mailing list interfaces and more. Savannah is administered by the Savannah Hackers. They keep the forge software up and running. In addition to ensuring that GNU software is properly hosted in the service, the Savannah Hackers also evaluate non-GNU software that applies to be hosted on the forge.
New volunteers are welcome.
Webmasters
The GNU Webmasters maintain and update the web pages at https://www.gnu.org.
Webmasters also answer various kinds of questions sent by the public, regarding topics such as free software and licenses (when the answer is clear). They do initial filtering of requests to evaluate a distro, evaluate people who would like to become webmasters, and update the list of mirrors.
The GNU Webmaster Group is led by the Chief Webmaster who reports to the Chief GNUisance. New volunteers are welcome. See the Volunteer Webmaster Quiz.
Web Translators
Each language has a translation team, directed by a team coordinator. See the Guide to Translating Web Pages on www.gnu.org for more information. The team coordinators report to the GNU Translations Manager, who reports to the Chief GNUisance.
List Helpers
Listhelper is a system for semi-automatically managing spam sent to GNU mailing lists. Most spam is caught by spam filters, but human moderators are also available to manage the queue of messages predicted not to be spam.
New members are recruited from existing GNU volunteers when needed.
GNU Volunteer Coordinators
The GNU Volunteer Coordinators at <[email protected]> help to guide new volunteers towards suitable jobs within the GNU Project
New GVC volunteers are welcome, but prior experience volunteering within GNU (and thus broad knowledge of the GNU Project) is highly recommended.
GNU Education Team
The GNU Education Team promotes the adoption of the GNU Operating System in educational environments. It also evaluates schools and speaks to school administrators.
New volunteers are welcome.
GNU Standards Group
The GNU Standards Group evaluates proposals to update the GNU coding standards. Anyone can submit a proposal via the bug-standards mailing list. The group then discusses and evaluates the proposal to work out all the details and implications. They then present the proposal and a recommendation to the Chief GNUisance, who makes the decision. The group is also responsible for installing changes to the document as well as updating the document on the web.
New volunteers are recruited from existing GNU volunteers when needed.
Correcting Errors
If we find errors or omissions in this description of the existing structure, which are possible since it previously had no centralized documentation, we will update this document, both the Org version and the HTML version, advancing the third version number. We will keep older versions available in a subdirectory.
Future Changes in Administrative Structure
Changes in the GNU Project administrative structure are decided on by the Chief GNUisance after starting consultations with GNU contributors, usually on appropriate GNU Project discussion lists. The aim of these consultations is to consider possible alternatives and anticipate what good and bad effects they would have, so as to make a wise decision.
To report changes that are adopted, we will update this document, both the Org version and the HTML version (see previous section), advancing the first and/or second version number.
An Org version of this document is also available.