<!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>Apache OFBiz 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='OFBiz+Project+Incubation+Status'><img src="../images/redarrow.gif" />Apache OFBiz Project Incubation Status</h2>
<div class="section-content">
<p><b>Apache OFBiz is now a top-level project.</b></p>
<p>The Apache OFBiz project completed incubation on 2006-12-20.
         Please go to the main project site:</p>
<p>
         <a href="http://ofbiz.apache.org/">http://ofbiz.apache.org/</a>
      </p>
<p>This page was used to track the project status, incubator-wise. This page is of historical interest only.</p>
<p><span class="graduated">The OFBiz project graduated on 2006-12-20</span></p>
</div>
        <h2 id='Description'><img src="../images/redarrow.gif" />Description</h2>
<div class="section-content">
<p>
	The Open For Business Project (Apache OFBiz) is an open source
	enterprise automation software project. By open source
	enterprise automation we mean: Open Source ERP, Open Source
	CRM, Open Source E-Business / E-Commerce, Open Source SCM,
	Open Source MRP, Open Source CMMS/EAM, and so on. It is one of
	the few apps of this type to be developed by a community,
	rather than one corporation.
      </p>
</div>
        <h2 id='News'><img src="../images/redarrow.gif" />News</h2>
<div class="section-content">
<ul>
        <li><b>Apache OFBiz is now officially a TLP (top level project) at the ASF</b></li>
        <li><b>2006-12-20</b> The Board of Directors voted to make Apache OFBiz a top-level project (see <a href="http://mail-archives.apache.org/mod_mbox/incubator-general/200612.mbox/raw/%3c31cc37360612212134w4e62392dxfcbcb9e53a2ddd0d@mail.gmail.com%3e">this</a> message)</li>
        <li><b>2006-11-28</b> Thanks to 7 binding votes and 2 non binding ones, the Incubator has positively voted for the graduation of OFBiz podling (see the vote <a href="http://mail-archives.apache.org/mod_mbox/incubator-general/200611.mbox/%3c6FEFF1E8-7963-41CF-A352-C28D0B024675@undersunconsulting.com%3e">results</a>); thanks to everyone who have helped get OFBiz to this point, we are looking forward working more with and in the Foundation; the Board resolution will be now sent to the Apache Board for the final resolution.</li>
        <li>2006-11-14 The community vote has <a href="http://mail-archives.apache.org/mod_mbox/incubator-ofbiz-dev/200611.mbox/%3cD567AD41-94FD-432B-B2BC-DC10F36A193A@undersunconsulting.com%3e">approved</a> to start the graduation process to exit from Apache Incubator</li>
        <li>2006-11-10 The Incubator vote has <a href="http://mail-archives.apache.org/mod_mbox/incubator-general/200611.mbox/%3c073F921E-D0D9-4FCC-84E1-57B16A2986A0@undersunconsulting.com%3e">approved</a> the 4.0.0 TS5 test snapshot release</li>
        <li>2006-11-02 The community vote has <a href="http://mail-archives.apache.org/mod_mbox/incubator-ofbiz-dev/200611.mbox/%3c20FBF476-81F9-4B4F-81CB-F443D4AE402E@undersunconsulting.com%3e">approved</a> the 4.0.0 TS5 test snapshot release</li>
        <li>2006-10-01 All the Jira issues from the old server have been manually migrated to the new Apache Jira server</li>
        <li>2006-09-22 The community vote has <a href="http://mail-archives.apache.org/mod_mbox/incubator-ofbiz-dev/200609.mbox/%3c7FB8EB75-0387-440F-88C3-9A35D2137FA5@undersunconsulting.com%3e">approved</a> the 4.0.0 TS3 test snapshot release</li>
        <li>2006-09-18 The candidate files for the 4.0.0 TS3 test snapshot release are available <a href="http://docs.ofbiz.org/display/OFBADMIN/Apache+OFBiz+Incubating+4.0.0+Test+Snapshot+Release">here</a></li>
        <li>2006-09-15 A draft for a Release Plan is now available <a href="http://docs.ofbiz.org/display/OFBADMIN/Release+Plan">here</a></li>
        <li>2006-09-02 All the OFBiz files have been updated to reflect the new license: now OFBiz is a licensed under the ASL2.0</li>
        <li>2006-09-02 The collection of iCLAs is now completed: we have now all the 74 iCLAs needed to perform the license switch from MIT to ASL2.0</li>
        <li>2006-07-15 After a public discussion in the ml a document about "Committers Roles and Responsibilities" has been published <a href="http://docs.ofbiz.org/display/OFBADMIN/OFBiz+Committers+Roles+and+Responsibilities">here</a></li>
        <li>2006-07-15 After a public discussion in the ml a document about "Contributors Best Practices" has been published <a href="http://docs.ofbiz.org/display/OFBADMIN/OFBiz+Contributors+Best+Practices">here</a></li>
        <li>2006-07-02 Web site cleaned up and migrated to the Apache server</li>
        <li>2006-07-01 Code migrated to the Incubator SVN server</li>
        <li>2006-06-23 Migration to the new mailing lists is now complete</li>
        <li>2006-06-02 Migration to the new Jira server is now complete; the old server will not accept new issues but it is still used to manage the existing ones; Jira notifications are now sent to the new ofbiz-dev list</li>
        <li>2006-06-01 Resolved all the dependencies to LGPLed jars (the most relevant one was the JOTM transaction manager, now replaced by the Geronimo tm)</li>
        <li>2006-05-04 Jacques Le Roux has been voted as a new committer for the pos (Point of Sales) component</li>
        <li>2006-03-29 The ofbiz-ppmc mailing list is active</li>
	<li>
	  2006-03-28 Accounts created for all the initial committers:
	  jonesde, jaz, sichen, byersa, hansbak, jacopoc</li>

        <li>2006-02-19 Created ofbiz-dev, ofbiz-user, ofbiz-commits, ofbiz-ppmc lists (<a href="https://issues.apache.org/jira/browse/INFRA-720">INFRA-720</a>); the new lists are still not active</li>
        <li>2006-01-31 Project accepted by the Incubator PMC: <a href="http://mail-archives.apache.org/mod_mbox/incubator-general/200601.mbox/%3c7a31ebb30601310944i987014dh5a51a7ad6360d4d1@mail.gmail.com%3e">vote result</a></li>
        <li>2006-01-10 Project proposed to the Incubator PMC: <a href="http://wiki.apache.org/incubator/OFBizProposal">OFBiz Proposal</a></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 bgcolor="lightgrey">
          <th>Resources</th>
          <th colspan="2" />
        </tr>
        <tr>
          <td />
          <td>Website</td>
          <td>
            <a href="http://ofbiz.apache.org/ofbiz/">http://ofbiz.apache.org/</a>
          </td>
        </tr>
        <tr>
          <td />
          <td>Documentation, Wiki</td>
          <td>
            <a href="http://docs.ofbiz.org">http://docs.ofbiz.org</a>
          </td>
        </tr>
        <tr bgcolor="lightgrey">
          <th>Mailing lists</th>
          <th colspan="2" />
        </tr>
        <tr>
          <td />
          <td>developers</td>
          <td>
            dev@ofbiz.apache.org
          </td>
        </tr>
        <tr>
          <td> </td>
          <td>users</td>
          <td>
            user@ofbiz.apache.org
          </td>
        </tr>
        <tr>
          <td> </td>
          <td>commit logs</td>
          <td>
            commits@ofbiz.apache.org
          </td>
        </tr>
        <tr>
          <td> </td>
          <td>PMC</td>
          <td>
            private@ofbiz.apache.org
          </td>
        </tr>
        <tr>
          <td />
          <td>archives of pre-Apache posts</td>
          <td>
            <a href="http://lists.ofbiz.org">http://lists.ofbiz.org</a>
          </td>
        </tr>
        <tr bgcolor="lightgrey">
          <th>Bug tracking</th>
          <th colspan="2" />
        </tr>
        <tr>
          <td />
          <td>Jira</td>
          <td>
            <a href="https://issues.apache.org/jira/browse/OFBIZ">https://issues.apache.org/jira/browse/OFBIZ</a>
          </td>
        </tr>
        <tr>
          <td />
          <td />
          <td>
            sign up for Jira account <a href="https://issues.apache.org/jira/secure/Signup!default.jspa">here</a>
          </td>
        </tr>
        <tr bgcolor="lightgrey">
          <th>Source code</th>
          <th colspan="2" />
        </tr>
        <tr>
          <td />
          <td>ASF SVN</td>
          <td>
            <a href="http://svn.apache.org/repos/asf/ofbiz/">http://svn.apache.org/repos/asf/ofbiz/</a>
          </td>
        </tr>
        <tr>
          <td />
          <td>old SVN (optional components are maintained here)</td>
          <td>
            <a href="http://svn.ofbiz.org">http://svn.ofbiz.org</a>
          </td>
        </tr>
        <tr bgcolor="lightgrey">
          <th>Mentors</th>
          <th colspan="2" />
        </tr>
        <tr>
          <td />
          <td>davidw</td>
          <td>David N. Welton</td>
        </tr>
        <tr>
          <td />
          <td>yoavs</td>
          <td>Yoav Shapira</td>
        </tr>
        <tr>
          <td />
          <td>farra</td>
          <td>J Aaron Farr</td>
        </tr>
        <tr bgcolor="lightgrey">
          <th>Committers</th>
          <th colspan="2" />
        </tr>
        <tr>
          <td />
          <td>jonesde</td>
          <td>David E. Jones (initial committer)</td>
        </tr>
        <tr>
          <td />
          <td>jaz</td>
          <td>Andy Zeneski (initial committer)</td>
        </tr>
        <tr>
          <td />
          <td>sichen</td>
          <td>Si Chen (initial committer)</td>
        </tr>
        <tr>
          <td />
          <td>byersa</td>
          <td>Al Byers (initial committer)</td>
        </tr>
        <tr>
          <td />
          <td>jacopoc</td>
          <td>Jacopo Cappellato (initial committer)</td>
        </tr>
        <tr>
          <td />
          <td>hansbak</td>
          <td>Hans Bakker (initial committer)</td>
        </tr>
        <tr>
          <td />
          <td>jleroux</td>
          <td>Jacques Le Roux</td>
        </tr>
      </table>
