standards: Releases

1 
1 7.3 Making Releases
1 ===================
1 
1 You should identify each release with a pair of version numbers, a major
1 version and a minor.  We have no objection to using more than two
1 numbers, but it is very unlikely that you really need them.
1 
1    Package the distribution of 'Foo version 69.96' up in a gzipped tar
1 file with the name 'foo-69.96.tar.gz'.  It should unpack into a
1 subdirectory named 'foo-69.96'.
1 
1    Building and installing the program should never modify any of the
1 files contained in the distribution.  This means that all the files that
1 form part of the program in any way must be classified into "source
1 files" and "non-source files".  Source files are written by humans and
1 never changed automatically; non-source files are produced from source
1 files by programs under the control of the Makefile.
1 
1    The distribution should contain a file named 'README' with a general
1 overview of the package:
1 
1    * the name of the package;
1 
1    * the version number of the package, or refer to where in the package
1      the version can be found;
1 
1    * a general description of what the package does;
1 
1    * a reference to the file 'INSTALL', which should in turn contain an
1      explanation of the installation procedure;
1 
1    * a brief explanation of any unusual top-level directories or files,
1      or other hints for readers to find their way around the source;
1 
1    * a reference to the file which contains the copying conditions.  The
1      GNU GPL, if used, should be in a file called 'COPYING'.  If the GNU
1      LGPL is used, it should be in a file called 'COPYING.LESSER'.
1 
1    Naturally, all the source files must be in the distribution.  It is
1 okay to include non-source files in the distribution along with the
1 source files they are generated from, provided they are up-to-date with
1 the source they are made from, and machine-independent, so that normal
1 building of the distribution will never modify them.  We commonly
1 include non-source files produced by Autoconf, Automake, Bison, 'flex',
1 TeX, and 'makeinfo'; this helps avoid unnecessary dependencies between
1 our distributions, so that users can install whichever versions of
1 whichever packages they like.  Do not induce new dependencies on other
1 software lightly.
1 
1    Non-source files that might actually be modified by building and
1 installing the program should *never* be included in the distribution.
1 So if you do distribute non-source files, always make sure they are up
1 to date when you make a new distribution.
1 
1    Make sure that all the files in the distribution are world-readable,
1 and that directories are world-readable and world-searchable (octal mode
1 755).  We used to recommend that all directories in the distribution
1 also be world-writable (octal mode 777), because ancient versions of
1 'tar' would otherwise not cope when extracting the archive as an
1 unprivileged user.  That can easily lead to security issues when
1 creating the archive, however, so now we recommend against that.
1 
1    Don't include any symbolic links in the distribution itself.  If the
1 tar file contains symbolic links, then people cannot even unpack it on
1 systems that don't support symbolic links.  Also, don't use multiple
1 names for one file in different directories, because certain file
1 systems cannot handle this and that prevents unpacking the distribution.
1 
1    Try to make sure that all the file names will be unique on MS-DOS. A
1 name on MS-DOS consists of up to 8 characters, optionally followed by a
1 period and up to three characters.  MS-DOS will truncate extra
1 characters both before and after the period.  Thus, 'foobarhacker.c' and
1 'foobarhacker.o' are not ambiguous; they are truncated to 'foobarha.c'
1 and 'foobarha.o', which are distinct.
1 
1    Include in your distribution a copy of the 'texinfo.tex' you used to
1 test print any '*.texinfo' or '*.texi' files.
1 
1    Likewise, if your program uses small GNU software packages like
1 regex, getopt, obstack, or termcap, include them in the distribution
1 file.  Leaving them out would make the distribution file a little
1 smaller at the expense of possible inconvenience to a user who doesn't
1 know what other files to get.
1