<!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>Abdera Incubation Status - 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='Abdera+Project+Incubation+Status'><img src="../images/redarrow.gif" />Abdera 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="graduated">The Abdera project graduated on 2008-11-08</span></p>
</div>
        <h2 id='Description'><img src="../images/redarrow.gif" />Description</h2>
<div class="section-content">
<p>
        The Abdera project is an implementation of the Atom Syndication
        Format (RFC4287) and the Atom Publishing Protocol specifications
        published by the IETF Atompub working group.
      </p>
</div>
        <h2 id='News'><img src="../images/redarrow.gif" />News</h2>
<div class="section-content">
<ul>
        <li>2008-07-17 - New committer: David Calavera</li>
        <li>2008-07-17 - New committer: Jim Ancona</li>
        <li>2008-04-11 - Released version 0.4.0-incubating</li>
        <li>2007-10-22 - New committer: Dan Diephouse</li>
        <li>2007-10-05 - Released version 0.3.0-incubating</li>
        <li>2007-07-25 - New committer: Brian Moseley</li>
        <li>2007-02-19 - Released version 0.2.2-incubating</li>
        <li>2006-10-25 - New committer: Ugo Cei</li>
        <li>2006-10-05 - Released version 0.2.0-incubating</li>
        <li>2006-08-25 - Released version 0.1.0-incubating</li>
        <li>2006-07-10 - New committer: Stephen Duncan</li>
        <li>2006-07-10 - New committer: Garrett Rooney</li>
      </ul>
</div>
        <h2 id='Project+info'><img src="../images/redarrow.gif" />Project info</h2>
<div class="section-content">
<ul>
        <li><a href="http://incubator.apache.org/abdera">http://incubator.apache.org/abdera</a></li>
      </ul>
<ul>
        <li><a href="http://incubator.apache.org/abdera/project.html#lists">Mailing Lists</a></li>
        <li><a href="http://svn.apache.org/repos/asf/incubator/abdera/">Source</a></li>
        <li><a href="http://cwiki.apache.org/ABDERA">Wiki</a></li>
      </ul>
<ul>
        <li><a href="http://incubator.apache.org/projects/abdera.html">Status</a></li>
      </ul>
<p>
        If the project website and code repository are not yet setup, use the
        following table:
      </p>
<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/abdera/">http://incubator.apache.org/abdera/</a>
          </td>
        </tr>
        <tr>
          <td>.</td>
          <td>wiki</td>
          <td>.</td>
        </tr>
        <tr>
          <td>Mailing list</td>
          <td>dev</td>
          <td id="mail-dev"><code>abdera-dev</code><code>@</code><code>incubator.apache.org</code></td>
        </tr>
        <tr>
          <td>.</td>
          <td>commits</td>
          <td id="mail-commits"><code>abdera-commits</code><code>@</code><code>incubator.apache.org</code></td>
        </tr>
        <tr>
          <td>.</td>
          <td>user</td>
          <td><code>abdera-user</code><code>@</code><code>incubator.apache.org</code></td>
        </tr>
        <tr>
          <td>.</td>
          <td>ppmc</td>
          <td><code>abdera-private</code><code>@</code><code>incubator.apache.org</code></td>
        </tr>
        <tr>
          <td>Bug tracking</td>
          <td>Jira</td>
          <td id="tracker">
            <a href="https://issues.apache.org/jira/browse/ABDERA">https://issues.apache.org/jira/browse/ABDERA</a>
          </td>
        </tr>
        <tr>
          <td>Source code</td>
          <td>SVN</td>
          <td id="svn">
            <a href="http://svn.apache.org/repos/asf/incubator/abdera/">http://svn.apache.org/repos/asf/incubator/abdera/</a>
          </td>
        </tr>
        <tr>
          <td>Mentors</td>
          <td>rooneg</td>
          <td>Garrett Rooney</td>
        </tr>
        <tr>
          <td>.</td>
          <td>pquerna</td>
          <td>Paul Querna</td>
        </tr>
        <tr>
          <td>Committers</td>
          <td>eliast</td>
          <td>Elias Torres</td>
        </tr>
        <tr>
          <td>.</td>
          <td>rubys</td>
          <td>Sam Ruby</td>
        </tr>
        <tr>
          <td>.</td>
          <td>yoavs</td>
          <td>Yoav Shapira</td>
        </tr>
        <tr>
          <td>.</td>
          <td>jmsnell</td>
          <td>James M Snell</td>
        </tr>
        <tr>
          <td>.</td>
          <td>ryates</td>
          <td>Robert Yates</td>
        </tr>
        <tr>
          <td>.</td>
          <td>rooneg</td>
          <td>Garrett Rooney</td>
        </tr>
        <tr>
          <td>.</td>
          <td>juduncans</td>
          <td>Stephen Duncan</td>
        </tr>
        <tr>
          <td>.</td>
          <td>ugo</td>
          <td>Ugo Cei</td>
        </tr>
        <tr>
          <td>.</td>
          <td>dandiep</td>
          <td>Dan Diephouse</td>
        </tr>
      </table>
