<!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>Qpid Incubation Status Template 
 - 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='Qpid+Project+Incubation+Status'><img src="../images/redarrow.gif" />Qpid Project Incubation Status 
</h2>
<div class="section-content">
<p>This page tracks the project status, incubator-wise. For more general 
project status, look on the project website. 
</p>
<p><span class="graduated">The Qpid project graduated on 2008-12-18</span></p>
</div>
        <h2 id='Description'><img src="../images/redarrow.gif" />Description 
</h2>
<div class="section-content">
<p>The Qpid Project provides an open and interoperable, multiple language implementations of the Advanced Messaged Queuing Protocol (AMQP) specification and related technologies including PGM, transaction management, queuing, distribution, security, management and heterogeneous multi-platform support for messaging.</p>
</div>
        <h2 id='News'><img src="../images/redarrow.gif" />News 
</h2>
<div class="section-content">
<ul>
        <li>Nov 08 - Jonathan Robie was voted in as new committer. He contributed the XML exchange and has done a lot of work improving examples/documentation around Qpid</li>
        <li>Oct 08 - M3 release </li> 
        <li>Sep 08 - Lahiru Gunathilake was voted in as a new committer. He contributed a CLI management tool as part of the GSoC project </li>
        <li>Sep 08 - Manuel Teira was voted in as a new committer. He is working on a solaris port for the c++ broker </li>
        <li>Sep 08 - Steve Huston was voted in as a new committer. He is working on a windows port for the c++ broker </li>
        <li>June 08 - Apache Axis2/C have AMQP support via Qpid </li>
        <li>June 08 - Apache Synapse and Apache Axis2/Java have AMQP support via Qpid </li>
        <li>May 08 - M2.1 release </li>
        <li>May 08 - Addition of new committer (Ted Ross) </li>
        <li>Feb 08 - Karma clean up, done by community process</li>
        <li>Jan 08 - Addition of new committer (Aidan Skinner)</li>
        <li>Jan 08 - Vote of Qpid community to request graduation as TLP</li>
        <li>Dec 07 - Set scope and dates for M2.1</li>
        <li>Dec 07 - Moving of build system back to Ant</li>
        <li>Jan 07 - Addition of new committer (Nuno Santos)</li>
        <li>Oct 07 - M2 release of Qpid</li>
        <li>July 07 - Closing of legal questions on TCK and passing all JMS TCK tests</li>
        <li>June 08 - Addition of new committer (Arnaud Simon)</li>
        <li>June 07 - Added Ruby client</li>
        <li>June 07 - Addition of .NET client</li>
        <li>June 07 - M1 release of Qpid</li>
        <li>Apr 07 - Addition of new committer (Tomas Restrepo)</li>
        <li>Apr 07 - Addition of new committer (Kevin Smith)</li>
        <li>Apr 07 - Addition of new committer (Rupert Smith)</li>
        <li>Jan 07 - Addition of new committer (Jim Meyering)</li>
        <li>Jan 07 - Addition of new committer (Robert Godfrey)</li>
        <li>Jan 07 - Addition of new committer (Andrew Stitcher)</li>
        <li>Jan 07 - New C++ build/ make system</li>
        <li>Dec 06 - Migration of build system to Maven</li>
        <li>Nov 06 - IP Clearance for code grant</li>
        <li>Nov 06 - Creation of committer accounts</li>
        <li>Sept 06 - Project setup</li>
        <li>Aug 06 - Acceptance into Incubator</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 id="www"> 
            <a href="http://qpid.apache.org">http://qpid.apache.org
</a> 
          </td> 
        </tr> 
        <tr> 
          <td>. 
</td> 
          <td>wiki 
</td> 
          <td> <a href="http://cwiki.apache.org/confluence/display/qpid/Index">http://cwiki.apache.org/confluence/display/qpid/Index 
</a> 
</td> 
        </tr> 
        <tr> 
          <td>Mailing list 
</td> 
          <td>dev 
</td> 
          <td id="mail-dev"><code>dev</code><code>@</code><code>qpid.apache.org</code></td>
        </tr> 
        <tr> 
          <td>. 
</td> 
          <td>svn 
</td> 
          <td id="mail-commits"><code>commits</code><code>@</code><code>qpid.apache.org</code></td>
        </tr> 
        <tr> 
          <td>. 
</td> 
          <td>private 
</td> 
          <td><code>private</code><code>@</code><code>qpid.apache.org</code></td>
        </tr> 
        <tr> 
          <td>Bug tracking 
</td> 
 	  <td>. 
