<!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>Graffito - 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='Graffito+Project+Incubation+Status'><img src="../images/redarrow.gif" />Graffito Project 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="retired">The Graffito project retired on 2007-07-11</span></p>
</div>
        <h2 id='Description'><img src="../images/redarrow.gif" />Description</h2>
<div class="section-content">
<p>
        Graffito (formerly JCMS) is dedicated to build a complete CMS
        solution on top of existing content management frameworks
        (like Slide or Jackrabbit). One of the design goals of Graffito
        is to be easily integrated in a JSR-168 portal environment like
        Pluto or Jetspeed 2.
      </p>
</div>
        <h2 id='News'><img src="../images/redarrow.gif" />News</h2>
<div class="section-content">
<dl>
        <dt>2007 April</dt>
        <dd>
          <p>
            The JCR Mapping component was transferred into the Apache
            Jackrabbit project.
          </p>
        </dd>
        <dt>2006 January</dt>
        <dd>
          <p>1 new committer joins the team (Alexandru Popescu).</p>
          <p>
            Jetspeed 2 integration is almost finished. We plan to build a
            Graffito implementation for the Jetspeed 2 Page Manager.
          </p>
          <p>Version 1.0-a1-dev is almost finished.</p>
          <p>
            The JCR mapping tools support basic mapping strategies. Now, we
            are working on more advance strategy like inheritance,interface, ...
          </p>
        </dd>
        <dt>2005 June</dt>
        <dd>
          <p>
            Graffito is still under incubation. See on the Graffito incubation
            page to get more information.
          </p>
          <p>
            2 new committers join the team (Oliver and Sandro). They are mainly
            focus on the JCR Mapping tools.
          </p>
          <p>
            Version 1.0-a1-dev is on good way, some portlets are availables,
            see the maven report to follow the developement process.
          </p>
        </dd>
        <dt>2004 December</dt>
        <dd>
          <p>
            Graffito developement is just incubating in the ASF. The code
            is not 100% stable and not all Graffito features are implemented.
          </p>
          <p>
            Obviously, you are welcome to send your comments and to contribute!
          </p>
        </dd>
      </dl>
</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>
            <a href="http://incubator.apache.org/graffito/">http://incubator.apache.org/graffito/</a>
          </td>
        </tr>
        <tr>
          <td>.</td>
          <td>wiki</td>
          <td>.</td>
        </tr>
        <tr>
          <td>Mailing list</td>
          <td>dev</td>
          <td>graffito-dev@incubator.apache.org</td>
        </tr>
        <tr>
          <td>.</td>
          <td>svn</td>
          <td>graffito-commits@incubator.apache.org</td>
        </tr>
        <tr>
          <td>Bug tracking</td>
          <td>jira</td>
          <td>
            <a href="http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10661">http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10661</a>
          </td>
        </tr>
        <tr>
          <td>Source code</td>
          <td>SVN</td>
          <td>
            <a href="https://svn.apache.org/repos/asf/incubator/graffito/">https://svn.apache.org/repos/asf/incubator/graffito/</a>
          </td>
        </tr>
        <tr>
          <td>Mentors</td>
          <td>raphael</td>
          <td>Raphael Luta</td>
        </tr>
        <tr>
          <td>.</td>
          <td>jukka</td>
          <td>Jukka Zitting</td>
        </tr>
        <tr>
          <td>Committers</td>
          <td>taylor</td>
          <td>David S. Taylor</td>
        </tr>
        <tr>
          <td>.</td>
          <td>raphael</td>
          <td>Raphael Luta</td>
        </tr>
        <tr>
          <td>.</td>
          <td>clombart</td>
          <td>Christophe Lombart</td>
        </tr>
        <tr>
          <td>.</td>
          <td>okiessler</td>
          <td>Oliver Kiessler</td>
        </tr>
        <tr>
          <td>.</td>
          <td>sboehme</td>
          <td>Sandro Boehme</td>
        </tr>
        <tr>
          <td>.</td>
          <td>apopescu</td>
          <td>Alexandru Popescu</td>
        </tr>
      </table>
