The Structure and Administration of the GNU Project

The 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.

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.

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.

Platform Testers

Mentors

The GNU Mentors
([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

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.

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
([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.