<!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>Apache Chemistry Incubation Status - 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='Apache+Chemistry+Incubation+Status'><img src="../images/redarrow.gif" />Apache Chemistry Incubation Status</h2>
<div class="section-content">
<p>This page tracks the project status, incubator-wise. For more general
         project status, look on the project website.</p>
<p><span class="graduated">The Chemistry project graduated on 2010-02-16</span></p>
</div>
        <h2 id='Description'><img src="../images/redarrow.gif" />Description</h2>
<div class="section-content">
<p>
        Apache Chemistry is an implementation of the OASIS CMIS specification
        in Java, Python and PHP.
      </p>
</div>
        <h2 id='News'><img src="../images/redarrow.gif" />News</h2>
<div class="section-content">
<ul>
        <li>
          2011-02-16 Project graduates to 
          <a href="http://chemistry.apache.org/">TLP</a>!
        </li>
        <li>
          2011-01-21 Second release of the OpenCMIS Java client
          and server, OpenCMIS 0.2.0-incubating
        </li>
        <li>
          2011-01-18 CMIS.net implementation in .Net started
        </li>
        <li>
          2010-09-17 First release of the OpenCMIS Java client
          and server, OpenCMIS 0.1.0-incubating
        </li>
        <li>
          2010-06-08 php-cmis-lib contribution accepted, and Richard
          McKnight added as a new committer
        </li>
        <li>
          2010-02-15 OpenCMIS contribution accepted and David Ward,
          Florian Müller, Jens Hübel, Martin Hermes, Paul Goetz and
          Stephan Klevenz added as new committers (6)
        </li>
        <li>
          2010-02-10 Nick Burch joins the project as a new mentor
        </li>
        <li>
          2010-02-10 cmislib contribution accepted and Jeff Potts added
          as a new committer
        </li>
        <li>
          2009-05-15 David Caruana added as a new committer
        </li>
        <li>
          2009-04-30 Project enters incubation
        </li>
      </ul>
</div>
        <h2 id='Project+info'><img src="../images/redarrow.gif" />Project info</h2>
<div class="section-content">
<table class="colortable" width="100%">
        <tr>
          <th>item</th>
          <th>type</th>
          <th>reference</th>
        </tr>
        <tr>
          <td>Website</td>
          <td>www</td>
          <td id="www"><a href="http://incubator.apache.org/chemistry/">http://incubator.apache.org/chemistry/</a></td>
        </tr>
        <tr>
          <td>.</td>
          <td>wiki</td>
          <td>.</td>
        </tr>
        <tr>
          <td>Mailing list</td>
          <td>dev</td>
          <td id="mail-dev">chemistry-dev@incubator.apache.org</td>
        </tr>
        <tr>
          <td>.</td>
          <td>commits</td>
          <td id="mail-commits">chemistry-commits@incubator.apache.org</td>
        </tr>
        <tr>
          <td>Bug tracking</td>
          <td>jira</td>
          <td id="tracker"><a href="https://issues.apache.org/jira/browse/CMIS">CMIS</a></td>
        </tr>
        <tr>
          <td>Source code</td>
          <td>svn</td>
          <td id="svn"><a href="https://svn.apache.org/repos/asf/incubator/chemistry/">https://svn.apache.org/repos/asf/incubator/chemistry/</a></td>
        </tr>
        <tr>
          <td>Mentors</td>
          <td>gianugo</td>
          <td>Gianugo Rabellino</td>
        </tr>
        <tr>
          <td>.</td>
          <td>jukka</td>
          <td>Jukka Zitting</td>
        </tr>
        <tr>
          <td>.</td>
          <td>nick</td>
          <td>Nick Burch</td>
        </tr>
        <tr>
          <td>Committers</td>
          <td>bs</td>
          <td>Bogdan Stefanescu</td>
        </tr>
        <tr>
          <td>.</td>
          <td>dcaruana</td>
          <td>David Caruana</td>
        </tr>
        <tr>
          <td>.</td>
          <td>dpfister</td>
          <td>Dominique Pfister</td>
        </tr>
        <tr>
          <td>.</td>
          <td>fguillaume</td>
          <td>Florent Guillaume</td>
        </tr>
        <tr>
          <td>.</td>
          <td>gabriele</td>
          <td>Gabriele Columbro</td>
        </tr>
        <tr>
          <td>.</td>
          <td>paolo</td>
          <td>Paolo Mottadelli</td>
        </tr>
        <tr>
          <td>.</td>
          <td>sfermigier</td>
          <td>Stéfane Fermigier</td>
        </tr>
        <tr>
          <td>.</td>
          <td>slacoin</td>
          <td>Stéphane Lacoin</td>
        </tr>
        <tr>
          <td>.</td>
          <td>stan</td>
          <td>Sun Seng David Tan</td>
        </tr>
        <tr>
          <td>.</td>
          <td>uncled</td>
          <td>David Nuescheler</td>
        </tr>
        <tr>
          <td>.</td>
          <td>jpotts</td>
          <td>Jeff Potts</td>
        </tr>
        <tr>
          <td>.</td>
          <td>dward</td>
          <td>David Ward</td>
        </tr>
        <tr>
          <td>.</td>
          <td>fmui</td>
          <td>Florian Müller</td>
        </tr>
        <tr>
          <td>.</td>
          <td>jens</td>
          <td>Jens Hübel</td>
        </tr>
        <tr>
          <td>.</td>
          <td>hermesm</td>
          <td>Martin Hermes</td>
        </tr>
        <tr>
          <td>.</td>
          <td>pgoetz</td>
          <td>Paul Goetz</td>
        </tr>
        <tr>
          <td>.</td>
          <td>sklevenz</td>
          <td>Stephan Klevenz</td>
        </tr>
        <tr>
          <td>.</td>
          <td>richardm</td>
          <td>Richard McKnight</td>
        </tr>
        <tr>
          <td>Extra</td>
          <td>.</td>
          <td>.</td>
        </tr>
      </table>
