This part of the standard governs code and documentation source. Source refers to programming languages, documentation and other source entered while working on the project. Documentation includes Enstore engineering documents and end user documents. [don't say anything about mailing list --- process/procedure]
Conference and other presentations about Enstore shall not be kept with the product. Presentations made with a UNIX tool shall be kept in the HPPC department area on node HPPC.FNAL.GOV. Presentations made with an NT tool shall be kept in the HPPC area on CDASERVER1.
Aside from POSIX executables, and trivial shell commands only the following shall be used to process the project's source. This category does not include dependent products, rather the intent is to standardize andlimit what executables can be used in a Makefile.
All printable and viewable documentation shall contain the name of the source file and the rcs revision. The file name with cvs module subdirectory shall be entered manually and the RCS keyword splat shall be used for revision.
Source shall be derived from the project templates.
Copyright notices in source code are not necessary.
Personal authorship of the code is recorded in the CVS library.
When source is incorporated by copying from a different file, the original file shall be documented in a comment.
Shell scripts shall be written to /bin/sh. (programmers are advised that /bin/sh on Linux tends to be bash, and has more features than vanilla sh)
POSIX compliant Unix utilities shall be used when available.
Shell code shall be portable to all FNAL supported Unix's.
A POSIX shell manual is available in Don Petravick's office.
C source shall be ANSI C
POSIX routines shall be used in preference to other routines.
#ifdefs for portability shall be minimized.
POSIX make is the code standard for make, with the following exceptions: 1) .include is allowed.
Make file shell commands shall obey the same rules as for shell scripts.
Makes shall complete even if documentation processors are not present on the system.
Make files shall have targets named: all, intall, clean, default.
def this(): if a==1: this=that # this is a comment emacs_want_to_decrease_this_indentation = 1 and_all_other_lines_at_this_level=1This will cause emacs to want to decrease the lines following the comment.
Python source files which do not have production main programs shall have unit tests as the main program. Such tests shall be maintained.
TBD - Man pages delivered into the man directory and shall in catman format.