</div>
        <h2 id='Incubation+status+reports'><img src="../images/redarrow.gif" />Incubation status reports</h2>
<div class="section-content">
<h3 id='April 2007'>April 2007</h3>
<div class="section-content">
<p>
          Graffito is a framework for content-based applications,
          especially in portlet environments. Graffito entered incubation
          on September 20, 2004.
        </p>
<p>
          Despite recent efforts the level of activity within the Graffito
          project remains low. The only part of the project that enjoys
          continued interest and commit activity is the JCR Mapping
          component, whose transfer into a subproject of Apache Jackrabbit
          is being prepared.
        </p>
<p>
          There is little indication that the level of activity within other
          parts of the Graffito project would increase in future, so we will
          most likely request termination of the project as retired as soon
          as the JCR Mapping component has been moved to Apache Jackrabbit.
        </p>
</div>
<h3 id='February 2007'>February 2007</h3>
<div class="section-content">
<p>
          (This is the extra followup report requested by the board
          last month.)
        </p>
<p>
          Graffito is a framework for content-based applications,
          especially in portlet environments. Graffito entered incubation
          on September 20, 2004.
        </p>
<p>
          The recent discussion on the status of the Graffito project has
          concluded with some concrete action items (see
          <a href="http://mail-archives.apache.org/mod_mbox/incubator-graffito-dev/200702.mbox/%3c3b728ee90702140445i5d21bd22j95fb5b67c58abc70@mail.gmail.com%3e">the thread</a>).
          The plan is to realign Graffito to be more a content management
          framework instead of a complete CMS product and to better leverage
          the features of JCR content repositories.
        </p>
<p>
          The effect of these plans on commit activity remains to be seen,
          but as of now the general feeling around the project is positive.
          Hopefully we'll have some concrete results to show by the time of
          the next report. 
        </p>
</div>
<h3 id='January 2007'>January 2007</h3>
<div class="section-content">
<p>
          Graffito is a framework for content-based applications,
          especially in portlet environments. Graffito entered incubation
          on September 20, 2004.
        </p>
<p>Top three items to resolve before graduation:</p>
<ol>
          <li>Build a self-sustaining community</li>
          <li>Create an incubating Graffito release</li>
          <li>Move the JCR mapping component to the Jackrabbit project</li>
        </ol>
<p>
          There hasn't been much activity in the Graffito project since
          the last report. A discussion on what to do with the project that
          still hasn't reached "critical mass" after over two years of
          incubation is currently taking place. The perceived complexity of
          the project is seen by many as a barrier to start using or
          contributing to Graffito. Splitting the project into more
          manageable component projects was raised as one potential
          approach to reviving the codebase and project community.
        </p>
</div>
<h3 id='October 2006'>October 2006</h3>
<div class="section-content">
<p>
          Graffito is a framework for content-based applications,
          especially in portlet environments. Graffito entered incubation
          on September 20, 2004.
        </p>
<p>Top three items to resolve before graduation:</p>
<ul>
          <li>Upgrade to the latest license header and copyright notice policy</li>
          <li>Create an incubating Graffito release</li>
          <li>Move the JCR mapping component to the Jackrabbit project</li>
        </ul>
<p>
          Graffito activity has increased noticeably since the last report,
          especially due to interest from within the Jackrabbit community.
          New bug reports and patches are also being contributed.
        </p>
<ul>
          <li>
            Jukka Zitting was voted in as a new mentor for the project.
            He will accompany Raphael Luta in that role.
          </li>
          <li>
            Given positive feedback from both communities, we are evaluating
            options for moving the JCR mapping component from Graffito into
            the Jackrabbit project. This would expose the component to a
            wider JCR developer community and a larger audience of potential
            users.
          </li>
          <li>
            There has been renewed discussion on producing incubating
            releases of the Graffito components.
          </li>
          <li>
            Edgar Poce has been working on a related JCR-based wysiwyg
            portlet prototype, using the Graffito mailing list for design
            discussions, but the implementation approach differs from the
            Graffito portlet model, so at least for now the tool is not
            being integrated into Graffito
          </li>
        </ul>
