<HTML>
<HEAD>
   <TITLE>Jetty License</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<FONT FACE=ARIAL,HELVETICA>
<CENTER><FONT SIZE=+3><B>Jetty License</B></FONT></CENTER>
<CENTER><FONT SIZE=-1><B>$Revision: 1.1 $</B></FONT></CENTER>

<B>Preamble:</B><p>

The intent of this document is to state the conditions under which the
Jetty Package may be copied, such that the Copyright Holder maintains some
semblance of control over the development of the package, while giving the
users of the package the right to use, distribute and make reasonable
modifications to the Package in accordance with the goals and ideals of
the Open Source concept as described at
<A HREF="http://www.opensource.org">http://www.opensource.org</A>.
<P>
It is the intent of this license to allow commercial usage of the Jetty
package, so long as the source code is distributed or suitable visible
credit given or other arrangements made with the copyright holders.

<P><B>Definitions:</B><P>

<UL>
  <LI> "Jetty" refers to the collection of Java classes that are
       distributed as a HTTP server with servlet capabilities and
       associated utilities.<p>

  <LI>	"Package" refers to the collection of files distributed by the
       Copyright Holder, and derivatives of that collection of files
       created through textual modification.<P>
       
  <LI>	"Standard Version" refers to such a Package if it has not been
       modified, or has been modified in accordance with the wishes
       of the Copyright Holder.<P>
       
  <LI>	"Copyright Holder" is whoever is named in the copyright or
       copyrights for the package. <BR>
       Mort Bay Consulting Pty. Ltd. (Australia) is the "Copyright
       Holder" for the Jetty package.<P>
       
  <LI>	"You" is you, if you're thinking about copying or distributing
       this Package.<P>
       
  <LI>	"Reasonable copying fee" is whatever you can justify on the
       basis of media cost, duplication charges, time of people involved,
       and so on.  (You will not be required to justify it to the
       Copyright Holder, but only to the computing community at large
       as a market that must bear the fee.)<P>
       
  <LI>	"Freely Available" means that no fee is charged for the item
       itself, though there may be fees involved in handling the item.
       It also means that recipients of the item may redistribute it
       under the same conditions they received it.<P>
</UL>

0. The Jetty Package is Copyright (c) Mort Bay Consulting Pty. Ltd.
(Australia) and others. Individual files in this package may contain
additional copyright notices. The javax.servlet packages are copyright
Sun Microsystems Inc. <P>

1. The Standard Version of the Jetty package is
available from <A HREF=http://jetty.mortbay.org>http://jetty.mortbay.org</A>.<P>

2. You may make and distribute verbatim copies of the source form 
of the Standard Version of this Package without restriction, provided that 
you include this license and all of the original copyright notices
and associated disclaimers.<P>

3. You may make and distribute verbatim copies of the compiled form of the 
Standard Version of this Package without restriction, provided that you
include this license.<P>

4. You may apply bug fixes, portability fixes and other modifications
derived from the Public Domain or from the Copyright Holder.  A Package
modified in such a way shall still be considered the Standard Version.<P>

5. You may otherwise modify your copy of this Package in any way, provided
that you insert a prominent notice in each changed file stating how and
when you changed that file, and provided that you do at least ONE of the
following:<P>

<BLOCKQUOTE>
a) Place your modifications in the Public Domain or otherwise make them
Freely Available, such as by posting said modifications to Usenet or
an equivalent medium, or placing the modifications on a major archive
site such as ftp.uu.net, or by allowing the Copyright Holder to include
your modifications in the Standard Version of the Package.<P>

b) Use the modified Package only within your corporation or organization.<P>

c) Rename any non-standard classes so the names do not conflict
with standard classes, which must also be provided, and provide
a separate manual page for each non-standard class that clearly
documents how it differs from the Standard Version.<P>

d) Make other arrangements with the Copyright Holder.<P>
</BLOCKQUOTE>

6. You may distribute modifications or subsets of this Package in source 
code or compiled form, provided that you do at least ONE of the following:<P>

<BLOCKQUOTE>
a) Distribute this license and all original copyright messages, together 
with instructions (in the about dialog, manual page or equivalent) on where 
to get the complete Standard Version.<P>

b) Accompany the distribution with the machine-readable source of
the Package with your modifications. The modified package must include
this license and all of the original copyright notices and associated
disclaimers, together with instructions on where to get the complete
Standard Version.<P>

c) Make other arrangements with the Copyright Holder.<P>
</BLOCKQUOTE>

7. You may charge a reasonable copying fee for any distribution of this
Package.  You may charge any fee you choose for support of this Package.
You may not charge a fee for this Package itself.  However,
you may distribute this Package in aggregate with other (possibly
commercial) programs as part of a larger (possibly commercial) software
distribution provided that you meet the other distribution requirements
of this license.<P>

8. Input to or the output produced from the programs of this Package
do not automatically fall under the copyright of this Package, but
belong to whomever generated them, and may be sold commercially, and
may be aggregated with this Package.<P>

9. Any program subroutines supplied by you and linked into this Package
shall not be considered part of this Package.<P>

10. The name of the Copyright Holder may not be used to endorse or promote
products derived from this software without specific prior written
permission.<P>

11. This license may change with each release of a Standard Version of
the Package. You may choose to use the license associated with version
you are using or the license of the latest Standard Version.<P>

12. THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.<P>

13. If any superior law implies a warranty, the sole remedy under such shall
be , at the Copyright Holders option either a) return of any price paid or 
b) use or reasonable endeavours to repair or replace the software.<P>

14. This license shall be read under the laws of Australia.  <P>

<center>The End</center>

<center><FONT size=-1>This license was derived from the <I>Artistic</I> license published 
on <a href=http://www.opensource.org>http://www.opensource.com</a></font></center>
</FONT>