</div>
        <h2 id='Incubation+status+reports'><img src="../images/redarrow.gif" />Incubation status reports</h2>
<div class="section-content">
<ul>
        <li><a href="http://wiki.apache.org/incubator/February2008">February 2008 Report</a></li>
        <li><a href="http://wiki.apache.org/incubator/November2007">November 2007 Report</a></li>
        <li><a href="http://wiki.apache.org/incubator/August2007">August 2007 Report</a></li>
        <li><a href="http://wiki.apache.org/incubator/May2007">May 2007 Report</a></li>
        <li><a href="http://wiki.apache.org/incubator/February2007">February 2007 Report</a></li>
        <li><a href="http://wiki.apache.org/incubator/June2006">June 2006 Report</a></li>
        <li><a href="http://wiki.apache.org/incubator/July2006">July 2006 Report</a></li>
        <li><a href="http://wiki.apache.org/incubator/August2006">August 2006 Report</a></li>
        <li><a href="http://wiki.apache.org/incubator/November2006">November 2006 Report</a></li>
      </ul>
</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%26%23xD%3B'>Identify the project to be incubated&#xD;</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2006-05-25</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>N/A</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>N/A</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>2006-06-05</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>2006-06-05</td>
              <td>
                Identify all the Mentors for the incubation, by asking all
                that can be Mentors.
              </td>
            </tr>
            <tr>
              <td>2006-06-06</td>
              <td>Subscribe all Mentors on the pmc and general lists.</td>
            </tr>
            <tr>
              <td>2006-06-05</td>
              <td>
                Give all Mentors access to the incubator SVN repository.
                (to be done by PMC chair)
              </td>
            </tr>
            <tr>
              <td>2006-06-06</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>2006-06-16</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>2006-06-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>2006-07-14</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>2006-07-14</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>status</th>
              <th>item</th>
            </tr>
            <tr>
              <td>DONE</td>
              <td>
                Check that all active committers have submitted a contributors
                agreement.
              </td>
            </tr>
            <tr>
              <td>DONE</td>
              <td>Add all active committers in the STATUS file.</td>
            </tr>
            <tr>
              <td>DONE</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>status</th>
              <th>item</th>
            </tr>
            <tr>
              <td>DONE</td>
              <td>
                Ask infrastructure to create source repository modules and
                grant the committers karma.
              </td>
            </tr>
            <tr>
              <td>DONE</td>
              <td>Ask infrastructure to set up and archive Mailing lists.</td>
            </tr>
            <tr>
              <td>DONE</td>
              <td>
                Decide about and then ask infrastructure to setup an issue
                tracking system (Bugzilla, Scarab, Jira).
              </td>
            </tr>
            <tr>
              <td>DONE</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?  DONE.
            </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.)  DONE.
            </li>
            <li>
              Are project decisions being made in public by the committers?  DONE.
            </li>
            <li>
              Are the decision-making guidelines published and agreed to by
              all of the committers?  DONE.
            </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?  DONE.
            </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?  DONE.
            </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?  DONE.
            </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>