</div>
        <h2 id='Incubation+status+reports'><img src="../images/redarrow.gif" />Incubation status reports</h2>
<div class="section-content">
<ul>
	<li>First report - <a href="http://wiki.apache.org/incubator/March2006">March 2006</a></li>
	<li>Second report - <a href="http://wiki.apache.org/incubator/April2006">April 2006</a></li>
	<li>Third report - <a href="http://wiki.apache.org/incubator/May2006">May 2006</a></li>
        <li>Fourth report - <a href="http://wiki.apache.org/incubator/June2006">June 2006</a></li>
        <li>Fifth report - <a href="http://wiki.apache.org/incubator/September2006">September 2006</a></li>
        <li>Sixth report - <a href="http://wiki.apache.org/incubator/December2006">December 2006</a></li>
      </ul>
<p>
	While not official status reports, Si Chen does a weekly
	summary of development work taking place: <a href="http://ofbiz-new.blogspot.com/">http://ofbiz-new.blogspot.com/</a>
      </p>
</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-02-10</td>
              <td>Make sure that the requested project name does not already exist and that the name is not already trademarked for an existing software product.</td>
            </tr>
            <tr>
              <td>2006-02-05</td>
              <td>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-02-11</td>
              <td>Identify all the Mentors for the incubation, by asking all that can be Mentors.</td>
            </tr>
            <tr>
              <td>2006-02-20</td>
              <td>Subscribe all Mentors on the pmc and general lists.</td>
            </tr>
            <tr>
              <td>2006-02-11</td>
              <td>Tell Mentors to track progress in the file 'site-author/projects/ofbiz.xml'</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-09-02</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.  Everyone who
                has contributed significant portions of the software
                has been asked to sign the <a href="http://www.apache.org/licenses/icla.txt">iCLA</a>
                and send it to the ASF. There is a wiki <a href="http://docs.ofbiz.org/x/WQ">page</a>
                with details about all the contributors past and present.
              </td>
            </tr>
            <tr>
              <td>2006-09-02</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-06-01</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.
                A list of all included jars and their licenses is <a href="http://docs.ofbiz.org/x/Vg">here</a>.
                </td>
            </tr>
            <tr>
              <td>2006-06-01</td>
              <td>Check and make sure that all source code distributed by the project is covered by one or more of the following approved licenses: Apache, BSD, Artistic, MIT/X, MIT/W3C, MPL 1.1, or something with essentially the same terms.</td>
            </tr>
          </table>