<p>The Chemistry PPMC consists of all the committers and mentors listed 
       above.</p>
</div>
        <h2 id='Incubation+status+reports'><img src="../images/redarrow.gif" />Incubation status reports</h2>
<div class="section-content">
<dl>
        <dt>January 2011</dt>
        <dd>
          <p>
            Apache Chemistry is an effort to provide an implementation of the 
            CMIS (Content Management Interoperability Services) specification 
            in Java, Python, PHP, JavaScript (and possibly other languages). 
            Chemistry entered incubation on April 30th, 2009.
          </p>
          <p>
            Issues to address in the move towards graduation:
          </p>
          <ul>
           <li>First non-Java release (PHP, Python)</li>
          </ul>
          <p>
            Issues for Incubator PMC or ASF Board:
          </p>
          <ul>
           <li>None.</li>
          </ul>
          <p>
            Community development since the last report:
          </p>
          <ul>
           <li>We have 8 active committers working on three sub projects. No 
               new committer has been added last quarter. There are a few 
               regular contributors of bug reports, suggestions and patches.</li>
           <li>Traffic on the dev list is steady.</li>
          </ul>
          <p>
            Project development since the last report:
          </p>
          <ul>
            <li>A second release of the Java subproject (OpenCMIS 0.2) is under way. A release candidate is available.</li>
            <li>The Java APIs have been refined and should now be stable.</li>
            <li>Continued work on the draft browser binding (JSON protocol) in the sandbox.</li>
            <li>The Python subproject (cmislib) is preparing for its first release since joining the project.</li>
            <li>The PHP subproject (phpclient) increased coverage of the spec, refined some of the existing functionality and updated documentation. Next steps are to begin preparations for the first release.</li>
          </ul>
        </dd>

        <dt>October 2010</dt>
        <dd>
          <p>
            Apache Chemistry is an effort to provide an implementation of the 
            CMIS (Content Management Interoperability Services) specification 
            in Java, Python, PHP, JavaScript (and possibly other languages). 
            Chemistry entered incubation on April 30th, 2009.
          </p>
          <p>
            Issues to address in the move towards graduation:
          </p>
          <ul>
           <li>First non-Java release (PHP, Python)</li>
          </ul>
          <p>
            Issues for Incubator PMC or ASF Board:
          </p>
          <ul>
           <li>None.</li>
          </ul>
          <p>
            Community development since the last report:
          </p>
          <ul>
           <li>None.</li>
          </ul>
          <p>
            Project development since the last report:
          </p>
          <ul>
            <li>A first release of the Java subproject (OpenCMIS 0.1) was done.</li>
            <li>Work to refine the Java APIs continues.</li>
            <li>Continued work on the draft browser binding (JSON protocol) in the sandbox. </li>
          </ul>
        </dd>

        <dt>July 2010</dt>
        <dd>
          <p>
            Apache Chemistry is an effort to provide an implementation of the 
            CMIS (Content Management Interoperability Services) specification 
            in Java, Python, PHP, JavaScript (and possibly other languages). 
            Chemistry entered incubation on April 30th, 2009.
          </p>
          <p>
            Issues to address in the move towards graduation:
          </p>
          <ul>
           <li>First Java release (an attempt has been made but there were issues).</li>
           <li>First non-Java release</li>
          </ul>
          <p>
            Issues for Incubator PMC or ASF Board:
          </p>
          <ul>
           <li>None.</li>
          </ul>
          <p>
            Community development since the last report:
          </p>
          <ul>
           <li>PHP library added, with Richard McKnight as new committer.</li>
          </ul>
          <p>
            Project development since the last report:
          </p>
          <ul>
            <li>Oasis CMIS 1.0 spec is final.</li>
            <li>Code merge OpenCMIS / Chemistry completed, only one Java code base now.</li>
            <li>Improvement / stabilization of the client API.</li>
            <li>Improvement of the online documentation in the wiki.</li>
            <li>Enhanced query integration in OpenCMIS.</li>
            <li>First prototyping around the proposed browser binding (JSON protocol) in the sandbox.</li>
            <li>More license documentations to make release candidate ASF compliant.</li>
            <li>Preparations for a first release 0.1. </li>
          </ul>
        </dd>

        <dt>April 2010</dt>
        <dd>
          <p>
            Apache Chemistry is an effort to provide a Java (and possibly 
            others, like JavaScript) implementation of the upcoming CMIS 
            (Content Management Interoperability Services) specification. 
            Chemistry entered incubation on April 30th, 2009.
          </p>
          <p>
            A list of the three most important issues to address in the move 
            towards graduation:
          </p>
          <ul>
           <li>First formal incubator release. Although this is planned, 
            there are several tasks to complete (e.g. documentation) and 
            a learning curve to climb.</li>
          </ul>
          <p>
            Any issues that the Incubator PMC or ASF Board might 
            wish/need to be aware of:
          </p>
          <p>
            There are currently no issues requiring board or Incubator PMC 
            attention.
          </p>
          <p>
            How has the community developed since the last report
          </p>
          <ul>
            <li>The OpenCMIS project (originally proposed to the Incubator 
             which also targets a Java implementation of CMIS) has joined 
             Apache Chemistry, with the following new committers - David 
             Ward, Florian Müller, Jens Hübel, Martin Hermes, Paul Goetz 
             and Stephan Klevenz</li>
            <li>Jeff Potts has contributed his Python CMIS client library 
             and became a committer</li>.
            <li>Nick Burch has joined as a new mentor</li>.
            <li>Mailing list traffic has increased 2.5 times since last quarter.</li>
          </ul>
          <p>
            How has the project developed since the last report
          </p>
          <ul>
            <li>Development continues at a steady pace, and Chemistry now 
             targets CMIS 1.0 CD07, the version of the specification 
             submitted to OASIS.</li>
            <li>Command-line Shell has been contributed (from Nuxeo).</li>
            <li>Hudson builds have been setup and stabilized.</li>
            <li>An agreement has been been met on how to merge the Chemistry 
             and OpenCMIS codebases. The merge will take place in a branch, 
             until stabilized (which should take no longer than 2 weeks).</li>
            <li>A first formal incubator release of the merged 
             Chemistry/OpenCMIS codebases is planned shortly after the merge 
             is complete.</li>
          </ul>
        </dd>

        <dt>January 2010</dt>
        <dd>
          <p>
            Apache Chemistry is an effort to provide a Java (and possibly
            others, like JavaScript) implementation of the upcoming CMIS
            specification. Chemistry entered incubation on April 30th, 2009.
          </p>
          <p>
            There are currently no issues requiring board or Incubator
            PMC attention.
          </p>
          <p>Community</p>
          <ul>
            <li>
              Another project (OpenCMIS) targetting a Java implementation
              of CMIS, like Chemistry, has been proposed to the Incubator.
              Discussions between OpenCMIS and Chemistry developers have
              identified areas of possible collaboration but the OpenCMIS
              incubation status has not moved forward.
            </li>
            <li>
              Chemistry is now being used by companies or individuals outside
              the initial developers.
            </li>
          </ul>
          <p>Development</p>
          <ul>
            <li>
              Development continues at a steady pace, mostly driven by
              Florent Guillaume.
            </li>
            <li>
              Chemistry now targets CMIS 1.0 CD 05 draft, soon to be 06.
            </li>
            <li>
              Nuxeo will contribute a command-line shell for CMIS in a few days.
            </li>
            <li>
              SOAP bindings are planned in the coming days as well.
            </li>
          </ul>
          <p>Issues before graduation</p>
          <ul>
            <li>
              Stabilize the general interest into a sustainable
              development community
            </li>
            <li>
              Set up Hudson builds.
            </li>
            <li>
              Create an Apache release of the Chemistry codebase
            </li>
          </ul>
        </dd>

        <dt>October 2009</dt>
        <dd>
          <p>
            Apache Chemistry is an effort to provide a Java (and possibly
            others, like JavaScript) implementation of the upcoming CMIS
            specification. Chemistry entered incubation on April 30th, 2009.
          </p>
          <p>
            There are currently no issues requiring board or Incubator
            PMC attention.
          </p>
          <p>Community</p>
          <ul>
            <li>No notable community changes.</li>
          </ul>
          <p>Development</p>
          <ul>
            <li>
              Development continues at a steady pace, mostly driven by
              Florent Guillaume and Gabriele Columbro.
            </li>
            <li>
              A full 0.62/0.70 CMIS AtomPub binding TCK contributed and
              maintained against the spec by David Caruana
            </li>
            <li>
              The codebase is currently split to two branches, targeting
               different draft versions of CMIS.
            </li>
          </ul>
          <p>Infrastructure</p>
          <ul>
            <li>
              Chemistry is planning to use repository.apache.org as
              a Maven deployment target
            </li>
          </ul>
          <p>Issues before graduation</p>
          <ul>
            <li>
              Stabilize the general interest into a sustainable
              development community
            </li>
            <li>
              Make sure that all licensing details conform with Apache policies
            </li>
            <li>
              Create an Apache release of the Chemistry codebase
            </li>
          </ul>
        </dd>

        <dt>July 2009</dt>
        <dd>
          <p>
            Apache Chemistry is an effort to provide a Java (and possibly
            others, like JavaScript) implementation of the upcoming CMIS
            specification. Chemistry entered incubation on April 30th, 2009.
          </p>
          <p>
            There are currently no issues requiring board or Incubator
            PMC attention.
          </p>
          <p>Community</p>
          <ul>
            <li>
              David Caruana has been voted in as committer and member
              of the PPMC.
            </li>
          </ul>
          <p>Software</p>
          <ul>
            <li>David Caruana offered contribution of Client Test Harness</li>
          </ul>
          <p>Licensing and other issues</p>
          <ul>
            <li>None at the moment.</li>
          </ul>
          <p>Issues before graduation:</p>
          <ul>
            <li>
              Stabilize the general interest and energy into a sustainable
              development community
            </li>
            <li>
              Make sure that all licensing details conform with Apache policies
            </li>
            <li>
              Create an Apache release of the Chemistry codebase
            </li>
          </ul>
        </dd>

        <dt>June 2009</dt>
        <dd>
          <p>
            Apache Chemistry is an effort to provide a Java (and possibly
            others, like JavaScript) implementation of the upcoming CMIS
            specification. Chemistry entered incubation on April 30th, 2009.
          </p>
          <p>
            The incubation process has started well. All the project
            infrastructure is in place and all initial committers have
            their Apache accounts. We even increased the headcount of the
            initial team as David Caruana joined the project as a new committer.
          </p>
          <p>
            Development of the Chemistry codebase has moved to Apache svn and
            there's been a number or related discussions on the mailing list.
            Overall the project is still in a startup phase as people are
            getting oriented with the scope and structure of the project.
            A number of license headers were updated to match Apache policies.
          </p>
          <p>Issues before graduation:</p>
          <ul>
            <li>
              Stabilize the general interest and energy into a sustainable
              development community
            </li>
            <li>
              Make sure that all licensing details conform with Apache policies
            </li>
            <li>
              Create an Apache release of the Chemistry codebase
            </li>
          </ul>
        </dd>

        <dt>May 2009</dt>
        <dd>
          <p>
            Apache Chemistry is an effort to provide a Java (and possibly
            others, like JavaScript) implementation of the upcoming CMIS
            specification. Chemistry entered incubation on April 30th, 2009.
          </p>
          <p>
            The Chemistry project has just entered incubation and we've been
            busy getting started with everything. Most of the project
            infrastructure is already in place, all the CLAs have been
            received, and the initial codebases are now in Apache svn.
          </p>
          <p>
            Many Chemistry developers had a chance to meet in person in the
            CMIS PlugFest at the end of April, and the resulting energy has
            been visible also on the new Chemistry mailing lists. Among the
            results are updates to the core Chemistry codebase, a new
            JavaScript-based CMIS client codebase, and a proposal to
            contribute a Flex/Air -based CMIS explorer.
          </p>
          <p>Issues before graduation:</p>
          <ul>
            <li>
              Stabilize the general interest and energy into a sustainable
              development community
            </li>
            <li>
              Make sure that license headers and other details conform with
              Apache policies
            </li>
            <li>
              Create an Apache release of the Chemistry codebase
            </li>
          </ul>
        </dd>
      </dl>
