
                                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).

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).


 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/