</div>
<h4 id='Establish+a+list+of+active+committers'>Establish a list of active committers</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2006-02-11</td>
              <td>Check that all active committers have submitted a contributors agreement.</td>
            </tr>
            <tr>
              <td>2006-02-11</td>
              <td>Add all active committers in the STATUS file.</td>
            </tr>
            <tr>
              <td>2006-03-28</td>
              <td>
                Ask root for the creation of committers' accounts on
                people.apache.org.
                The following accounts have been created: jaz, jonesde, jacopoc, hansbak, byersa, sichen.
              </td>
            </tr>
            <tr>
              <td>2006-07-13</td>
              <td>
                Ask root for the creation of a new account (jleroux) on
                people.apache.org for the new committer Jacques Le Roux.
              </td>
            </tr>
          </table>
</div>
<h4 id='Infrastructure'>Infrastructure</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2006-05-20</td>
              <td>Ask infrastructure to setup the Jira issuetracking system. (<a href="https://issues.apache.org/jira/browse/INFRA-713">INFRA-713</a>)</td>
            </tr>
            <tr>
              <td>2006-02-19</td>
              <td>Ask infrastructure to set up Mailing lists. (<a href="https://issues.apache.org/jira/browse/INFRA-720">INFRA-720</a>)</td>
            </tr>
            <tr>
              <td>2006-02-22</td> <td>Ask infrastructure to migrate
              mailing list subscribers from the ofbiz.org lists and
              archive mailing lists. (<a href="https://issues.apache.org/jira/browse/INFRA-738">INFRA-738</a>)
	      </td>
            </tr>
            <tr>
              <td>2006-03-01</td>
              <td>Ask infrastructure to create the SVN trunk and grant the committers karma. (<a href="https://issues.apache.org/jira/browse/INFRA-741">INFRA-741</a>)</td>
            </tr>
            <tr>
              <td>2006-06-02</td>
              <td>Migrate the issue tracker system to the ASF one (<a href="https://issues.apache.org/jira/browse/OFBIZ">OFBiz</a>) and keep existing issues on the old server (<a href="http://jira.ofbiz.org">jira.ofbiz.org</a>) but not allow the creation of new ones in the old server</td>
            </tr>
            <tr>
              <td>2006-06-23</td>
              <td>Move traffic to the ASF mailing lists and keep the archives in the <a href="http://lists.ofbiz.org/mailman/listinfo">old lists</a></td>
            </tr>
            <tr>
              <td>2006-07-01</td>
              <td>Migrate the project to the new ASF SVN server.</td>
            </tr>
            <tr>
              <td>2006-07-02</td>
              <td>Migrate the project website.</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>2006-07-02</td>
              <td>Update and clean up the website's resources.</td>
            </tr>
          </table>
</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>
