Next: , Previous: Compiled and Implementation-Specific Features, Up: About SLIB


8.5 Coding Guidelines

All library packages are written in IEEE P1178 Scheme and assume that a configuration file and require.scm package have already been loaded. Other versions of Scheme can be supported in library packages as well by using, for example, (provided? 'r3rs) or (require 'r3rs) (see Require). If a procedure defined in a module is called by other procedures in that module, then those procedures should instead call an alias defined in that module:

     (define module-name:foo foo)

The module name and ‘:’ should prefix that symbol for the internal name. Do not export internal aliases.

A procedure is exported from a module by putting Schmooz-style comments (see Schmooz) or ‘;@’ at the beginning of the line immediately preceding the definition (define, define-syntax, or defmacro). Modules, exports and other relevant issues are discussed in Compiling Scheme.

Code submitted for inclusion in SLIB should not duplicate (more than one) routines already in SLIB files. Use require to force those library routines to be used by your package.

Documentation should be provided in Emacs Texinfo format if possible, but documentation must be provided.

Your package will be released sooner with SLIB if you send me a file which tests your code. Please run this test before you send me the code!

8.5.1 Modifications

Please document your changes. A line or two for ChangeLog is sufficient for simple fixes or extensions. Look at the format of ChangeLog to see what information is desired. Please send me diff files from the latest SLIB distribution (remember to send diffs of slib.texi and ChangeLog). This makes for less email traffic and makes it easier for me to integrate when more than one person is changing a file (this happens a lot with slib.texi and ‘*.init’ files).

If someone else wrote a package you want to significantly modify, please try to contact the author, who may be working on a new version. This will insure against wasting effort on obsolete versions.

Please do not reformat the source code with your favorite beautifier, make 10 fixes, and send me the resulting source code. I do not have the time to fish through 10000 diffs to find your 10 real fixes.