<?xml version="1.0" encoding="UTF-8"?><!--
      Licensed to the Apache Software Foundation (ASF) under one
      or more contributor license agreements.  See the NOTICE file
      distributed with this work for additional information
      regarding copyright ownership.  The ASF licenses this file
      to you under the Apache License, Version 2.0 (the
      "License"); you may not use this file except in compliance
      with the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

      Unless required by applicable law or agreed to in writing,
      software distributed under the License is distributed on an
      "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
      KIND, either express or implied.  See the License for the
      specific language governing permissions and limitations
      under the License.
    -->
<document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/XDOC/2.0" xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
  <properties>
    <title>Cocoon Main Site - Welcome</title>
    <author email="cocoon-docs@apache.org">Apache Cocoon Documentation Team</author>
  </properties>
  <body>
    <div id="intro">
      <div>
        <section name="What is Apache Cocoon?" style="background:none;padding:0;border:0;"/>
        <p>Apache Cocoon is a 
          <a href="http://www.springframework.org">Spring-based</a>
          framework (since version 2.2 of Cocoon) built around the concepts of separation
          of concerns and component-based development.
        </p>
        <p>Cocoon implements these concepts around the notion of 
          <strong>component
            pipelines
          </strong>, each component on the pipeline specializing on a particular
          operation. 
          <a href="1363_1_1.html">[more]</a>
        </p>
        <section name="What are Cocoon blocks?" style="background:none;padding:0;border:0;"/>
        <p>A block is the unit of modularization in Cocoon (Eclipse uses the term
          plugins, OSGi uses bundles). Everything that goes beyond ...
          <a href="1363_1_1.html">[more]</a>
        </p>
      </div>
    </div>
    <div id="contentBody" class="withSidebar">
      <div id="bodyText">
        <div id="getting">
          <div id="gettingStarted" style="height:18em;">
            <div>
              <img alt="Getting Started" src="images/getting-started.gif"/>
            </div>
            <section name="Getting Started" style="background:none;padding:0;"/>
            <div style="clear:both;padding:0;background:none;">
            <ul>
              <li>
                <a href="2.2/1159_1_1.html">First Cocoon app</a>
              </li>
              <li>
                <a href="2.2/1290_1_1.html">Write XML pipelines</a>
              </li>
              <li>
                <a href="2.2/1291_1_1.html">Modularize Cocoon [Blocks]</a>
              </li>
              <li>
                <a href="2.2/1362_1_1.html">Deployment</a>
              </li>
              <li>
                <a href="2.2/1448_1_1.html">Screencasts</a>
              </li>
            </ul>
            </div>
          </div>
          <div id="gettingBetter" style="height:18em;">
            <div>
              <img alt="Getting Better" src="images/getting-better.gif"/>
            </div>
            <section name="Getting Better" style="background:none;padding:0;"/>
            <div style="clear:both;padding:0;background:none;">
            <ul>
              <li>
                <a href="1288_1_1.html">Articles</a>, 
                <a href="1287_1_1.html">presentations</a>
                and 
                <a href="1289_1_1.html">books</a>
              </li>
              <li>All-in-one PDF</li>
              <li>
                <a href="1286_1_1.html">About the documentation</a>
              </li>
            </ul>
            </div>
          </div>
          <div id="gettingInvolved" style="height:18em;">
            <div>
              <img alt="Getting Involved" src="images/getting-involved.gif"/>
            </div>
            <section name="Getting Involved" style="background:none;padding:0;"/>
            <div style="clear:both;padding:0;background:none;">
            <ul>
              <li>
                <a href="1273_1_1.html">How to contribute?</a>
              </li>
              <li>
                <a href="1275_1_1.html">Filing a bug report</a>
              </li>
              <li>
                <a href="team-list.html">Who we are?</a>
              </li>
              <li>
                <a href="http://www.apache.org/foundation/sponsorship.html">Sponsoring
                  Apache
                </a>
              </li>
              <li>
                <a href="http://www.apache.org/foundation/thanks.html">Apache Sponsors<br/>
                  Thanks
                </a>
              </li>
            </ul>
            </div>
          </div>
          <div id="gettingDownload" style="height:18em;">
            <div class="downloadVersion">Apache Cocoon
              <br/>
              <a href="1284_1_1.html">Version 2.2.0</a>
            </div>
            <div class="moreDownload">Other releases are on the <a href="1284_1_1.html">download page</a>.
            </div>
          </div>
        </div>
        <h1>News</h1>
        <div class="news">
          <dl class="news">
            <dt>Apache Cocoon Integration Test Framework 1.0.1 and Servlet Service Implementation 1.3.2</dt>
            <dd>The Apache Cocoon team is pleased to announce the release of subprojects Cocoon Integration Test 
              Framework 1.0.1 and Servlet Service Implementation 1.3.2.
            [<a href="news-cocoon-it-fw_cocoon-servlet-service-impl_new-release.html">more</a>] 
            </dd>
            <dd class="newsMeta">submitted by Francesco Chicchiriccò, 12/17/12 12:30:00 CET</dd>
          </dl>
          <dl class="news">
            <dt>Apache Cocoon Subprojects New Releases</dt>
            <dd>During the last weeks the Apache Cocoon Community released a new version of each one of 11 subprojects
            currently managed.
            Subprojects are libraries, shared by different Apache Cocoon versions, that can be used independently from 
            the rest of Cocoon (1.x, 2.x 3.x), or any of its parts (such as sitemap, pipelines, blocks, etc.).
            [<a href="news-subprojects-new-release.html">more</a>] 
            </dd>
            <dd class="newsMeta">submitted by Francesco Chicchiriccò, 07/02/12 09:30:00 CET</dd>
          </dl>
          <dl class="news">
            <dt>Looking for samples?</dt>
            <dd>In case you have been wondering where the good old Cocoon samples were gone, we have just restored 
            <a href="http://cocoon.zones.apache.org">our jail</a>, currently with Cocoon 3.0 and Cocoon 2.1 samples.
            </dd>
            <dd class="newsMeta">submitted by Francesco Chicchiriccò, 03/20/12 13:12:00 GMT</dd>
          </dl>
          <dl class="news">
            <dt>Apache Cocoon 3.0.0-alpha-3 Released</dt>
            <dd>The Apache Cocoon Community is proud to announce the release of Cocoon 3.0.0-alpha-3.
              Apache Cocoon 3 is a major rewrite of Cocoon 2.2.
              Like Cocoon 2 it is based around the concept of pipelines and sitemaps and it is very
              similar to Cocoon 2.2 in many respects but is slimmed down and
              designed to be *easily usable from within any Java environment*.
              [<a href="news-c3-alpha-3-released.html">more</a>] 
            </dd>
            <dd class="newsMeta">submitted by Simone Tripodi, 07/01/11 09:35:37 GMT</dd>
          </dl>
        </div>
        <a href="1279_1_1.html">News Archive</a>
        <br/><br/><br/>
        <div class="includedDoc">
          <div id="contentBody">
            <div id="bodyText">
              <h1 class="docTitle">Versions &amp; Download</h1>
              <section name="Cocoon 2.2 (stable)" style="background:none;padding:0;"/>Our latest version of Cocoon is 2.2. The best way to get familiar with Cocoon
              2.2 and how to use it together with Maven 2 is the 
              <a href="2.2/1159_1_1.html">Getting
                started tutorial
              </a>. If you follow that path, Maven 2 will take care of
              downloading all (transitive) dependencies.However, there is also a 
              <em>Getting Started package</em> that contains a
              simple Cocoon 2.2 based application that uses Apache Ant as build system.
              <table class="bodyTable">
                <tbody>
                  <tr class="a">
                    <th>
                      Artifact
                    </th>
                    <th>
                      Description
                    </th>
                    <th>
                      Download
                    </th>
                    <th>
                      Verify
                    </th>
                  </tr>
                  <tr class="b">
                    <td>
                      <strong>Cocoon 2.2.0</strong>
                    </td>
                    <td>
                      Cocoon Core (pipelines, sitemaps, servlet): sources, binaries, javadocs and
                      docs.
                    </td>
                    <td>

                      <a href="http://www.apache.org/dyn/closer.cgi/cocoon/2.2/cocoon-2.2.0.zip">cocoon-2.2.0.zip</a>
                      <br/>
                      <a href="http://www.apache.org/dyn/closer.cgi/cocoon/2.2/cocoon-2.2.0.tar.gz">
                        cocoon-2.2.0.tar.gz
                      </a>
                    </td>
                    <td>

                      <a href="http://www.apache.org/dyn/closer.cgi/cocoon/2.2/cocoon-2.2.0.zip.asc">pgp</a>
                      <a href="http://www.apache.org/dyn/closer.cgi/cocoon/2.2/cocoon-2.2.0.zip.md5">md5</a>
                      <a href="http://www.apache.org/dyn/closer.cgi/cocoon/2.2/cocoon-2.2.0.zip.sha1">sha1</a>
                      <br/>
                      <a href="http://www.apache.org/dyn/closer.cgi/cocoon/2.2/cocoon-2.2.0.tar.gz.asc">
                        pgp
                      </a>
                      <a href="http://www.apache.org/dyn/closer.cgi/cocoon/2.2/cocoon-2.2.0.tar.gz.md5">md5</a>
                      <a href="http://www.apache.org/dyn/closer.cgi/cocoon/2.2/cocoon-2.2.0.tar.gz.sha1">sha1</a>

                    </td>
                  </tr>
                  <tr class="a">
                    <td>
                      <p>
                        <strong>Getting Started 2.2.0</strong>
                      </p>
                    </td>
                    <td>
                      <p>A simple web application based on Cocoon 2.2 that makes use of blocks and
                        servlet services.
                      </p>
                    </td>
                    <td>
                      <p>
                        <a href="http://www.apache.org/dyn/closer.cgi/cocoon/2.2/cocoon-getting-started/cocoon-getting-started-2.2.0.zip">cocoon-getting-started-2.2.0-zip</a>
                        <br/>
                        <a href="http://www.apache.org/dyn/closer.cgi/cocoon/2.2/cocoon-getting-started/cocoon-getting-started-2.2.0.tar.gz">
                          cocoon-getting-started-2.2.0.tar.gz
                        </a>
                      </p>
                    </td>
                    <td>
                      <p>
                        <a href="http://www.apache.org/dyn/closer.cgi/cocoon/2.2/cocoon-getting-started/cocoon-getting-started-2.2.0.zip.asc">pgp</a>
                        <a href="http://www.apache.org/dyn/closer.cgi/cocoon/2.2/cocoon-getting-started/cocoon-getting-started-2.2.0.zip.md5">md5</a>
                        <a href="http://www.apache.org/dyn/closer.cgi/cocoon/2.2/cocoon-getting-started/cocoon-getting-started-2.2.0.zip.sha1">sha1</a>
                        <br/>
                        <a href="http://www.apache.org/dyn/closer.cgi/cocoon/2.2/cocoon-getting-started/cocoon-getting-started-2.2.0.tar.gz.asc">
                          pgp
                        </a>
                        <a href="http://www.apache.org/dyn/closer.cgi/cocoon/2.2/cocoon-getting-started/cocoon-getting-started-2.2.0.tar.gz.md5">md5</a>
                        <a href="http://www.apache.org/dyn/closer.cgi/cocoon/2.2/cocoon-getting-started/cocoon-getting-started-2.2.0.tar.gz.sha1">sha1</a>
                      </p>
                    </td>
                  </tr>
                </tbody>
              </table>
              <p>Cocoon 2.2 was split up into smaller units called blocks. Everything that
                goes beyond what Cocoon provides in its core modules (Spring integration,
                sitemap and pipeline implementation) is provided as block. Blocks can be
                downloaded separately. In order to get an overview of what blocks are available,
                use the 
                <a href="2.2/blocks/1204_1_1.html">list of blocks</a>.
              </p>
              <section name="Cocoon 2.1 (stable)" style="background:none;padding:0;"/>
              <p>The latest stable release of Cocoon 2.1.x  is 2.1.11.
                <a href="http://cocoon.apache.org/mirror.cgi">Downloads</a> and
                <a href="http://cocoon.apache.org/2.1/">documentation</a> are available.
              </p>
              <section name="Previous versions" style="background:none;padding:0;"/>
              <p>Older versions of Cocoon are 
                <a href="2.0/">2.0</a> and
                <a href="1.x/">1.x</a>. It is not recommended to start a new project based on
                one of them.
              </p>
            </div>
          </div>
        </div>
      </div>
    </div>
  </body>
</document>