Package the distribution of Foo version 69.96 in a tar file named `foo-69.96.tar'. 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 included 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 no file name in the distribution is no more than 14 characters long. Nowadays, there are systems that adhere to a foolish interpretation of the POSIX standard which holds that they should refuse to open a longer name, rather than truncating as they did in the past.
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.