I'm really glad to see this packaging proposal emerging. 

Ideally, all packages would be documented to the degree found in the Chicken 
eggs, or Alex's irregex package, or Edi Weitz's Common Lisp packages. Good, 
consistent documentation is one of the key ways of selling a package 
repository. 

Color me profoundly neutral on the choice of markup formats. However, if I did 
have a preference, it would probably be HTML, on the grounds that that requires 
zero ancillary software (plain text has the same virtue). But I do think the 
choice should be standardized in the package format so that package management 
tools can process the documentation in an automated way. Ideally, there should 
be some file that the tools keep up-to-date that acts as a directory, or table 
of contents, of all currently installed packages. (Chicken does this extremely 
well.) 

I would suggest the following conventions for package documentation. 
 
  * At the top level, three files with generic information (these can be 
consolidated into one README file, if there's a standard skeleton for what a 
README file looks like). 
  
    - README: general package description
    - INSTALL: information that should be read _prior_ to installation, e.g., 
auxiliary code that must be installed first; I'm always surprised at packages 
that only tell you important installation information in ways that require you 
to install the package first. This reminds me of the time I bought a very large 
CRT TV and managed to get it home by myself. After opening the box and lifting 
the TV out of the box, I found a sheet of paper inside (under where the TV had 
been) that said `WARNING: THIS DEVICE IS TOO HEAVY TO BE LIFTED BY ONE PERSON. 
ALWAYS HAVE TWO PEOPLE MOVE THE BOX OR REMOVE THE TELEVISION FROM THE BOX'.   
    - COPYING: description of licensing terms 

  * All other documentation appears in a doc directory, with the entry point 
being the file index.html (change this to some other name if other than HTML is 
the format). 

  * As part of preparing a package to add it to a repository, any preprocessing 
of the documentation (e.g., extracting documentation from source code) is 
performed. A standard prepare-doc target in a Makefile (if the package manager 
uses make) is a good way to do that. 

  * Repositories present an automatically-maintained page or page hierarchy 
that acts as a table of contents for all packages, linking to the documentation 
for each available package. Similarly, the package management tool keeps an 
updated table of contents of installed packages, so that a user always has an 
up-to-date `User's Manual' for all installed packages on their system. 

  * Standard documentation conventions should discourage typographical 
eccentricities (e.g., elaborate CSS specifications, weird frames, etc.), so as 
to produce a consistent look-and-feel for all documentation. 

On the subject of CPAN, I'm not a Perl user, so don't know much about how CPAN 
packages work. My own experience with CPAN has generally been rather 
frustrating, because most packages I have tried to install ended up having 
unsatisfied dependencies, and I'd generally find myself doing several 
iterations, and end up getting three quarters of everything installed before 
discovering one package that was broken or didn't work on my OS, or the like 
(there may be a better way of using CPAN, but I'm just relating my experience). 
I'd prefer dependency management to be copied from Debian than from CPAN. 

-- vincent

 



_______________________________________________
Scheme-reports mailing list
[email protected]
http://lists.scheme-reports.org/cgi-bin/mailman/listinfo/scheme-reports

Reply via email to