5.5 Documentation and ChangeLogs
As with any software project, it is important to maintain documentation
as the project evolves--the documentation must reflect the current state
of the software, but it must also accurately record the changes that
have been made in the past. The GNU coding standard rigorously
enforces the maintenance of documentation. Automake, in fact,
implements some of the standard by checking for the presence of a
`ChangeLog' file when
automake is run!
A number of files exist, with standardized filenames, for storing
documentation in GNU packages. The complete GNU coding
standard, which offers some useful insights, can be found at
Other projects, including in-house projects, can use these same
tried-and-true techniques. The purpose of most of the standard
documentation files was outlined earlier See section 5.2 Generated Output Files,
but the `ChangeLog' deserves additional treatment.
When recording changes in a `ChangeLog', one entry is made per
person. Logical changes are grouped together, while logically distinct
changes (ie. `change sets') are separated by a single blank line.
Here is an example from Automake's own `ChangeLog':
1999-11-21 Tom Tromey <firstname.lastname@example.org>
* automake.in (finish_languages): Only generate suffix rule
when not doing dependency tracking.
* m4/init.m4 (AM_INIT_AUTOMAKE): Use AM_MISSING_INSTALL_SH.
* m4/missing.m4 (AM_MISSING_INSTALL_SH): New macro.
* depend2.am: Use @SOURCE@, @OBJ@, @LTOBJ@, @OBJOBJ@,
and @BASE@. Always use -o.
Another important point to make about `ChangeLog' entries is that
they should be brief. It is not necessary for an entry to explain in
details why a change was made, but rather what the change
was. If a change is not straightforward then the explanation of
why belongs in the source code itself. The GNU coding
standard offers the complete set of guidelines for keeping
`ChangeLog's. Although any text editor can be used to create
ChangeLog entries, Emacs provides a major mode to help you write them.