<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
  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. 
-->
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="stylesheet" href="../style/bootstrap-1-3-0-min.css" type="text/css" />
  <link rel="stylesheet" href="../style/style.css" type="text/css" />
  <script src="https://www.apachecon.com/event-images/snippet.js"></script>
        <title>lenya
 - Apache Incubator</title>
  
 </head>
 <body>
 <div class="container">
  <div class="row"><div class="span6"><a href="https://www.apache.org/"><img src="http://www.apache.org/img/asf_logo.png" alt="The Apache Software Foundation" border="0" style="margin-top: 2px" height="88"/></a></div>
<div class="span7"><a href="/"><img src="https://incubator.apache.org/images/incubator_feather_egg_logo_sm.png" alt="The Apache Software Foundation Incubator" border="0" style="margin-top: 2px" height="88"/></a></div>
<div class="span2"><a href="https://www.apache.org/foundation/contributing.html"><img src="https://www.apache.org/images/SupportApache-small.png" height="100" width="100"/></a></div>
</div>
  <div class="row"><div class="span16"><hr noshade="noshade" size="1"/></div></div>
  <div class="row">
   <div class="span4">
    <form action="http://www.google.com/search" method="get">
     <input value="incubator.apache.org" name="sitesearch" type="hidden"/>
     <input size="20" name="q" id="query" type="text" value="search..."
      onclick="if(this.value == 'search...') {this.value = ''}"/>
     <input name="Search" value="Go" type="submit"/>
    </form>
          <div class="menuheader">General</div>
    <menu compact="compact">
          <li><a href="../index.html">Welcome</a></li> 
          <li><a href="../cookbook/">Incubator Cookbook</a></li> 
          <li><a href="../policy/incubation.html">Incubation Policy</a></li> 
          <li><a href="../guides/roles_and_responsibilities.html">Roles and Responsibilities</a></li> 
          <li><a href="../faq.html">General FAQ</a></li> 
          <li><a href="http://wiki.apache.org/incubator">Incubator Wiki</a></li> 
          <li><a href="../whoweare.html">Who We Are</a></li> 
            </menu>
      <div class="menuheader">Status</div>
    <menu compact="compact">
          <li><a href="../projects">Project List</a></li> 
          <li><a href="../clutch">Clutch Report</a></li> 
          <li><a href="../ip-clearance">IP Clearance</a></li> 
            </menu>
      <div class="menuheader">Entry Guides</div>
    <menu compact="compact">
          <li><a href="../guides/proposal.html">Proposal Guide</a></li> 
            </menu>
      <div class="menuheader">Podling Guides</div>
    <menu compact="compact">
          <li><a href="../guides/committer.html">Podling Committers</a></li> 
          <li><a href="../guides/ppmc.html">Podling PMC (PPMC)</a></li> 
          <li><a href="../guides/mentor.html">Podling Mentor</a></li> 
          <li><a href="../guides/releasemanagement.html">Podling Releases</a></li> 
          <li><a href="../guides/branding.html">Podling Branding/Publicity</a></li> 
          <li><a href="../guides/sites.html">Podling Websites</a></li> 
          <li><a href="../guides/graduation.html">Graduation</a></li> 
          <li><a href="../guides/retirement.html">Retirement</a></li> 
            </menu>
      <div class="menuheader">Other Guides</div>
    <menu compact="compact">
          <li><a href="../guides/participation.html">Participation</a></li> 
          <li><a href="../faq.html">General FAQ</a></li> 
          <li><a href="../guides/chair.html">IPMC Chair</a></li> 
          <li><a href="../guides/lists.html">Mailing Lists</a></li> 
          <li><a href="../guides/website.html">Incubator Website</a></li> 
            </menu>
      <div class="menuheader">ASF</div>
    <menu compact="compact">
          <li><a href="http://www.apache.org/foundation/how-it-works.html">How Apache Works</a></li> 
          <li><a href="http://www.apache.org/dev/">Developer Documentation</a></li> 
          <li><a href="http://www.apache.org/foundation/">Foundation</a></li> 
          <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsor Apache</a></li> 
          <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> 
            </menu>
    <div id="menuheader">
      <a class="acevent" data-format="square" data-width="135" data-mode="light" data-event="random"></a>
    </div>
   </div>
   
   <div class="span12">
            <h2 id='Lenya+Project+Incubation+status'><img src="../images/redarrow.gif" />Lenya Project Incubation status