</div>
<h3 id='June 2006'>June 2006</h3>
<div class="section-content">
<p>
          There was not so much commits on the project due to the current
          commiters activities. The company Sword Technologies donates new
          Graffito services (worfklow, news management , mail and scheduler
          services). Christophe will try to review and commit this code asap.
        </p>
<p>
          The Spring support is finished for the OCM Tools. Now the OCM tools
          will be used in the complete Graffito stack. By this way, the
          Graffito persistence service can access to JCR repositories.
        </p>
<p>
          Graffito is working with Jetspeed 2 head.
        </p>
</div>
<h3 id='April 2006'>April 2006</h3>
<div class="section-content">
<ul>
          <li>
            We are still working on our JCR support. This support is mainly
            done with an object/Content mapping. We hope to finalize the
            first release of this subproject for the ASF Europe Conf. This
            tools could be use in other open source project.
          </li>
          <li>
            Sword Technologies is working on the workflow service and the
            first Graffito module (personalized news management with
            syndication). The code will be donate in May to the ASF.
          </li>
          <li>
            Still working with the Jetspeed team to see how to build a common
            release for the ASF Europe Conf.
          </li>
          <li>
            We want to promote and make some "marketing" to increase the
            community size.
          </li>
        </ul>
</div>
<h3 id='2006Q1'>2006Q1</h3>
<div class="section-content">
<p>
          Graffito has nicely grown recently with activity encouraged by the
          final release of Jetspeed 2.0 and good progress made on the JCR
          support though Jackrabbit.
        </p>
<p>We've just added a new committer:</p>
<ul><li>Alexandru Popescu</li></ul>
<p>
          and some existing Portals committers also actively contributing to
          the integration of Graffito with Portals. 
        </p>
</div>
<h3 id='2005Q4'>2005Q4</h3>
<div class="section-content">
<p>Lot of work underway:</p>
<ul>
          <li>working on JCR mapping for Graffito objects</li>
          <li>
            port under way for using Graffito for storing Jetspeed page
            descriptions in a Graffito managed repository (effort lead by
            Jetspeed team)
          </li>
          <li>
            several new names have appeared on mailing-list and start
            contributing patches and join the design discussions
          </li>
        </ul>
<p>
          We plan to have a Graffito binary bundled with upcoming
          Jetspeed 2 M4 release (required if PSML integration is
          complete for M4) If community development continues its
          progress as expected, I think we'll add couple of new
          committers this quarter and probably ask for exiting Incubator
          early next year.
        </p>
</div>
<h3 id='2005Q3'>2005Q3</h3>
<div class="section-content">
<ul>
          <li>
            The main news in this quarter is that we have expanded the
            committer base beyond the original contributors with the addition
            of Oliver Kiessler and Sandro Boehme.
          </li>
          <li>
            Both are busily working on building support for JCR (through
            Jackrabbit).
          </li>
          <li>
            Work is also underway to use Graffito as a native CMS engine
            in Jetspeed 2.
          </li>
        </ul>