</td> 
          <td id="tracker"><a href="http://issues.apache.org/jira/browse/QPID">http://issues.apache.org/jira/browse/QPID</a> 
</td> 
        </tr> 
        <tr> 
          <td>Source code 
</td> 
          <td>SVN 
</td> 
          <td id="svn"><a href="https://svn.apache.org/repos/asf/qpid/trunk/">https://svn.apache.org/repos/asf/qpid/trunk/</a> 
</td> 
        </tr> 
        <tr> 
          <td>Mentors 
</td> 
          <td>cliffs 
</td> 
          <td>Cliff Schmidt 
</td> 
        </tr> 
        <tr> 
          <td>. 
</td> 
          <td>pzf 
</td> 
          <td>Paul Fremantle 
</td> 
        </tr> 
        <tr>
          <td>.</td>
          <td>yoavs</td>
          <td>Yoav Shapira</td>
        </tr>
        <tr> 
          <td>. 
</td> 
          <td>
</td> 
          <td>Scott Deboy 
</td> 
        </tr> 
        <tr>
          <td>.
</td>
          <td>
</td>
          <td>Craig L Russell
</td>
        </tr>
        <tr> 
          <td>Committers 
</td> 
          <td>. 
</td> 
          <td>. 
</td> 
        </tr>        
        <tr> 
          <td>. 
</td> 
          <td>. 
</td> 
          <td> Aidan Skinner  
</td> 
        </tr> 
        <tr>
          <td>. 
</td> 
          <td>. 
</td> 
          <td>Alan Conway 
</td> 
        </tr> 
        <tr> 
          <td>. 
</td> 
          <td>. 
</td> 
          <td>Arnaud Simon 
</td> 
        </tr>
        <tr> 
          <td>. 
</td> 
          <td>. 
</td> 
          <td>Andrew Stitcher 
</td> 
        </tr> 
        <tr> 
          <td>. 
</td> 
          <td>. 
</td> 
          <td>Carl Trieloff  
</td> 
        </tr> 
        <tr> 
          <td>. 
</td> 
          <td>. 
</td> 
          <td>Gordon Sim
</td> 
        </tr> 
        <tr> 
          <td>. 
</td> 
          <td>. 
</td> 
          <td>Jim Meyering
</td> 
        </tr>
        <tr> 
          <td>. 
</td> 
          <td>. 
</td> 
          <td>John O'Hara 
</td> 
        </tr>
 <tr>
          <td>.
</td>
          <td>.
</td>
          <td>Jonathan Robie
</td>
        </tr>
        <tr> 
          <td>. 
</td> 
          <td>. 
</td> 
          <td>Kim van der Riet 
</td> 
        </tr>
<tr>
          <td>.
</td>
          <td>.
</td>
          <td>Lahiru Gunathilake
</td>
        </tr>
        <tr> 
          <td>. 
</td> 
          <td>. 
</td> 
          <td>Marnie McCormack 
</td> 
        </tr> 
        <tr> 
          <td>. 
</td> 
          <td>. 
</td> 
          <td>Martin Ritchie 
</td> 
        </tr>
        <tr>
          <td>.
</td>
          <td>.
</td>
          <td>Manuel Teira
</td>
        </tr>
        <tr> 
          <td>. 
</td> 
          <td>. 
</td> 
          <td>Kim van der Riet 
</td> 
        </tr>
        <tr> 
          <td>. 
</td> 
          <td>. 
</td> 
          <td>Paul Fremantle 
</td> 
        </tr>
        <tr> 
          <td>. 
</td> 
          <td>. 
</td> 
          <td>Nuno Santos 
</td> 
        </tr>        
        <tr> 
          <td>. 
</td> 
          <td>. 
</td> 
          <td>Rafael Schloming 
</td> 
        </tr> 
        <tr> 
          <td>. 
</td> 
          <td>. 
</td> 
          <td>Rajith Attapattu 
</td> 
        </tr> 
        <tr> 
          <td>. 
</td> 
          <td> 
</td> 
          <td>Robert Godfrey. 
</td> 
        </tr>
	<tr> 
          <td>. 
</td> 
          <td>. 
</td> 
          <td>Robert Greig. 
</td> 
        </tr>
        <tr>
          <td>. 
</td> 
          <td>. 
</td> 
          <td>Rupert Smith 
</td> 
        </tr> 
        <tr>
          <td>.
</td>
          <td>.
</td>
          <td>Steve Huston
</td>
        </tr>
        <tr> 
          <td>. 
</td> 
          <td>. 
</td> 
          <td>Yoav Shapira 
