<!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>Axion Project 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='Overview'><img src="../images/redarrow.gif" />Overview
</h2>
<div class="section-content">
<p>Axion is a Java-based relational database engine.
</p>
<p>This page tracks Axion's incubation status. For general project
status, see the Axion project website.
</p>
<p><span class="retired">The Axion project retired on 2006-01-23</span></p>
</div>
        <h2 id='News'><img src="../images/redarrow.gif" />News
</h2>
<div class="section-content">
<h3 id='Incubation+Related'>Incubation Related
</h3>
<div class="section-content">
<dl>
           <dt>2006-01-23</dt>
           <dd><a href="http://mail-archives.apache.org/mod_mbox/incubator-general/200601.mbox/%3cB94F91F8-4E42-4336-B9C6-B06D63BC8BF0@apache.org%3e">Cancelled at request of Sponsoring TLP.  The axion project never moved to the ASF from tigris.org.</a></dd>
        </dl>
<dl>
          <dt>2003-12-19
</dt>
          <dd>The

            <a href="http://incubator.apache.org/">Apache Incubator Project
</a>has acknowledged Axion's acceptance by the

            <a href="http://db.apache.org/">Apache Database Project
</a>. Incubation is officially underway.

          </dd>
          <dt>2003-12-02
</dt>
          <dd>The

            <a href="http://db.apache.org/">Apache Database Project
</a>has accepted Axion's proposal. Send message to

            <a href="mailto:general-thread.243@db.apache.org">general-thread.243@db.apache.org
</a>to retrieve the VOTE thread, and to

            <a href="mailto:general-thread.247@db.apache.org">general-thread.257@db.apache.org
</a>to retrieve the RESULT thread. Morgan Delegrange has

            <a href="http://axion.tigris.org/servlets/ReadMsg?list=dev&amp;msgNo=720">volunteered
</a>to act as "mentor".

          </dd>
          <dt>2003-11-04
</dt>
          <dd>Axion team

            <a href="http://axion.tigris.org/servlets/ReadMsg?list=dev&amp;msgNo=697">has voted
</a>to move the

            <a href="http://db.apache.org/">Apache Database Project
</a>.

          </dd>
        </dl>
</div>
<h3 id='Project+Related'>Project Related
</h3>
<div class="section-content">
<p>Currently, see

          <a href="http://axion.tigris.org/news.html">http://axion.tigris.org/news.html
</a>for project related news.

        </p>
</div>
</div>
        <h2 id='Project+Info'><img src="../images/redarrow.gif" />Project Info
</h2>
<div class="section-content">
<table class="colortable" width="100%">
        <tr>
          <th colspan="1" rowspan="1">item
</th>
          <th colspan="1" rowspan="1">type
</th>
          <th colspan="1" rowspan="1">reference
</th>
        </tr>
        <tr>
          <td colspan="1" rowspan="1">Website
</td>
          <td colspan="1" rowspan="1">www
</td>
          <td colspan="1" rowspan="1">Currently

            <a href="http://axion.tigris.org/">http://axion.tigris.org/
</a>. Eventually

            <a href="http://db.apache.org/axion/">http://db.apache.org/axion/
</a>.

          </td>
        </tr><!--
        <tr>
          <td>&#160;</td>
          <td>wiki</td>
          <td>&#160;</td>
        </tr>
        -->
        <tr>
          <td colspan="1" rowspan="1">Mailing List
</td>
          <td colspan="1" rowspan="1">dev
</td>
          <td colspan="1" rowspan="1">axion-dev@db.apache.org (deprecated: dev@axion.tigris.org)
</td>
        </tr>
        <tr>
          <td colspan="1" rowspan="1"> 
</td>
          <td colspan="1" rowspan="1">user
</td>
          <td colspan="1" rowspan="1">axion-user@db.apache.org (deprecated: users@axion.tigris.org)
</td>
        </tr>
        <tr>
          <td colspan="1" rowspan="1"> 
</td>
          <td colspan="1" rowspan="1">cvs
</td>
          <td colspan="1" rowspan="1">axion-dev@db.apache.org (deprecated: cvs@axion.tigris.org)
</td>
        </tr>
        <tr>
          <td colspan="1" rowspan="1">Issue Database
</td>
          <td colspan="1" rowspan="1"> 
</td>
          <td colspan="1" rowspan="1">Currently

            <a href="http://axion.tigris.org/servlets/ProjectIssues">http://axion.tigris.org/servlets/ProjectIssues
</a>. Soon Bugzilla? Jira? To be determined.

          </td>
        </tr>
        <tr>
          <td colspan="1" rowspan="1">Source Repository
</td>
          <td colspan="1" rowspan="1">CVS
</td>
          <td colspan="1" rowspan="1">Currently

            <a href="http://axion.tigris.org/source/browse/axion/">http://axion.tigris.org/source/browse/axion/