</div>
<h3 id='2005-4-25'>2005-4-25</h3>
<div class="section-content">
<pre>1) Is the STATUS file up to date? Yes 2) Any legal, cross-project or
personal issues that still need to be addressed? no 3) What has been
done for incubation since the last report? * The most important work
was made on the Jetspeed 2 integration &amp; building some JSR-168
portlets. There is a content tree view, a document viewer and an
admin browser portlet. Futhermore, we have integrate an HTML editor
(Kupu). * Some work has been done for the security management (fine
grain access control, permission management, JAAS support, ...). * We
have started raising awareness and promoting the project on some
other Apache and non-Apache lists in order build further the
community. * New developers have started collaborating with the core
team on Graffito work, especially JCR mapping tools. 4) Plans and
expectations for the next period? * Implementing our JCR mapping
framework with Jackrabbit. * XML editor integration. * A Graffito
implementation for the Jetspeed 2 page manager. * Continue our work
on the JSR-168 portlets (search &amp; version management). * Start a site
demo with a Jetspeed integration * We expect the committer base to
expand during next period given the current developer participation
on the dev mailing-lists. 5) Any recommendations for how incubation
could run more smoothly for you? None so far.
</pre>
</div>
<h3 id='2005-1-14'>2005-1-14</h3>
<div class="section-content">
<pre>1) Is the STATUS file up to date? Yes 2) Any legal, cross-project or
personal issues that still need to be addressed? * Software grant has
been recieved by the ASF. * All trademark issues with project name
have been resolved. * We have renamed the JCMS project as Graffito to
avoid naming confusion with Jalios JCMS, another Java based CMS
system. 3) What has been done for incubation since the last report? *
We cleaned up repository, site, build process, site deployment and
publishing to help new users and developers jump into the project. *
Christophe Lombart account has been created and karma granted * ASF
Infrastructure has been set up for Graffito * We are working on the
Jetspeed 2 integration &amp; building JSR 168 portlets. 4) Plans and
expectations for the next period? * Add more info in the Graffito
site * WEBDAV integration * More work on Jetspeed 2 integration,
building portlets. * Introduce Graffito to some important to related
projects: Slide, JackRabbit, Jetspeed ... in order to grow the
development community 5) Any recommendations for how incubation could
run more smoothly for you? None so far. All is well.
</pre>
</div>
</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>2004-09-20</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. (raphael)
</td>
            </tr>
            <tr>
              <td>....-..-..</td>
              <td>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.
</td>
            </tr>
            <tr>
              <td>2004-09-13</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.
(raphael)
</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>2004-09-13</td>
              <td>Identify all the Mentors for the incubation, by asking all that can
be Mentors. (raphael)
</td>
            </tr>
            <tr>
              <td>2004-09-20</td>
              <td>Subscribe all Mentors on the pmc and general lists. (raphael)
</td>
            </tr>
            <tr>
              <td>2004-11-06</td>
              <td>Give all Mentors access to all incubator CVS modules. (to be done by
PMC chair) (raphael)
</td>
            </tr>
            <tr>
              <td>2004-11-06</td>
              <td>Tell Mentors to track progress in the file
'incubator/projects/{project.name}.cwiki' (raphael)
</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>2004-11-27</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.
(raphael)
</td>
            </tr>
            <tr>
              <td>2004-11-27</td>
              <td>Check and make sure that the files that have been donated have been
updated to reflect the new ASF copyright. (raphael)
</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>2004-11-29</td>
              <td>Check and make sure that for all code included with the distribution
that is not under the Apache license, e have the right to combine
with Apache-licensed code and redistribute. (raphael)
</td>
            </tr>
            <tr>
              <td>2004-11-29</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. (raphael)
</td>
            </tr>
          </table>
</div>
<h4 id='Establish+a+list+of+active+committers+%21'>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>2004-11-27</td>
              <td>Check that all active committers have submitted a contributors
agreement. (raphael)
</td>
            </tr>
            <tr>
              <td>2004-12-12</td>
              <td>Add all active committers in the STATUS file. (raphael)</td>
            </tr>
            <tr>
              <td>2004-12-23</td>
              <td>Ask root for the creation of committers' accounts on cvs.apache.org.
(raphal)
</td>
            </tr>
          </table>
</div>
<h4 id='Infrastructure+%21'>Infrastructure !</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2005-01-03</td>
              <td>Ask infrastructure to create source repository modules and grant the
committers karma. (raphael)
</td>
            </tr>
            <tr>
              <td>2004-12-28</td>
              <td>Ask infrastructure to set up and archive Mailing lists. (raphael)</td>
            </tr>
            <tr>
              <td>2005-01-07</td>
              <td>Decide about and then ask infrastructure to setup an issuetracking
system (Bugzilla, Scarab, Jira).
</td>
            </tr>
            <tr>
              <td>2005-01-08</td>
              <td>Migrate the project to our infrastructure.</td>
            </tr>
          </table>
</div>
<h4 id='Project+specific'>Project specific</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2004-12-27</td>
              <td>Renamed JCMS to Graffito to avoid naming conflict with Jalios JCMS,
another Java CMS package
</td>
            </tr>
          </table>
</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>
