#+title: The Structure and Administration of the GNU Project
#+options: author:nil html-postamble:nil num:nil timestamp:nil toc:nil
#+options: -:nil ':t
#+startup: showall
#+macro: mdash @@html:—@@
#+begin_export html
by Brandon Invergo and Richard Stallman
Version 1.0.1
#+end_export
#+begin_announcement
An [[https://www.gnu.org/gnu/gnu-structure.org][Org version]] of this document is also available.
#+end_announcement
#+begin_comment
Canonical version: https://www.gnu.org/gnu/gnu-structure.html
Copyright © 2020 Brandon Invergo and Richard Stallman
Released under Creative Commons Attribution Noderivatives Licenses 4.0
#+end_comment
#+begin_export html
#+end_export
The GNU Project develops and maintains the [[https://www.gnu.org/gnu/about-gnu.html][GNU operating system]].
Through this work, and other related activities, the GNU Project
advocates and promotes [[https://www.gnu.org/philosophy/philosophy.html][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 [[https://www.gnu.org/philosophy/categories.html][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
:PROPERTIES:
:CUSTOM_ID: software-development-structure
:END:
Most of the GNU Project's activity consists of development of software
packages. Here is how GNU software development is structured.
** The Chief GNUisance
:PROPERTIES:
:CUSTOM_ID: chief-gnuisance
:END:
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{{{mdash}}}and usually that
is with a suggestion.
** Assistant GNUisances
:PROPERTIES:
:CUSTOM_ID: assistant-gnuisances
:END:
This team, residing at [[mailto:maintainers@gnu.org][maintainers@gnu.org]], 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 [[https://www.gnu.org/philosophy][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
:PROPERTIES:
:CUSTOM_ID: maintainers
:END:
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
[[https://www.gnu.org/help/evaluation.html][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. [[https://www.gnu.org/server/takeaction.html#unmaint][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, [[https://www.gnu.org/help/evaluation.html#whatmeans][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 [[https://www.gnu.org/prep/maintain][Information for Maintainers of GNU Software]] and [[https://www.gnu.org/prep/standards][GNU
Coding Standards]] documents.
We do not require that GNU package maintainers agree with our
philosophy, or approve of our policies{{{mdash}}}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
:PROPERTIES:
:CUSTOM_ID: package-development-support
:END:
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 [[mailto:gvc@gnu.org][GNU Volunteer Coordinators]] for advice.
** Software Evaluation
:PROPERTIES:
:CUSTOM_ID: gnueval
:END:
The software evaluation team at [[mailto:gnueval@gnu.org][gnueval@gnu.org]] 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
:PROPERTIES:
:CUSTOM_ID: gnueval-security
:END:
The software security evaluation team at [[mailto:gnueval-security@gnu.org][gnueval-security@gnu.org ]]
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
:PROPERTIES:
:CUSTOM_ID: security
:END:
The [[mailto:security@gnu.org][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
:PROPERTIES:
:CUSTOM_ID: platform-testers
:END:
Volunteers behind the [[https://lists.gnu.org/mailman/listinfo/platform-testers][platform-testers@gnu.org]] mailing list test GNU
software pre-releases on different hardware platforms to ensure that
it functions correctly.
New volunteers are welcome.
** Mentors
:PROPERTIES:
:CUSTOM_ID: mentors
:END:
The GNU Mentors ([[mailto:mentors@gnu.org][mentors@gnu.org]]) volunteer to provide guidance for
new software maintainers.
We ask long-time GNU maintainers to volunteer.
** Proofreaders
:PROPERTIES:
:CUSTOM_ID: proofreaders
:END:
The proofreaders list is available to help GNU package maintainers by
proofreading English text. To request proofreading, write to
[[mailto:proofreaders@gnu.org][proofreaders@gnu.org]].
* Other Teams and Services
:PROPERTIES:
:CUSTOM_ID: other-teams-services
:END:
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
:PROPERTIES:
:CUSTOM_ID: gac
:END:
The [[https://www.gnu.org/contact/gnu-advisory.html][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
:PROPERTIES:
:CUSTOM_ID: savannah-hackers
:END:
[[https://savannah.gnu.org][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 [[mailto:savannah-hackers-public@gnu.org][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
:PROPERTIES:
:CUSTOM_ID: webmasters
:END:
The [[https://www.gnu.org/people/webmeisters.html][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\nbsp{}[[mailto:chief-webmaster@gnu.org][Chief Webmaster]] who reports to\nbsp{}
the Chief GNUisance. New volunteers are welcome. See [[https://www.gnu.org/server/standards/webmaster-quiz.html][the Volunteer
Webmaster Quiz]].
** Web Translators
:PROPERTIES:
:CUSTOM_ID: web-translators
:END:
Each language has a translation team, directed by a team coordinator.
See [[https://www.gnu.org/server/standards/README.translations.html][the Guide to Translating Web Pages on www.gnu.org]] for more
information. The team coordinators report to the\nbsp{}[[mailto:web-translators@gnu.org][GNU Translations
Manager]], who\nbsp{}reports to the Chief GNUisance.
** List Helpers
:PROPERTIES:
:CUSTOM_ID: list-helpers
:END:
[[https://savannah.gnu.org/maintenance/ListHelperAntiSpam/][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
:PROPERTIES:
:CUSTOM_ID: gvc
:END:
The GNU Volunteer Coordinators ([[mailto:gvc@gnu.org][gvc@gnu.org]]) 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
:PROPERTIES:
:CUSTOM_ID: education
:END:
The [[https://www.gnu.org/education/][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
:PROPERTIES:
:CUSTOM_ID: standards
:END:
The GNU Standards Group evaluates proposals to update the GNU coding
standards. Anyone can submit a proposal via the [[https://lists.gnu.org/mailman/listinfo/bug-standards][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
:PROPERTIES:
:CUSTOM_ID: correcting-errors
:END:
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 [[https://www.gnu.org/gnu/gnu-structure.org][the Org version]] and
[[https://www.gnu.org/gnu/gnu-structure.html][the HTML version]], advancing the third version number. We will keep
older versions available in [[https://www.gnu.org/gnu/old-gnu-structure/][a subdirectory]].
* Future Changes in Administrative Structure
:PROPERTIES:
:CUSTOM_ID: future-changes
:END:
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.