</a>. Soon

            <a href="http://cvs.apache.org/viewcvs/db-axion">db-axion
</a>.

          </td>
        </tr>
        <tr>
          <td colspan="1" rowspan="1">Mentors
</td>
          <td colspan="1" rowspan="1"> 
</td>
          <td colspan="1" rowspan="1">Morgan Delegrange (morgand@apache)
</td>
        </tr>
        <tr>
          <td colspan="1" rowspan="1">Committers
</td>
          <td colspan="1" rowspan="1"> 
</td>
          <td colspan="1" rowspan="1">For now, see

            <a href="http://axion.tigris.org/servlets/ProjectMemberList">http://axion.tigris.org/servlets/ProjectMemberList
</a>
          </td>
        </tr>
      </table>
</div>
        <h2 id='Incubation+Status+Reports'><img src="../images/redarrow.gif" />Incubation Status Reports
</h2>
<div class="section-content">
<p>ToDo: Add links here.
</p>
</div>
        <h2 id='Incubation+Work+Areas'><img src="../images/redarrow.gif" />Incubation Work Areas
</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>
<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 colspan="1" rowspan="1">date completed
</th>
              <th colspan="1" rowspan="1">item
</th>
            </tr>
            <tr>
              <td colspan="1" rowspan="1">2003-12-19
</td>
              <td colspan="1" rowspan="1">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.

                <br />
                <strong>Done.
</strong>
                <em>As of 19 December 2003, nothing seems relevant (

                  <a href="http://nameprotect.com/cgi-bin/FREESearch/search.cgi?action=SEARCH&amp;db=PTO&amp;ss=axion" title="nameprotect.com search">try it yourself
</a>). Note that "axion" is

                  <a href="http://www.m-w.com/cgi-bin/dictionary?axion" title="look up &quot;axion&quot; in the dictionary">a scientific term
</a>.

                </em>
              </td>
            </tr>
            <tr>
              <td colspan="1" rowspan="1">2003-12-02
</td>
              <td colspan="1" rowspan="1">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.

                <br />
                <strong>Done.
</strong>
                <em>Send a message to

                  <a href="mailto:general-thread.243@db.apache.org">general-thread.243@db.apache.org
</a>to retrieve the VOTE thread, and to

                  <a href="mailto:general-thread.247@db.apache.org">general-thread.257@db.apache.org
</a>to retrieve the RESULT thread.

                </em>
              </td>
            </tr>
            <tr>
              <td colspan="1" rowspan="1">2003-11-04
</td>
              <td colspan="1" rowspan="1">If request from outside Apache to enter an existing Apache project,
then post a message to that project for them to decide on acceptance.

                <br />
                <strong>Done.
</strong>
                <em>See

                  <a href="http://axion.tigris.org/servlets/ReadMsg?list=dev&amp;msgNo=697">http://axion.tigris.org/servlets/ReadMsg?list=dev&amp;msgNo=697
</a>.

                </em>
              </td>
            </tr>
          </table>
</div>
<h4 id='Interim+responsibility'>Interim responsibility
</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th colspan="1" rowspan="1">date completed
</th>
              <th colspan="1" rowspan="1">item
</th>
            </tr>
            <tr>
              <td colspan="1" rowspan="1">2003-12-03
</td>
              <td colspan="1" rowspan="1">Identify all the Mentors for the incubation, by asking all that can
be Mentors.

                <br />
                <strong>Done.
</strong>
                <em>See

                  <a href="http://axion.tigris.org/servlets/ReadMsg?list=dev&amp;msgNo=720">http://axion.tigris.org/servlets/ReadMsg?list=dev&amp;msgNo=720
</a>.

                </em>
              </td>
            </tr>
            <tr>
              <td colspan="1" rowspan="1">2003-12-19
</td>
              <td colspan="1" rowspan="1">Subscribe all Mentors on the pmc and general lists.

                <br />
                <strong>Done.
</strong>
              </td>
            </tr>
            <tr>
              <td colspan="1" rowspan="1">2003-12-19
</td>
              <td colspan="1" rowspan="1">Give all Mentors access to all incubator CVS modules. (to be done by
PMC chair)

                <br />
                <strong>Done.
</strong>
              </td>
            </tr>
            <tr>
              <td colspan="1" rowspan="1">2003-12-19
</td>
              <td colspan="1" rowspan="1">Tell Mentors to track progress in the file

                <code>incubator/projects/{project.name}.cwiki
</code>
                <br />
                <strong>Done.
</strong>
                <em>Using

                  <code>incubator/projects/axion.xml
</code>instead, since Forrest's cwiki parser seems to be broken.

                </em>
              </td>
            </tr>
          </table>
</div>
<h4 id='Copyright'>Copyright
</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th colspan="1" rowspan="1">date completed
</th>
              <th colspan="1" rowspan="1">item
</th>
            </tr>
            <tr>
              <td colspan="1" rowspan="1">Submitted 16-July-2004
