Go to the previous section.

Making Releases

Package the distribution of Foo version 69.96 in a gzipped tar file named `foo-69.96.tar.gz'. It should unpack into a subdirectory named `foo-69.96'.

Building and installing the program should never modify any of the files contained in the distribution. This means that all the files that form part of the program in any way must be classified into source files and non-source files. Source files are written by humans and never changed automatically; non-source files are produced from source files by programs under the control of the Makefile.

Naturally, all the source files must be in the distribution. It is okay to include non-source files in the distribution, provided they are up-to-date and machine-independent, so that building the distribution normally will never modify them. We commonly include non-source files produced by Bison, Lex, TeX, and Makeinfo; this helps avoid unnecessary dependencies between our distributions, so that users can install whichever packages they want to install.

Non-source files that might actually be modified by building and installing the program should never be included in the distribution. So if you do distribute non-source files, always make sure they are up to date when you make a new distribution.

Make sure that the directory into which the distribution unpacks (as well as any subdirectories) are all world-writable (octal mode 777). This is so that old versions of tar which preserve the ownership and permissions of the files from the tar archive will be able to extract all the files even if the user is unprivileged.

Make sure that all the files in the distribution are world-readable.

Make sure that no file name in the distribution is more than 14 characters long. Likewise, no file created by building the program should have a name longer than 14 characters. The reason for this is that some systems adhere to a foolish interpretation of the POSIX standard, and refuse to open a longer name, rather than truncating as they did in the past.

Don't include any symbolic links in the distribution itself. If the tar file contains symbolic links, then people cannot even unpack it on systems that don't support symbolic links. Also, don't use multiple names for one file in different directories, because certain file systems cannot handle this and that prevents unpacking the distribution.

Try to make sure that all the file names will be unique on MS-DOG. A name on MS-DOG consists of up to 8 characters, optionally followed by a period and up to three characters. MS-DOG will truncate extra characters both before and after the period. Thus, `foobarhacker.c' and `foobarhacker.o' are not ambiguous; they are truncated to `foobarha.c' and `foobarha.o', which are distinct.

Include in your distribution a copy of the `texinfo.tex' you used to test print any `*.texinfo' files.

Likewise, if your program uses small GNU software packages like regex, getopt, obstack, or termcap, include them in the distribution file. Leaving them out would make the distribution file a little smaller at the expense of possible inconvenience to a user who doesn't know what other files to get.

Go to the previous section.