<!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" />
        <title>jackrabbit - Apache Incubator</title>
  
 </head>
 <body>
 <div class="container">
  <div class="row">
<div class="span12">
  <a href="http://www.apache.org/"><img src="http://incubator.apache.org/images/asf_logo_wide_small.png" alt="The Apache Software Foundation" border="0" style="margin-top: 2px" width="62%"/></a>
</div>
<div class="span4">
<a href="http://incubator.apache.org/"><img src="../images/egg-logo2.png" alt="Apache Incubator" border="0"/></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="../incubation/Process_Description.html">Incubation Overview</a></li> 
          <li><a href="../incubation/Incubation_Policy.html">Incubation Policy</a></li> 
          <li><a href="../guides/index.html">Incubation Guides</a></li> 
          <li><a href="../incubation/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> 
          <li><a href="../sitemap.html">Site Map</a></li> 
            </menu>
      <div class="menuheader">Status</div>
    <menu compact="compact">
          <li><a href="../projects/index.html">Project List</a></li> 
          <li><a href="../clutch.html">Clutch Report</a></li> 
          <li><a href="../ip-clearance/index.html">IP Clearance</a></li> 
          <li><a href="../history/index.html">Incubator History</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/pmc.html">Incubator PMC (IPMC)</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>
    <!-- start Ads Server -->
    <iframe src="http://www.apache.org/ads/buttonbar.html"
     style="border-width:0; float: left" frameborder="0" scrolling="no"
     width="135" height="265"></iframe>
    <!-- end Ads Server -->
   </div>
   
   <div class="span12">
            <h2 id='Jackrabbit+Project+Incubation+Status'><img src="../images/redarrow.gif" />Jackrabbit Project Incubation Status</h2>
<div class="section-content">
<p>Jackrabbit has graduated incubation. For more information,
      please see the 
      <a href="http://jackrabbit.apache.org/">Apache Jackrabbit</a> project.</p>
<p><span class="graduated">The Jackrabbit project graduated on 2006-03-15</span></p>
</div>
        <h2 id='Description'><img src="../images/redarrow.gif" />Description</h2>
<div class="section-content">
<p>The Jackrabbit podling has been formed to develop an open
      source implementation of the Content Repository for Java
      Technology API (JCR), as specified within the Java Community
      Process as 
      <a href="http://www.jcp.org/en/jsr/detail?id=170">JSR 170</a> and 
      <a href="http://www.jcp.org/en/jsr/detail?id=283">JSR 283</a>. 
      <a href="http://www.day.com/">Day Software</a>, the JCR
      specification lead, has licensed an initial implementation of
      the JCR reference implementation for use as seed code for
      this project. JCR specifies an API for application developers
      (and application frameworks) to use for interaction with
      modern content repositories -- content management systems
      that provide content services such as versioning,
      transactions, indexing, workflow, etc.</p>
<p>Jackrabbit's implementation began as a proposal within the
      
      <a href="http://jakarta.apache.org/slide/index.html">Jakarta
      Slide</a> project, but has since attracted interest from
      multiple projects with the 
      <a href="http://www.apache.org/">Apache Software Foundation</a>,
      including Slide, Cocoon, Lenya, Graffito, XML
      Indexing, and Derby. We are also looking at integration with
      projects such as Maven and Beehive.</p>
<p>The purpose of this incubation period is to attract
      additional contributors from other Apache projects and from
      the various JSR 170 and 283 expert group companies, learn the
      Apache way of doing things, and allow the developers to focus
      on this interface/implementation rather than all of the
      existing projects that might want to use it. We hope to
      improve collaboration on the code base by moving all of the
      active developers and authors to Apache, bring in as many of
      the Apache veterans as wish to get involved, and open it up
      to all of the 22 expert group companies. Development of the
      JCR RI and TCK will occur in this project -- Day Software
      plans to continue participation in Jackrabbit and use the
      code in the official RI and TCK releases, allowing developers
      to beta test against the open source versions as well as the
      official versions.</p>
</div>
        <h2 id='News'><img src="../images/redarrow.gif" />News</h2>