</div>
        <h2 id='Incubation+work+items'><img src="../images/redarrow.gif" />Incubation work items</h2>
<div class="section-content">
<h3 id='Project+Setup'>Project Setup</h3>
<div class="section-content">
<p>This is the first phase on incubation, needed to start the project at Apache.</p>
<p>
          <em>Item assignment is shown by the Apache id.</em>
          <em>Completed tasks are shown by the completion date (YYYY-MM-dd).</em>
        </p>
<h4 id='Identify+the+project+to+be+incubated'>Identify the project to be incubated</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2009-04-30</td>
              <td>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.</td>
            </tr>
            <tr>
              <td>2009-04-30</td>
              <td>If request from an existing Apache project to adopt an external
                  package, then ask the Apache project for the SVN module and mail
                  address names.</td>
            </tr>
            <tr>
              <td>2009-04-30</td>
              <td>If request from outside Apache to enter an existing Apache project,
                  then post a message to that project for them to decide on acceptance.</td>
            </tr>
            <tr>
              <td>....-..-..</td>
              <td>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.</td>
            </tr>
          </table>
</div>
<h4 id='Interim+responsibility'>Interim responsibility</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2009-04-30</td>
              <td>Identify all the Mentors for the incubation, by asking all that can
                  be Mentors.</td>
            </tr>
            <tr>
              <td>2009-04-30</td>
              <td>Subscribe all Mentors on the pmc and general lists.</td>
            </tr>
            <tr>
              <td>2009-04-30</td>
              <td>Give all Mentors access to the incubator SVN repository. 
                (to be done by the Incubator PMC chair or an Incubator PMC
                Member wih karma for the authorizations file)</td>
            </tr>
            <tr>
              <td>2009-04-30</td>
              <td>Tell Mentors to track progress in the file 'incubator/projects/{project.name}.html'</td>
            </tr>
          </table>