</td> 
        </tr>         
     </table>
</div>
        <h2 id='Incubation+status+reports'><img src="../images/redarrow.gif" />Incubation status reports 
</h2>
<div class="section-content">
<ul> 
        <li>Latest available at http://wiki.apache.org/incubator/April2007 
</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-08-27 
</td> 
              <td>Make sure that the requested project name does not already exist and 
check www.nameprotect.com to be sure that the name is not already 
trademarked for an existing software product. 
</td> 
            </tr> 
            <tr> 
              <td> N/A 
</td> 
              <td>If request from an existing Apache project to adopt an external 
package, then ask the Apache project for the SVN module and mail 
address names. 
</td> 
            </tr> 
            <tr> 
              <td>2006-08-27 
</td> 
              <td>If request from outside Apache to enter an existing Apache project, 
then post a message to that project for them to decide on acceptance. 
</td> 
            </tr> 
            <tr> 
              <td>2006-08-27 
</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-08-27 
</td> 
              <td>Identify all the Mentors for the incubation, by asking all that can 
be Mentors. 
</td> 
            </tr> 
            <tr> 
              <td>2006-11-02 
</td> 
              <td>Subscribe all Mentors on the pmc and general lists. 
</td> 
            </tr> 
            <tr> 
              <td>2006-08-27 
</td> 
              <td>Give all Mentors access to the incubator SVN repository. (to be done by 
PMC chair) 
</td> 
            </tr> 
            <tr> 
              <td>2007-04-17 
</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-11-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. 
</td> 
            </tr> 
            <tr> 
              <td>2006-11-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-11-01 
</td> 
              <td>Check and make sure that for all code included with the distribution 
that is not under the Apache license, e have the right to combine 
with Apache-licensed code and redistribute. 
</td> 
            </tr> 
            <tr> 
              <td>2006-11-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-09-01 
</td> 
              <td>Check that all active committers have submitted a contributors 
agreement. 
</td> 
            </tr> 
            <tr> 
              <td>2006-09-01 
</td> 
              <td>Add all active committers in the STATUS file. 
</td> 
            </tr> 
            <tr> 
              <td>2006-09-01 
</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>date 
</th> 
              <th>item 
</th> 
            </tr> 
            <tr> 
              <td>2006-09-01 
</td> 
              <td>Ask infrastructure to create source repository modules and grant the 
committers karma. 
</td> 
            </tr> 
            <tr> 
              <td>2006-09-01 
</td> 
              <td>Ask infrastructure to set up and archive Mailing lists. 
</td> 
            </tr> 
            <tr> 
              <td>2006-09-30 
</td> 
              <td>Decide about and then ask infrastructure to setup an issuetracking 
system (Bugzilla, Scarab, Jira). 
</td> 
            </tr> 
            <tr> 
              <td>2006-09-01 
</td> 
              <td>Migrate the project to our infrastructure. 
</td> 
            </tr> 
          </table>
</div>
<h4 id='Project+specific'>Project specific 
</h4>
<div class="section-content">
<p> 
            <em>Add project specific tasks here. 
</em> 
          </p>
</div>
</div>
<h3 id='Incubation'>Incubation 
</h3>
<div class="section-content">
<p>These action items have to be checked for during the whole incubation 
process. 
</p>
<p> 
          <em>These items are not to be signed as done during incubation, as they 
may change during incubation. 
</em> 
          <em>They are to be looked into and described in the status reports and 
completed in the request for incubation signoff. 
</em> 
        </p>
<h4 id='Collaborative+Development'>Collaborative Development 
</h4>
<div class="section-content">
<ul> 
            <li>Have all of the active long-term volunteers been identified and 
acknowledged as committers on the project? 
</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>
<h4 id='Project+Specific'>Project Specific 
</h4>
<div class="section-content">
<p> 
          <ul> 
            <li>Understanding the details between JCP and announce compliance</li> 
            <li>Making sure we are comfortable with the working relationship between Qpid 
and the AMQP Working Group.</li> 
          </ul> 
          </p>
</div>
</div>
<h3 id='Exit'>Exit 
</h3>
<div class="section-content">
<p> 
          <em>Things to check for before voting the project out. 
</em> 
        </p>
<h4 id='Organizational+acceptance+of+responsibility+for+the+project'>Organizational acceptance of responsibility for the project 
</h4>
<div class="section-content">
<ul> 
            <li>If graduating to an existing PMC, has the PMC voted to accept it? 
</li> 
            <li>If graduating to a new PMC, has the board voted to accept it? 
</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-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>
