The GNU hello program (http://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) and GNU maintainer standards (see Preface). 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) to parse options, thus supporting GNU-style long options such as --help.
help2man(see Overview) 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 http://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:
_()are included for translation in po/POTFILES.in, so translators will have all the messages.
GNU Hello was written by Mike Haertel, David MacKenzie, Jan Brittenson, Charles Hannum, Roland McGrath, Noah Friedman, Karl Eichwalder, Karl Berry, and The King.