</div>
<h4 id='Copyright'>Copyright</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2009-04-30</td>
              <td>Check and make sure that 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.
              </td>
            </tr>
            <tr>
              <td>2009-08-16</td>
              <td>Check and make sure that the files that have been donated have been
                  updated to reflect the new ASF copyright.</td>
            </tr>
          </table>
</div>
<h4 id='Verify+distribution+rights'>Verify distribution rights</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2010-09-17</td>
              <td>Check and make sure that for all code included with the distribution
                  that is not under the Apache license, we have the right to combine
                  with Apache-licensed code and redistribute.
               </td>
            </tr>
            <tr>
              <td>2010-09-17</td>
              <td>Check and make sure that all source code distributed by the project
                  is 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.</td>
            </tr>
          </table>
</div>
<h4 id='Establish+a+list+of+active+committers'>Establish a list of active committers</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2009-08-16</td>
              <td>Check that all active committers have submitted a contributors
                  agreement.</td>
            </tr>
            <tr>
              <td>2009-08-16</td>
              <td>Add all active committers in the STATUS file.</td>
            </tr>
            <tr>
              <td>2009-08-16</td>
              <td>Ask root for the creation of committers' accounts on
                  people.apache.org.</td>
            </tr>
          </table>
</div>
<h4 id='Infrastructure'>Infrastructure</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2009-04-30</td>
              <td>Ask infrastructure to create source repository modules and grant the
                  committers karma.</td>
            </tr>
            <tr>
              <td>2009-04-30</td>
              <td>Ask infrastructure to set up and archive Mailing lists.</td>
            </tr>
            <tr>
              <td>2009-04-30</td>
              <td>Decide about and then ask infrastructure to setup an issuetracking
                  system (Bugzilla, Scarab, Jira).</td>
            </tr>
            <tr>
              <td>2009-08-16</td>
              <td>Migrate the project to our infrastructure.</td>
            </tr>
          </table>