</h2>
<div class="section-content">
<p>This page tracks the project status, incubator-wise. Items marked

        <strong>DONE
</strong>have been completed.

      </p>
<p><span class="graduated">The Lenya project graduated on 2004-08</span></p>
</div>
        <h2 id='News'><img src="../images/redarrow.gif" />News
</h2>
<div class="section-content">
<h3 id='2004-8-17'>2004-8-17
</h3>
<div class="section-content">
<ul>
          <li>The Apache Lenya project has completed it's incubation tasks and is

            <a href="http://cvs.apache.org/viewcvs.cgi/cocoon-lenya/proposal.pmc.txt?view=auto">requesting
</a>to graduate to a top-level project.

          </li>
        </ul>
<ul>
          <li>The project has voted in one new commiter, Andreas Kuckartz.
</li>
        </ul>
<ul>
          <li>A move to SVN after the graduation was decided.
</li>
        </ul>
</div>
<h3 id='2004-6-11'>2004-6-11
</h3>
<div class="section-content">
<ul>
          <li>The Apache Lenya project has been busy the last few months to get the
1.2 release out.
</li>
        </ul>
<ul>
          <li>The project saw an increase in mailing list traffic for both the user
and developer lists; the number of sites deploying Lenya is growing.
Dale Christ was voted in as a new commiter, while Thorsten Scherler
became an active commiter again.
</li>
        </ul>
<ul>
          <li>A

            <a href="http://olr.kbs.uni-hannover.de:8080/lenya/">public demo site
</a>turned out to be a useful resource for users to try out Lenya and for
developers to quickly confirm bug reports. A

            <a href="http://wiki.cocoondev.org/Wiki.jsp?page=LenyaSprintZurich20040514">Sprint
</a>brought developers together for 2 days in Zurich to work on
Repository Integration. The sprint was very productive and will be
repeated in the future.

          </li>
        </ul>
</div>
<h3 id='2004-1-20'>2004-1-20
</h3>
<div class="section-content">
<p>A release candidate for the 1.2 release has been released, 6 bugs
remaining. A new commiter (Rolf Kulemann) has been accepted.
</p>
</div>
<h3 id='2003-11-15'>2003-11-15
</h3>
<div class="section-content">
<p>Team ramping up to 1.2 release. First independent patches are
received, people are starting to use Lenya for live sites.
</p>
</div>
</div>
        <h2 id='Project+Website'><img src="../images/redarrow.gif" />Project Website
</h2>
<div class="section-content">
<p>The website for Lenya is at

        <a href="http://cocoon.apache.org/lenya/">http://cocoon.apache.org/lenya/
</a>
      </p>
<p>This page tracks the project status, incubator-wise. Items marked

        <strong>DONE
</strong>have been completed.

      </p>
</div>
        <h2 id='Identify+the+project+to+be+incubated'><img src="../images/redarrow.gif" />Identify the project to be incubated
</h2>
<div class="section-content">
<p>
        <strong>DONE
</strong>Make sure that the requested project name does not already exist and
check www.nameprotect.com to be sure that the name is not already
trademarked for an existing software product.

      </p>
<p>
        <strong>DONE
</strong>If request from an existing Apache project to adopt an external
package, then ask the Apache project for the cvs module and mail
address names.

      </p>
<p>
        <strong>DONE
</strong>If request from outside Apache to enter an existing Apache project,
then post a message to that project for them to decide on acceptance.

      </p>
<p>
        <strong>DONE
</strong>If request from anywhere to become a stand-alone PMC, then assess the
fit with the ASF, and create the lists and modules under the
incubator address/module names if accepted.

      </p>
</div>
        <h2 id='Interim+responsibility'><img src="../images/redarrow.gif" />Interim responsibility
</h2>
<div class="section-content">
<p>
        <strong>DONE
</strong>Who has been identified as the shepherd for the incubation?

      </p>
<p>
        <strong>Stefano Mazzocchi
</strong>
        <strong>Nicola Ken Barozzi
</strong>
      </p>
<ul>
        <li>Are they tracking progress in the file
</li>
      </ul>
<p>incubator/projects/{project_name}/STATUS (

        <em>No, we are tracking it in incubator/projects/lenya.cwiki.
</em>)

      </p>
</div>
        <h2 id='Copyright'><img src="../images/redarrow.gif" />Copyright
</h2>
<div class="section-content">
<p>
        <strong>DONE
