This text is not up to date for GNU Sather. It gives about an idea about
what is involved, but it has to be reworked completely to fit the new
development model as a GNU project. Just contact us if you have questions
about it.

                                                            Norbert Nemec

---------------------------------------------------------------------------

Author: Stephen M. Omohundro
Copyright (C) 1991 by International Computer Science Institute


           Contributing Classes to the Sather Library

This text is adapted from a similar document distributed by the Free
Software Foundation.

The classes in the Sather library distributed by ICSI are governed by
the GNU Library General Public License. This essentially says that
anyone is free to use Sather library source code for any purpose
except that one must make available any modifications
(eg. bug fixes) made to library classes. In order to distribute
library classes contributed from elsewhere, the International Computer
Science Institute must obtain legal permission from the authors to
distribute their code under the terms of the GNU Library General
Public License. There are three ways this can be done:

* Assign the copyright to the International Computer Science Institute.
This is what we prefer because it allows us to use the copyright law
to prevent others from plagiarizing code without acknowledgement.

* Keep the copyright yourself and give us a suitable nonexclusive
license.  This alternative is impractical if your work consists of
changes to preexisting Sather library classes.

* Put the code in the public domain.  

Whichever one of these you choose, you need to sign a piece of paper
to make it happen.

* Assigning copyright.

Assigning the copyright means signing a contract that makes the
International Computer Science Institute the "owner" of the program
according to the law.  As the copyright holder, the institute can sue
anyone who tries to distribute the class in violation of the license.
Your name will remain on the class as an author and anyone who uses
the program must credit you in accordance with the license.  The
assignment contract commits the institute to free distribution
according to the terms of the general license.  Signing the assignment
does not stop you from distributing the program yourself--as long as
you do so under the license terms.  You don't have to wait for us to
start distributing.  You can start distributing as soon as you attach
the license notice to the source.

* Keeping the copyright.

Keeping the copyright and giving the International Computer Science
Institute a nonexclusive license also requires signing a contract.
The license we need permits us to add our usual distribution terms; it
recognizes possession of a copy with our distribution terms accurately
stated as licensing anyone to redistribute on those terms.  However,
if someone violates these terms--for example, gets a copy from us and
uses it without acknowledging you--we cannot sue him.  You have to
sue, or he gets away with it. Often free programs say they can be
copied for "noncommercial distribution" or "not for profit". Library
classes with these restrictions cannot be distributed by ICSI.

* Public domain.

If you put the program in the public domain, we prefer to have a
signed piece of paper--a disclaimer of rights--from you confirming
this.  The law says that anyone can copyright a modified version of
the public domain work.  (This doesn't restrict the original, which
remains in the public domain; only the changes are copyrighted.)  If
we make extensive changes, we will probably do this and add the
license clause. If we make small changes, we will leave the version we
distribute in the public domain.

* What about your employer?

If you are employed to do programming, or have made an agreement with
your employer that says it owns programs you write, we need a signed
piece of paper from your employer disclaiming rights to the program.
It should be signed by a vice president or general manager of the
company.  If you can't get at them, it is almost as good to find
someone who signs licenses for software that is purchased.

* Did anyone else contribute?

If someone else contributed more than a few lines here or there to the
program, then that person too is an author, and that person too needs
to sign papers just as you do.  So may that person's employer.
However, if his contribution is just a fraction of the whole work, it
is satisfactory if he disclaims his own rights, even if you are
assigning yours.

If you incorporated packages which you found floating around as
"public domain", we might still want to track down their authors, to
get disclaimers to reassure us that they really are in the public
domain.  So keep track of what these packages are and who wrote them.
