(https://www.gnu.org/software/hello/) produces a familiar,
friendly greeting. It allows nonprogrammers to use a classic computer
science tool which would otherwise be unavailable to them. Because it
is protected by the GNU General Public License, users are free (in
perpetuity) to share and change it.
Not to spoil the joke, but of course the practical purpose of GNU Hello is to serve as a minimal example of a GNU package. So, although most manuals don’t need to discuss the implementation of the programs they document, that is part of the goal here.
First, GNU Hello follows the GNU coding standards (see Preface in GNU Coding Standards) and GNU maintainer standards (see Preface in Information for GNU Maintainers). These are the basic documents which all GNU packages should adhere to.
The Hello package also implements recommended development practices not embodied in the standards, using other GNU packages and features:
srclist-updateare used, for purposes of example. See the README-dev file in the distribution.
getopt_longfunction (see Getopt Long Options in GNU C Library) to parse options, thus supporting GNU-style long options such as --help.
help2man(see Overview in GNU
help2man) from the --help output. This relieves the maintainers from the burden of updating separate man documentation, yet provides a reasonable overview for man devotees.
GNU Hello is implemented in C. The GNU Gettext distribution contains “hello world” examples in many other programming languages; see the Gettext home page at https://www.gnu.org/software/gettext/.
The top-level Makefile.am in Hello also contains a few special targets for other projects to adapt as desired:
Make a diff from the previous release, assuming the current tarball is in the current tarball.
Verify that all source files using
_() are included for
translation in po/POTFILES.in, so translators will have all the
Sample procedure for updating the manual on the GNU web site, in this case https://www.gnu.org/software/hello/manual/.
GNU Hello was written by Mike Haertel, David MacKenzie, Jan Brittenson, Charles Hannum, Roland McGrath, Noah Friedman, Karl Eichwalder, Karl Berry, and The King.