<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License. 
-->
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="stylesheet" href="../style/bootstrap-1-3-0-min.css" type="text/css" />
  <link rel="stylesheet" href="../style/style.css" type="text/css" />
  <script src="https://www.apachecon.com/event-images/snippet.js"></script>
        <title>Apache OFBiz Incubation Status - Apache Incubator</title>
  
 </head>
 <body>
 <div class="container">
  <div class="row"><div class="span6"><a href="https://www.apache.org/"><img src="http://www.apache.org/img/asf_logo.png" alt="The Apache Software Foundation" border="0" style="margin-top: 2px" height="88"/></a></div>
<div class="span7"><a href="/"><img src="https://incubator.apache.org/images/incubator_feather_egg_logo_sm.png" alt="The Apache Software Foundation Incubator" border="0" style="margin-top: 2px" height="88"/></a></div>
<div class="span2"><a href="https://www.apache.org/foundation/contributing.html"><img src="https://www.apache.org/images/SupportApache-small.png" height="100" width="100"/></a></div>
</div>
  <div class="row"><div class="span16"><hr noshade="noshade" size="1"/></div></div>
  <div class="row">
   <div class="span4">
    <form action="http://www.google.com/search" method="get">
     <input value="incubator.apache.org" name="sitesearch" type="hidden"/>
     <input size="20" name="q" id="query" type="text" value="search..."
      onclick="if(this.value == 'search...') {this.value = ''}"/>
     <input name="Search" value="Go" type="submit"/>
    </form>
          <div class="menuheader">General</div>
    <menu compact="compact">
          <li><a href="../index.html">Welcome</a></li> 
          <li><a href="../cookbook/">Incubator Cookbook</a></li> 
          <li><a href="../policy/incubation.html">Incubation Policy</a></li> 
          <li><a href="../guides/roles_and_responsibilities.html">Roles and Responsibilities</a></li> 
          <li><a href="../faq.html">General FAQ</a></li> 
          <li><a href="http://wiki.apache.org/incubator">Incubator Wiki</a></li> 
          <li><a href="../whoweare.html">Who We Are</a></li> 
            </menu>
      <div class="menuheader">Status</div>
    <menu compact="compact">
          <li><a href="../projects">Project List</a></li> 
          <li><a href="../clutch">Clutch Report</a></li> 
          <li><a href="../ip-clearance">IP Clearance</a></li> 
            </menu>
      <div class="menuheader">Entry Guides</div>
    <menu compact="compact">
          <li><a href="../guides/proposal.html">Proposal Guide</a></li> 
            </menu>
      <div class="menuheader">Podling Guides</div>
    <menu compact="compact">
          <li><a href="../guides/committer.html">Podling Committers</a></li> 
          <li><a href="../guides/ppmc.html">Podling PMC (PPMC)</a></li> 
          <li><a href="../guides/mentor.html">Podling Mentor</a></li> 
          <li><a href="../guides/releasemanagement.html">Podling Releases</a></li> 
          <li><a href="../guides/branding.html">Podling Branding/Publicity</a></li> 
          <li><a href="../guides/sites.html">Podling Websites</a></li> 
          <li><a href="../guides/graduation.html">Graduation</a></li> 
          <li><a href="../guides/retirement.html">Retirement</a></li> 
            </menu>
      <div class="menuheader">Other Guides</div>
    <menu compact="compact">
          <li><a href="../guides/participation.html">Participation</a></li> 
          <li><a href="../faq.html">General FAQ</a></li> 
          <li><a href="../guides/chair.html">IPMC Chair</a></li> 
          <li><a href="../guides/lists.html">Mailing Lists</a></li> 
          <li><a href="../guides/website.html">Incubator Website</a></li> 
            </menu>
      <div class="menuheader">ASF</div>
    <menu compact="compact">
          <li><a href="http://www.apache.org/foundation/how-it-works.html">How Apache Works</a></li> 
          <li><a href="http://www.apache.org/dev/">Developer Documentation</a></li> 
          <li><a href="http://www.apache.org/foundation/">Foundation</a></li> 
          <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsor Apache</a></li> 
          <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> 
            </menu>
    <div id="menuheader">
      <a class="acevent" data-format="square" data-width="135" data-mode="light" data-event="random"></a>
    </div>
   </div>
   
   <div class="span12">
            <h2 id='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-2024 The Apache Software Foundation<br />
     Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br/>
     Apache Incubator, Apache, the Apache feather logo, and the Apache Incubator project logo are trademarks of The Apache Software Foundation.
     
     
    </div>
  </div>
 </div> 
 </body>
</html>
