Summarising the situation in 2013, Richard Stallman identified nine aspects which generally apply to being a GNU package,[1] but he noted that exceptions and flexibility are possible when there are good reasons:[2]
The package should say that it is a GNU package.
It should be distributed via ftp.gnu.org, or another site offering access to everyone.
The package's homepage should be on the GNU website.
The developers must pay attention to making their software work well with other GNU packages.
Documentation should be in Texinfo format, or in a format easily convertible to Texinfo.
Should use GNU Guile for its extension language, but exceptions are explicitly possible in this regard.
Should not recommend any non-free program, nor refer the user to any non-free documentation or non-free software.
Use GNU terminology, including referring to GNU/Linux systems and free software in situations where other observers would write Linux and open source.
The maintainer should be contactable, at least infrequently, to discuss problems in the software or fixing compatibility issues.
Base system
There is no official "base system" of the GNU operating system. GNU was designed to be a replacement for Unix operating systems of the 1980s and used the POSIX standards as a guide, but either definition would give a much larger "base system". The following list is instead a small set of GNU packages which seem closer to being "core" packages than being in any of the further down sections. Inclusions (such as plotutils) and exclusions (such as the C standard library) are of course debatable.
The following libraries and software frameworks are often used in combination with the basic toolchain tools above to build software. (For libraries specifically designed to implement GUI desktops, see Graphical desktop.)
^Greve, Georg C. F. (2001). "Brave GNU World - Issue #26". gnu.org. Retrieved 2022-08-14. The ancestry-line of the GNU Pipo BBS reaches over YAWK ("Yet Another Wersion of Citadel") back to Citadel, although it is completely independent code-wise. In fact it was a disagreement with Kenneth Haglund, author of YAWK, because of copyright-problems that triggered the development of the GNU Pipo BBS. The original development-team were Grégory Vandenbrouck and Sébastien Aperghis-Tramoni who worked on the GNU Pipo BBS with help from volunteers like Sébastien Bonnefoy.