</div>
<h4 id='Project+specific'>Project specific</h4>
<div class="section-content">
<p>
            <em>Add project specific tasks here.</em>
          </p>
</div>
</div>
<h3 id='Incubation'>Incubation</h3>
<div class="section-content">
<p>These action items have to be checked for during the whole incubation process.</p>
<p>
          <em>These items are not to be signed as done during incubation, as they
              may change during incubation.</em>
          <em>They are to be looked into and described in the status reports and
              completed in the request for incubation signoff.</em>
        </p>
<h4 id='Collaborative+Development'>Collaborative Development</h4>
<div class="section-content">
<ul>
            <li>Have all of the active long-term volunteers been identified and
                acknowledged as committers on the project?
            </li>
            <li>Are there three or more independent committers? (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.)</li>
            <li>Are project decisions being made in public by the committers?</li>
            <li>Are the decision-making guidelines published and agreed to by all of
                the committers?</li>
          </ul>
</div>
<h4 id='Licensing+awareness'>Licensing awareness</h4>
<div class="section-content">
<ul>
            <li>Are all licensing, trademark, credit issues being taken care of and
                acknowleged by all committers?</li>
          </ul>
</div>
<h4 id='Project+Specific'>Project Specific</h4>
<div class="section-content">
<p>
            <em>Add project specific tasks here.</em>
          </p>
</div>
</div>
<h3 id='Exit'>Exit</h3>
<div class="section-content">
<p>
          <em>Things to check for before voting the project out.</em>
        </p>
<h4 id='Organizational+acceptance+of+responsibility+for+the+project'>Organizational acceptance of responsibility for the project</h4>
<div class="section-content">
<ul>
            <li>If graduating to an existing PMC, has the PMC voted to accept it?</li>
            <li>If graduating to a new PMC, has the board voted to accept it?</li>
          </ul>
</div>
<h4 id='Incubator+sign-off'>Incubator sign-off</h4>
<div class="section-content">
<ul>
            <li>Has the Incubator decided that the project has accomplished all of
                the above tasks?</li>
          </ul>
</div>
</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>
