Cocoon is a 100% pure Java publishing framework that relies on new W3C technologies (such as DOM, XML, and XSL) to provide web content.
The Cocoon project aims to change the way web information is created, rendered and served. This new paradigm is based on fact that document content, style and logic are often created by different individuals or working groups. Cocoon aims to a complete separation of the three layers, allowing the three layers to be independently designed, created and managed, reducing management overhead, increasing work reuse and reducing time to market.
Read the Introduction on Cocoon Technologies white paper to find out more on the subject.
Web content generation is mostly based on HTML, but HTML doesn't separate the information from its presentation, mixing formatting tags, descriptive tags and programmable logic (both on server side and client side). Cocoon changes this view allowing content, logic and style on different XML files and uses XSL transformation capabilities to merge them.
Even if the most common use of Cocoon is the automatic creation of HTML through the processing of statically or dynamically generated XML files, Cocoon is also able to perform more sophisticated formatting, such as XSL:FO rendering on PDF, client-depending transformations such as WML formatting for WAP-enabled devices or direct XML serving to XML and XSL aware clients.
The Cocoon model allows web sites to be highly structured and well designed, reducing duplication efforts and site management costs by allowing different presentations of the same data depending on the requesting client (HTML clients, PDF clients, WML clients) and separating on different contexts different requirements, skills and capacities. Cocoon allows a better human resource management by giving to each individual its job and reducing to a minimum the cross-talks between different working contexts.
To do this, the Cocoon model divides the development of web content in three separate levels:
XML creation: the XML file is created by the content owners. They do not require specific knowledge on how the XML content is further processed rather than the particular chosen DTD/namespace. This layer is always performed by humans directly through normal text editors or XML-aware tools/editors.
XML processing: the requested XML file is processed and the logic contained in its logicsheet is applied. Unlike other dynamic content generators, the logic is separated from the content file.
XSL rendering: the created document is then rendered by applying an XSL stylesheet to it and formatting it to the specified resource type (HTML, PDF, XML, WML, XHTML)
The biggest known problem in this framework is the lack of XML/XSL knowledge, being relatively new formats. We do believe, though, that this publishing framework will be a winner in web sites of medium to high complexity and will lead the transition from an HTML-oriented to a XML-oriented web publishing model, still allowing the use of existing client technologies as well as supporting new types of clients (such as WAP-aware ultra thin clients like cell phones or PDAs).
Even if considered heavy and hype overloaded, the XML/XSL pair will do magic once its public knowledge receives the spread it deserves. This project wants to be a small step in this direction, helping people to learn this technology and to focus on what they need with examples, tutorial and source code and a real-life system carefully designed with portability, modularity and real-life usage in mind.
The main concern remains processing complexity: the kind of operations required to process the document layers are complex and not designed for real-time operation on the server side. For this reason, Cocoon is designed to be a page compiler for dynamic pages, trying to hardcode, whenever possible, those layers in precompiled binary code coupled with an adaptive and memory-wise cache system for both static and dynamic pages. Most of the development effort is focused on performance improvement of both processing subsystems as well as the creation and testing of special cache systems.
In this direction it must be understood that Cocoon 1.x should be considered a proof of concept rather than a software usable for real web sites. In fact, the Cocoon projects aims to gather as much information as possible during it's first generation while its second generation, starting from Cocoon 2.0, will aim to be a usable and real-life publishing framework. See the Cocoon 2 outline to understand the design plans already established.
Another problem is the intrinsic impossibility of page-compiling all the three processing layers, due to the post-processing requirements of XSL styling. This problem will be solved (hopefully!) with the availability of XSL-enabled web browsers since the XSL rendering would be then performed on client side reducing the server work.
Go to the download area and be sure you read the release note in that page.
Here you find all the information you need to use, understand and enhance Cocoon.
The Cocoon Project is an open volunteer project based on the spirit of the Apache Software Foundation (ASF). This means that there are lots of ways to contribute to the project, either with direct participation (coding, documenting, answering questions, proposing ideas, reporting bugs, suggesting bug-fixes, etc..) or by resource donation (money, time, publicity, hardware, software, conference presentations, speeches, etc...).
For direct participation, we suggest you to subscribe to the Cocoon mail list (follow the link for information on how to subscribe and to access the mail list archives), to checkout the latest and greatest code (which you found in the
cocoon
module in the java.apache.org CVS code repository), control the to-do list and jump it. Document writers are usually the most wanted people so if you like to help but you're not familiar with technical details, don't worry we have work for you.For money funding in particular, the Cocoon Project and the ASF in general is closely collaborating with the Collab.net SourceXchange program that will provide a legal, solid and well established resource for money collecting to fund direct software production under the open source flag. Please, feel free to contact directly Cocoon's main architect and project creator Stefano Mazzocchi or the ASF President and Collab.net co-founder Brian Behlendorf for more information on how to contribute directly to the advancement of this project.
Anyway, a great way of contributing back to the project is to allow others to know about it so that the word spreads and other may wish to contribute, so, please, help us by placing the logo below somewhere in your site to indicate that you are using uses and supporting the Cocoon Project.
Thank you very much.
Copyright (c) 1999 The
Java Apache Project.
$Id: index.html,v 1.23 1999/10/28 13:23:02 stefano Exp $
All rights reserved.