
                                C R E D I T S
                                 
This is the file where major donations to the Cocoon project are listed and it
should be used to give appropriate visibility to those inviduals, organizations
or companies that donated resources to the effort. This file wants to be one of
the ways the Cocoon community pays back.


 Community Credits
 -----------------
                                   
The Cocoon project was originally created, proposed and bootstrapped by
Stefano Mazzocchi (http://www.betaversion.org/~stefano/)

The web application framework consisting of the session handling (aka sunShine),
the authentication framework (aka sunRise) and the portal engine (aka sunSpot)
was created and developed by the Open Source Competence Center of 
s&n AG (http://www.s-und-n.de), Paderborn, Germany.

The interpreted sitemap engine and other contributions from Sylvain Wallez are
made possible by the time donated by his company, Anyware Technologies 
(http://www.anyware-tech.com).

The flow control layer, the SOAP and XScript logicsheets, and other
changes were contributed by Ovidiu Predescu and donated by the Hewlett
Packard Company (http://www.hp.com/).

The DELI implementation was contributed by Mark Butler, and donated to
Cocoon by the Hewlett Packard Company (http://www.hp.com/).

The initial code of the new portal framework is a donation by a joined development
effort of BASF IT-Services (http://www.basf-it-services.com) 
and s&n AG (http://www.s-und-n.de). This initial version has been developed by
Volker Schmitt (volker.schmitt@basf-it-services.com), 
Juergen Seitz (juergen.seitz@basf-it-services.com),
Bjoern Luetkemeier (bluetkemeier@s-und-n.de) and Carsten Ziegeler (cziegeler@s-und-n.de).

The initial code of the new ojb block and other contributions from Antonio Gallardo
and Carlos Chávez are made posible by the time donated by AG Software, S. A.
(http://www.agssa.net).

The initial code of the official Cocoon form handling block (CForms) 
evolved from the Woody donation made by Outerthought
(http://outerthought.org).

The initial code of the official Cocoon authentication block (CAuth)
evolved from the CoWarp donation made by Carsten Ziegeler (cziegeler@osoco.org).


 Credits of included software
 ----------------------------

This product includes software developed by the Apache Software Foundation 
(http://www.apache.org/).

This product includes software developed by the XML:DB Initiative 
(http://www.xmldb.org/).

This product includes software developed by the IronSmith Project 
(http://www.ironsmith.org/).

This product includes software developed by the jfor Project 
(http://www.jfor.org).

This product includes software developed by the JDOM Project 
(http://www.jdom.org/).

This product includes software developed by the OpenORB Community Project 
(http://sourceforge.net/projects/openorb/).

This product includes software developed by the Chaperon Project
(http://www.sourceforge.net/projects/chaperon/).

This product includes software developed by the Exolab Project
(http://www.exolab.org/).

This product includes software developed by ANTLR Project
(http://www.antlr.org/)


Portions are Copyright (c) 2001 Tivano Software GmbH
(http://www.tivano.de). All Rights Reserved.

Portions are Copyright (c) 1998-2000 World Wide Web Consortium 
(Massachusetts Institute of Technology, Institut National de Recherche en
Informatique et en Automatique, Keio University). All Rights Reserved.

Portions are Copyright (c) 2001 Scott Robert Ladd. All rights reserved.

Portions are Copyright (c) 2001, 2002 Thai Open Source Software Center Ltd.
All rights reserved.

Portions are Copyright (c) Mort Bay Consulting Pty. Ltd. All rights reserved.

Portions are Copyright (c) Hewlett-Packard Company 2002. All rights reserved.

Schematron portions are Copyright (c) 2000,2001 Rick Jelliffe and Academia
Sinica Computing Center, Taiwan




                                                 The Apache Cocoon Community
                                                  http://cocoon.apache.org/
