<!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>Ode 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='Ode+Project+Incubation+Status'><img src="../images/redarrow.gif" />Ode Project Incubation Status</h2>
<div class="section-content">
<p>This page tracks the project status, incubator-wise.</p>
<p><span class="graduated">The Ode project graduated on 2007-07-18</span></p>
</div>
        <h2 id='Description'><img src="../images/redarrow.gif" />Description</h2>
<div class="section-content">
<p>
                Ode - Orchestration Director Engine
            </p>
<p>
                "A lyric poem of some length, usually of a serious or meditative nature and having an elevated style and
                formal stanzaic structure". - American Heritage Dictionary
            </p>
<p>
                Ode is an orchestration service that implements the WS-BPEL specification. The
                project includes an orchestration engine abstraction, standard externally
                defined interfaces/bindings. The interface implementations and/or bindings
                enables the orchestration service to be plugged into various service bus or
                component architectures.
            </p>
</div>
        <h2 id='News'><img src="../images/redarrow.gif" />News
            </h2>
<div class="section-content">
<ul>
                <li>2007-07-18 ODE Graduates. The Board has decided to establish ODE TLP.</li>
                <li>2007-05-29 ODE 1.0 is released.</li>
                <li>2006-10-11 An official website is published.</li>
                <li>2006-07-28 A single codebase is adopted.</li>
                <li>2006-04-04 The two code donations are in the repository.</li>
                <li>2006-02-01 Project announced publicly.</li>
            </ul>
</div>
        <h2 id='Project+info'><img src="../images/redarrow.gif" />Project info
            </h2>
<div class="section-content">
<table class="colortable" width="100%">
                <tr>
                    <th>item</th>
                    <th>type</th>
                    <th>reference</th>
                </tr>
                <tr>
                    <td>Website</td>
                    <td>www</td>
                    <td>
                        <a href="http://incubator.apache.org/ode/">http://incubator.apache.org/ode/</a>
                    </td>
                </tr>
                <tr>
                    <td>Mailing list</td>
                    <td>dev</td>
                    <td>ode-dev@incubator.apache.org</td>
                </tr>
                <tr>
                    <td>Mailing list</td>
                    <td>users</td>
                    <td>ode-users@incubator.apache.org</td>
                </tr>
                <tr>
                    <td>Mailing list</td>
                    <td>commits</td>
                    <td>ode-commits@incubator.apache.org</td>
                </tr>
                <tr>
                    <td>Mailing list</td>
                    <td>PPMC</td>
                    <td>ode-private@incubator.apache.org</td>
                </tr>
                <tr>
                    <td>Bug tracking</td>
                    <td>JIRA</td>
                    <td>https://issues.apache.org/jira/browse/ODE</td>
                </tr>
                <tr>
                    <td>Source code</td>
                    <td>SVN</td>
                    <td>
                        <a href="http://svn.apache.org/repos/asf/incubator/ode/">
                            http://svn.apache.org/repos/asf/incubator/ode/</a>
                    </td>
                </tr>
                <tr>
                    <td>Proposal</td>
                    <td>Wiki
                    </td>
                    <td>
                        <a href="http://wiki.apache.org/incubator/OdeProposal">
                            http://wiki.apache.org/incubator/OdeProposal</a>
                    </td>
                </tr>
                <tr>
                    <td>Mentors</td>
                    <td>
                        pzf - Paul Fremantle<br />
                        niclas - Niclas Hedhman<br />
                        dims - Davanum Srinivas
                    </td>
                    <td />
                </tr>
                <tr>
                    <td>PMC Members</td>
                    <td>
                        adc - Alan Cabrera<br />
                        assaf - Assaf Arkin<br />
                        boisvert - Alex Boisvert<br />
                        charper - Cory Harper<br />
                        dims - Davanum Srinivas<br />
                        gnodet - Guillaume Nodet<br />
                        lwaterman - Lance Waterman<br />
                        mriou - Matthieu Riou<br />
                        niclas - Niclas Hedhman<br />
                        paulrbrown - Paul R. Brown<br />
                        pzf - Paul Fremantle<br />
                        rajdavies - Rob Davies<br />
                        mszefler - Maciej Szefler<br />
                    </td>
                    <td />
                </tr>
                <tr>
                    <td>Committers</td>
                    <td>adc - Alan Cabrera<br />
                        assaf - Assaf Arkin<br />
                        bflood - William B. Flood<br />
                        boisvert - Alex Boisvert<br />
                        charper - Cory Harper<br />
                        dims - Davanum Srinivase<br />
                        geirm - Geir Magnusson Jr.<br />
                        gnodet - Guillaume Nodet<br />
                        jstrachan - James Strachan<br />
                        lwaterman - Lance Waterman<br />
                        mriou - Matthieu Riou<br />
                        mszefler - Maciej Szefler<br />
                        paulrbrown - Paul R. Brown<br />
                        rajdavies - Rob Davies</td>
                    <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/April2006">April 2006</a></li>
                <li><a href="http://wiki.apache.org/incubator/May2006">May 2006</a></li>
                <li><a href="http://wiki.apache.org/incubator/June2006">June 2006</a></li>
                <li><a href="http://wiki.apache.org/incubator/September2006">September 2006</a></li>
                <li><a href="http://wiki.apache.org/incubator/December2006">December 2006</a></li>
                <li><a href="http://wiki.apache.org/incubator/March2007">March 2007</a></li>
                <li><a href="http://wiki.apache.org/incubator/June2007">June 2007</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-02</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>2006-02</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-02</td>
                            <td>
                                Identify all the Mentors for the incubation, by asking all
                                that can be Mentors.
                            </td>
                        </tr>
                        <tr>
                            <td>2006-03</td>
                            <td>Subscribe all Mentors on the pmc and general lists.</td>
                        </tr>
                        <tr>
                            <td>2006-03</td>
                            <td>
                                Give all Mentors access to the incubator SVN repository.
                                (to be done by PMC chair)
                            </td>
                        </tr>
                        <tr>
                            <td>2006-03</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-05</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-07</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</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</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>
                                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">
<table class="colortable" width="100%">
                        <tr>
                            <th>status</th>
                            <th>item</th>
                        </tr>
                        <tr>
                            <td>DONE</td>
                            <td>
                                Check the IP rights and make sure that we have the right to 
                                distribute an implementation of the WS-BPEL standards.
                            </td>
                        </tr>
                        <tr>
                            <td>DONE</td>
                            <td>Remove the dependency toward Hibernate (LGPL).</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>
<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?
                        </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>
                    <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?
                        </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?
                        </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>