</td>
              <td colspan="1" rowspan="1">Check 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.

                <br />(Fax submitted 16-July-2004. Not yet acknowledged.)

              </td>
            </tr>
            <tr>
              <td colspan="1" rowspan="1"> 
</td>
              <td colspan="1" rowspan="1">Check that the files that have been donated have been updated to
reflect the new ASF copyright.

                <br />
              </td>
            </tr>
          </table>
</div>
<h4 id='Verify+distribution+rights'>Verify distribution rights
</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th colspan="1" rowspan="1">date completed
</th>
              <th colspan="1" rowspan="1">item
</th>
            </tr>
            <tr>
              <td colspan="1" rowspan="1">2003-12-19
</td>
              <td colspan="1" rowspan="1">Check 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.

                <br />
                <strong>Done.
</strong>
                <em>All code currently distributed by the project is already available
under an ASF-like license. See

                  <a href="http://axion.tigris.org/unbranded-source/browse/*checkout*/axion/LICENSE.txt?rev=HEAD">Axion's original license
</a>. This will be changed to the ASF license when the copyright is
transfered (see

                  <a href="#copyright">above
</a>).

                </em>
              </td>
            </tr>
            <tr>
              <td colspan="1" rowspan="1">2003-12-19
</td>
              <td colspan="1" rowspan="1">Check 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.

                <br />
                <strong>Done.
</strong>
                <em>All code currently distributed by the project is already available
under an ASF-like license. See

                  <a href="http://axion.tigris.org/unbranded-source/browse/*checkout*/axion/LICENSE.txt?rev=HEAD">Axion's original license
</a>. This will be changed to the ASF license when the copyright is
transfered (see

                  <a href="#copyright">above
</a>).

                </em>
              </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 colspan="1" rowspan="1">date completed
</th>
              <th colspan="1" rowspan="1">item
</th>
            </tr>
            <tr>
              <td colspan="1" rowspan="1"> 
</td>
              <td colspan="1" rowspan="1">Check that all active committers have submitted a contributors
agreement.
</td>
            </tr>
            <tr>
              <td colspan="1" rowspan="1"> 
</td>
              <td colspan="1" rowspan="1">Add all active committers in the STATUS file.
</td>
            </tr>
            <tr>
              <td colspan="1" rowspan="1"> 
</td>
              <td colspan="1" rowspan="1">Ask root for the creation of committers' accounts on cvs.apache.org.
</td>
            </tr>
          </table>
</div>
<h4 id='Infrastructure'>Infrastructure
</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th colspan="1" rowspan="1">date completed
</th>
              <th colspan="1" rowspan="1">item
</th>
            </tr>
            <tr>
              <td colspan="1" rowspan="1">2004-06-14
</td>
              <td colspan="1" rowspan="1">Ask infrastructure to create source repository modules and add the
committers to the avail file.

                <br />
                <strong>Done.
</strong>
              </td>
            </tr>
            <tr>
              <td colspan="1" rowspan="1">2004-06-14
</td>
              <td colspan="1" rowspan="1">Ask infrastructure to set up and archive Mailing lists.

                <br />
                <strong>Done.
</strong>
              </td>
            </tr>
            <tr>
              <td colspan="1" rowspan="1"> 
</td>
              <td colspan="1" rowspan="1">Decide about and then ask infrastructure to setup an issue tracking
system (Bugzilla, Scarab, Jira).
</td>
            </tr>
            <tr>
              <td colspan="1" rowspan="1"> 
</td>
              <td colspan="1" rowspan="1">Migrate the project to our infrastructure.

                <br />
                <em>As previously discussed, waiting on final Milestone 3 release from
Tigris.
</em>
              </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>
<div class="note">
<note>These items are not to be signed as done during incubation, as they
may change during incubation. They are to be looked into and
described in the status reports and completed in the request for
incubation signoff.
</note>
</div>
<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>
</div>
<h3 id='Exit'>Exit
</h3>
<div class="section-content">
<p>Things to check for before voting the project out.
</p>
<h4 id='Organizational+acceptance+of+responsibility+for+the+project'>Organizational acceptance of responsibility for the project
</h4>
<div class="section-content">
<dl>
            <dt>If graduating to an existing PMC, has the PMC voted to accept it?
</dt>
            <dd>
              <em>Yes. Send a message to

                <a href="mailto:general-thread.243@db.apache.org">general-thread.243@db.apache.org
</a>to retrieve the VOTE thread, and to

                <a href="mailto:general-thread.247@db.apache.org">general-thread.257@db.apache.org
</a>to retrieve the RESULT thread.

              </em>
            </dd>
          </dl>
</div>
<h4 id='Incubator+sign-off'>Incubator sign-off
</h4>
<div class="section-content">
<dl>
            <dt>Has the Incubator decided that the project has accomplished all of
the above tasks?
</dt>
            <dd> 
</dd>
          </dl>
</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>