</strong>Have the papers that transfer rights to the ASF been received? It is
only necessary to transfer rights for the package, the core code, and
any new code produced by the project.

      </p>
<p>
        <strong>DONE
</strong>Have the files been updated to reflect the new ASF copyright?

      </p>
<p>Verify distribution rights:
</p>
<p>
        <strong>DONE
</strong>For all code included with the distribution that is not under the
Apache license, do we have the right to combine with Apache-licensed
code and redistribute?

      </p>
<p>
        <strong>DONE
</strong>Is all source code distributed by the project covered by one or more
of the following approved licenses: Apache, BSD, Artistic, MIT/X,
MIT/W3C, MPL 1.1, or something with essentially the same terms?

      </p>
</div>
        <h2 id='Establish+a+list+of+active+committers'><img src="../images/redarrow.gif" />Establish a list of active committers
</h2>
<div class="section-content">
<p>
        <strong>DONE
</strong>Are all active committers in the STATUS file?

      </p>
<ul>
        <ul>
          <li>Andreas Hartmann
</li>
          <li>Andreas Kuckartz
</li>
          <li>Christian Egli
</li>
          <li>Dale Christ
</li>
          <li>Edith Chevrier
</li>
          <li>Gregor J. Rothfuss
</li>
          <li>Michael Wechner
</li>
          <li>Rolf Kulemann
</li>
          <li>Thorsten Scherler
</li>
        </ul>
      </ul>
<p>4 of 9 commiters are independant, which is less than 50%. A recent
discussion on the general mailing list deemed this to be sufficient,
though.
</p>
<p>
        <strong>DONE
</strong>Do they have accounts on cvs.apache.org?

      </p>
<p>
        <strong>DONE
</strong>Have they submitted a contributors agreement?

      </p>
</div>
        <h2 id='Infrastructure'><img src="../images/redarrow.gif" />Infrastructure
</h2>
<div class="section-content">
<p>
        <strong>DONE
</strong>CVS modules created and committers added to avail file?

      </p>
<p>
        <strong>DONE
</strong>Mailing lists set up and archived?

      </p>
<p>
        <strong>DONE
</strong>Problem tracking system (Bugzilla)?

      </p>
<p>
        <strong>DONE
</strong>Has the project migrated to our infrastructure?

      </p>
</div>
        <h2 id='Collaborative+Development'><img src="../images/redarrow.gif" />Collaborative Development
</h2>
<div class="section-content">
<p>
        <strong>DONE
</strong>Have all of the active long-term volunteers been identified and
acknowledged as committers on the project?

      </p>
<p>
        <strong>DONE
</strong>Are there three or more independent committers?

      </p>
<p>(The legal definition of independent is long and boring, but
basically it means that there is no binding relationship between the
individuals, such as a shared employer, that is capable of overriding
their free will as individuals, directly or indirectly.)
</p>
<p>
        <strong>DONE
</strong>Are project decisions being made in public by the committers?

      </p>
<ul>
        <li>Are the decision-making guidelines published and agreed to by all of
the committers?
</li>
      </ul>
</div>
        <h2 id='Organizational+acceptance+of+responsibility+for+the+project'><img src="../images/redarrow.gif" />Organizational acceptance of responsibility for the project
</h2>
<div class="section-content">
<ul>
        <li>If graduating to an existing PMC, has the PMC voted to accept it?
</li>
      </ul>
<ul>
        <li>If graduating to a new PMC, has the board voted to accept it?
</li>
      </ul>
</div>
        <h2 id='Incubator+sign-off'><img src="../images/redarrow.gif" />Incubator sign-off
</h2>
<div class="section-content">
<p>
        <strong>DONE
</strong>
      </p>
<ul>
        <li>Has the Incubator decided that the project has accomplished all of
the above tasks?
</li>
      </ul>
<h3 id='Open+incubation+tasks'>Open incubation tasks
</h3>
<div class="section-content">
<p>None.
</p>
</div>
</div>
       </div>
   </div>
  
   <div class="row"><div class="span16"><hr noshade="noshade" size="1"/></div></div>
  <div class="row">
   <div class="span16 footer">
     Copyright &#169; 2009-2024 The Apache Software Foundation<br />
     Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br/>
     Apache Incubator, Apache, the Apache feather logo, and the Apache Incubator project logo are trademarks of The Apache Software Foundation.
     
     
    </div>
  </div>
 </div> 
 </body>
</html>