<div class="section-content">
<ul>
        <li>2006 Mar 15: Incubator PMC approves graduation to new TLP</li>
        <li>2006 Mar 15: ASF Board approves new Apache Jackrabbit project</li>
        <li>2006 Mar 11: Committers vote to request incubator graduation</li>
        <li>2006 Feb 14: Apache Jackrabbit 0.9 released</li>
        <li>2004 Aug 28: Proposal accepted by Incubator PMC</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>
            <a href="http://jackrabbit.apache.org/jackrabbit/">http://jackrabbit.apache.org/jackrabbit/</a>
          </td>
        </tr>
        <tr>
          <td />
          <td>wiki</td>
          <td>
            <a href="http://wiki.apache.org/jackrabbit/">http://wiki.apache.org/jackrabbit/</a>
          </td>
        </tr>
        <tr>
          <td>Mailing list</td>
          <td>dev</td>
          <td>dev jackrabbit.apache.org</td>
        </tr>
        <tr>
          <td />
          <td>cvs</td>
          <td>commits jackrabbit.apache.org</td>
        </tr>
        <tr>
          <td />
          <td>pmc</td>
          <td>private jackrabbit.apache.org</td>
        </tr>
        <tr>
          <td>Bug tracking</td>
          <td>Jira</td>
          <td>JCR-*</td>
        </tr>
        <tr>
          <td>Source code</td>
          <td>Subversion</td>
          <td>jackrabbit/</td>
        </tr>
        <tr>
          <td>Committers</td>
          <td>tripod</td>
          <td>Tobias Bocanegra</td>
        </tr>
        <tr>
          <td />
          <td>fielding</td>
          <td>
          <a href="http://roy.gbiv.com/">Roy T. Fielding</a> (mentor)</td>
        </tr>
        <tr>
          <td />
          <td>stefan</td>
          <td>Stefan Guggisberg</td>
        </tr>
        <tr>
          <td />
          <td>shuber</td>
          <td>Serge Huber</td>
        </tr>
        <tr>
          <td />
          <td>fmeschbe</td>
          <td>Felix Meschberger</td>
        </tr>
        <tr>
          <td />
          <td>bcm</td>
          <td>Brian Moseley</td>
        </tr>
        <tr>
          <td />
          <td>uncled</td>
          <td>David Nuescheler</td>
        </tr>
        <tr>
          <td />
          <td>dpfister</td>
          <td>Dominique Pfister</td>
        </tr>
        <tr>
          <td />
          <td>ppiegaze</td>
          <td>Peeter Piegaze</td>
        </tr>
        <tr>
          <td />
          <td>edgarpoce</td>
          <td>Edgar Poce</td>
        </tr>
        <tr>
          <td />
          <td>mreutegg</td>
          <td>Marcel Reutegger</td>
        </tr>
        <tr>
          <td />
          <td>angela</td>
          <td>Angela Schreiber</td>
        </tr>
        <tr>
          <td />
          <td>sylvain</td>
          <td>Sylvain Wallez</td>
        </tr>
        <tr>
          <td />
          <td>jukka</td>
          <td>Jukka Zitting</td>
        </tr>
        <tr>
          <td>Emeritus</td>
          <td>stefano</td>
          <td>Stefano Mazzocchi (mentor)</td>
        </tr>
        <tr>
          <td />
          <td>gianugo</td>
          <td>Gianugo Rabellino</td>
        </tr>
        <tr>
          <td />
          <td>prussell</td>
          <td>Paul Russell</td>
        </tr>
        <tr>
          <td />
          <td>treilly</td>
          <td>Tim Reilly</td>
        </tr>
        <tr>
          <td />
          <td>asavory</td>
          <td>Andrew Savory</td>
        </tr>
      </table>
</div>
        <h2 id='Incubation+status+reports'><img src="../images/redarrow.gif" />Incubation status reports</h2>
<div class="section-content">
<h3 id='Status20060313'>2006/03/13</h3>
<div class="section-content">
<p>Jackrabbit accomplished its first official incubating
        release with version 0.9 of the Apache Jackrabbit reference
        implementation and JCR-RMI tools. Day Software has
        confirmed that the version 0.9 jars have passed the JCR 1.0
        TCK with the current exclude list.</p>
<p>We are now getting reorganized for graduation from the
        Incubator to our own top-level project at the Apache
        Software Foundation. The Jackrabbit committers voted on
        March 11, 2006, to request graduation. In addition, we made
        a call to refresh the list of active committers for an
        accurate presentation to the board; Stefano Mazzocchi,
        Gianugo Rabellino, Paul Russell, Tim Reilly, and Andrew
        Savory have requested emeritus status, meaning that they
        won't be listed on the initial project management committee
        but are welcome to come back if they choose to rejoin the
        project at a later time.</p>
</div>
<h3 id='Status20060118'>2006/01/18</h3>
<div class="section-content">
<p>Jackrabbit added four new committers to the project this
        quarter:</p>
<ul>
          <li>Serge Huber</li>
          <li>Felix Meschberger</li>
          <li>Brian Moseley</li>
          <li>Angela Schreiber</li>
        </ul>
<p>in recognition of their outstanding and sustained
        contributions to the project. Jukka Zitting has volunteered
        to be the RM for our first set of incubating releases. We
        plan to seek graduation from incubator as soon as we have a
        track record for a successful release vote.</p>
</div>
<h3 id='Status20051026'>2005/10/26</h3>
<div class="section-content">
<p>The Apache Jackrabbit podling is slowly recovering from
        the impact of finalizing JSR 170, initializing JSR 283 (the
        next JCR specification revision EG), and the summer holiday
        schedule. We are in the process of reconfiguring our source
        directories for an eventual 1.0 release and Maven 2
        support. No new committers were added this quarter, though
        we expect more to be added soon.</p>
