This file is {ERIS}<LispUsers>Koto>LispUsers-Rules.tedit.  3-Dec-85 14:41:49

This document describes the rules and procedures for Interlisp "LispUsers" packages. This document is mainly for LispUsers package writers, but users should also understand the rules.  

DEVELOPING LISPUSERS PACKAGE

A LispUsers package is a useful program made available to the general Interlisp programming community in Xerox.  Neither the author nor the custodian of the LispUsers directory imputes any warranty of suitability or responsibility for errors.

LispUsers packages should try to be easily distinguished from released library packages.  In particular, this means that packages may not have the same name as a Library package and should be visibly different.  LispUsers packages derived from released software should be announced to the public only after communicating with the organization responsible for that released software.

Testing is important.  If you make significant changes to a LispUsers package, enlist your friends as alpha testers.  Avoid having to rerelease a package within hours of its announcement because of fatal bugs.  A LispUsers package is not shoddy software; it is software made available outside the regular release channels.

Try not to flood your user community with a constant flow of new versions (or messages) so your messages can be appreciated rather than discarded without reading.  If your package is undergoing continual changes, adopt a release strategy of regularly spaced, well tested releases.  Your users will thank you.

LISPUSERS PACKAGE OWNERSHIP

A package stored on the <LispUsers> directory remains the "property" of the submitter.  Others may not make changes, except for their own private use, without negotiating with the owner (who may already be making similar or incompatible changes).  In general, changing a package on the <LispUsers> directory implies a willing transfer of ownership.

As the owner of a package, you are not required to fix bugs, but if not, you must be willing to transfer ownership (permanently) to someone who volunteers to fix them.  Ownership may pass back and forth among several people as long as they agree.

Like all software developed here, LispUsers packages are officially the property of Xerox.  You should run with the COPYRIGHT option in set to produce an appropriate Xerox copyright in the source.

A LispUsers package may become so useful that it becomes part of a standard Interlisp-D release and is thereafter supported.  Ownership then passes to the product organization.

ANNOUNCING LISPUSERS PACKAGE

When a new or updated package is stored, a message should be sent to the LispUsers↑.PA distribution list.  Please, don't send questions about LispUsers packages to LispUsers↑.PA, only announcements. Anyone with a problem locating the author of the package or needing assistance should try contacting LispSupport.PA first -- LispSupport tries to respond within 24 hours to any request for information. There is another distribution list, LispFolklore↑.X, for interchange of messages about folklore, neat features people have recently discovered, etc. if you want a WIDE distribution, want to poll people for opinions about new features, etc. Summary:

LispSupport.PA		need help? Have a question? report a
					bug? (We can forward it to submitter
					if its not "supported".)

LispFolklore↑.X		discussion of Lisp features

LispUsers↑.PA			(infrequent) announcements of new
					releases


STORING FILES ON LISPUSERS

As with released software, it is important to store not just the resulting product, but all the files needed to build and maintain a lisp users package:

   1. the runnable .DCOM
   2. documentation describing it
   3. files used to build it
   4. data files

The official repository for LispUsers packages is the directory {ERIS}<LispUsers>.  There is a subdirectory for each release, e.g. <LispUsers>Intermezzo>, <LispUsers>Koto>. When a release gets "shipped" to external sites, the files on <LispUsers>releasename> will get moved to <Lisp>releasename>LispUsers>. Thus, <LispUsers>releasename> should only contain files "newer than" the last release.

This means there's some duplication, since if you want to release a package that is good for more than one release, you have to make multiple copies, and, whenever a new release gets shipped, copied again. On the other hand, it provides for some postive mechanism for verifying that packages are still "alive".

Documentation, essential to any package being used effectively, should be put on the <LispUsers> directory, too. Documentation can be as simple as a paragraph describing what the package does and how to use it, or it can be as extensive as a dozen-page user manual.  All packages should have a file with a .TEDIT extension (plain text is OK). If the documentation is large and formatting time consuming, you can also produce a .press or .interpress file. (Be sure to update the .press/.interpress if you update the documentation!) Documentation should include the full electronic mail address of the submitter.

There is also a simple file {ERIS}<LispUsers>releasename>LISPUSERS.TTY that contains a brief paragraph for each file. New packages should get a corresponding entry.

Any file on the <LispUsers> directory should be compilable ina "vanilla" environment. The file itself should load in any auxiliary packages under a suitable (DECLARE: EVAL@COMPILE -- ) when necessary.


A directory might look like:

   <LispUsers>Koto>BIGFOOT
  			BIGFOOT.DCOM
			BIGFOOT.TEDIT

Do not announce LispUsers packages stored on your own or some other directory to the general public (i.e. LispFolklore↑.x or LispUsers↑.PA).  If your package is worthy of being announced to and used by people you have never met, it deserves to be treated seriously.  Get your act together and get it onto the <LispUsers> directory.

Anyone may store a package by connecting to the <LispUsers> directory; no password is required.  LispSupport reserves the right to "delver" the LispUsers directory to one version as space is needed.

This document is stored as {Eris}<LispUsers>Koto>LispUsers-Rules.TEdit.

Thanks for your cooperation.