</div>
<h3 id='Status20050715'>2005/07/15</h3>
<div class="section-content">
<p>Jackrabbit has attracted public interest from many
        different projects, both open source and commercial in
        nature, and has over 250 people reading the developer list.
        During the past quarter we added one new committer, Edgar
        Poce, and cleared the minimum threshold of three
        independent committers.</p>
<p>The big news is that JCR, the Content Repository for
        Java Technology 1.0 API, has been completed by the JSR 170
        expert group and received final approval from the J2SE/EE
        executive committee at the end of May. We are currently
        working on restructuring the Jackrabbit project directories
        in preparation of an eagerly anticipated first release
        candidate and passing the official TCK, at which point we
        are hoping to graduate from Incubator to TLP status for the
        1.0 release.</p>
</div>
<h3 id='Status20050425'>2005/04/25</h3>
<div class="section-content">
<p>Jackrabbit is doing well as a project and is attracting
        interest both within other Apache projects (Lenya and
        Graffito in particular) as well as from new folks in the
        Java community. We added two new committers, Jukka Zitting
        and Dominique Pfister, and have received sustained
        contributions from Serge Huber, Edgar Poce, Angela
        Schreiber, Felix Meschberger, and others.</p>
<p>Jackrabbit's only problem right now is continued
        reliance on JCP EG private discussions due to the
        unfinished nature of the JSR 170 Content Repository for
        Java Technology API. JSR 170 is expected to be submitted
        for final draft status in early May, after which all of the
        discussion can be moved to Apache lists. We anticipate
        graduating from Incubator sometime soon after that.</p>
</div>
<h3 id='Status20041117'>2004/11/17</h3>
<div class="section-content">
<p>The Jackrabbit project has completed all of the
        Incubator checklist items in terms of moving to Apache and
        getting the IP transfer done. With the help of Maven, we
        have a full website set up at</p>
<p>
          <a href="http://incubator.apache.org/jackrabbit/">
          http://incubator.apache.org/jackrabbit/</a>
        </p>
<p>with a few link bugs due to the svn/viewcvs integration.
        Our big task from now to graduation is to get the community
        more involved in development, planning features,
        integrating with some of the DB projects, and scoping out
        interesting applications to build on top of the
        interface.</p>
</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-06</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. (fielding)</td>
            </tr>
            <tr>
              <td>2004-08-28</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. (fielding)</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-08-28</td>
              <td>Identify all the Mentors for the incubation, by
              asking all that can be Mentors. (fielding)</td>
            </tr>
            <tr>
              <td>2004-08-28</td>
              <td>Subscribe all Mentors on the pmc and general
              lists. (fielding)</td>
            </tr>
            <tr>
              <td>2004-08-28</td>
              <td>Give all Mentors access to all incubator CVS
              modules. (fielding)</td>
            </tr>
            <tr>
              <td>2004-08-28</td>
              <td>Tell Mentors to track progress in the file
              'incubator/projects/{project.name}.cwiki'
              (fielding)</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-09-03</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.
              (fielding)</td>
            </tr>
            <tr>
              <td>2004-09-28</td>
              <td>Check and make sure that the files that have been
              donated have been updated to reflect the new ASF
              copyright. (fielding)</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-09-28</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.
              (fielding)</td>
            </tr>
            <tr>
              <td>2004-09-28</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.(fielding)</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-09-13</td>
              <td>Check that all active committers have submitted a
              contributors agreement. (fielding)</td>
            </tr>
            <tr>
              <td>2004-09-13</td>
              <td>Add all active committers in the STATUS file.
              (fielding)</td>
            </tr>
            <tr>
              <td>2004-09-13</td>
              <td>Ask root for the creation of committers' accounts
              on cvs.apache.org. (fielding)</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>2004-09-14</td>
              <td>Ask infrastructure to create source repository
              modules and grant the committers karma.
              (fielding)</td>
            </tr>
            <tr>
              <td>2004-09-08</td>
              <td>Ask infrastructure to set up and archive Mailing
              lists. (fielding)</td>
            </tr>
            <tr>
              <td>2004-09-14</td>
              <td>Decide about and then ask infrastructure to setup
              an issuetracking system (Jira). (fielding)</td>
            </tr>
            <tr>
              <td>2004-09-28</td>
              <td>Migrate the project to our infrastructure.
              (stefan)</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? 
            <b>Yes</b></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.) 
            <b>Yes</b></li>
            <li>Are project decisions being made in public by the
            committers? 
            <b>Yes</b></li>
            <li>Are the decision-making guidelines published and
            agreed to by all of the committers? 
            <b>Yes</b></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? 
            <b>Yes</b></li>
          </ul>
</div>
<h4 id='Project+Specific'>Project Specific</h4>
<div class="section-content">
<p>
            <em>Add project specific tasks here. 
            <b>None</b></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='acceptance'>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? 
            <b>n/a</b></li>
            <li>If graduating to a new PMC, has the board voted to
            accept it?
            <b>Yes</b></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?
            <b>Yes</b></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-2016 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>
