<!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>ActiveMQ 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='ActiveMQ+Project+Incubation+Status'><img src="../images/redarrow.gif" />Apache ActiveMQ Now A Top Level Project
						</h2>
<div class="section-content">
<p>The Apache ActiveMQ project has completed incubation. Please go to
						the main project site :
						</p>
<p>
						          <a href="http://activemq.apache.org/">http://activemq.apache.org/
						</a>
						        </p>
<p><span class="graduated">The ActiveMQ project graduated on 2007-02-06</span></p>
</div>
        <h2 id='Description'><img src="../images/redarrow.gif" />Description
            </h2>
<div class="section-content">
<p>
                The ActiveMQ project is a robust and high performance Message
                Orientated Middleware provider which is integrated into Apache
                Geronimo but also be usable from inside any JVM.
            </p>
</div>
        <h2 id='News'><img src="../images/redarrow.gif" />News
            </h2>
<div class="section-content">
<ul>
                <li>2005-12-09 Project announced publicly.</li>
                <li>2005-11-18 Project proposed and accepted for incubation in Apache.</li>
                <li>2006-03-29 ActiveMQ 4 fully integrated into Geronimo 1.2.</li>
                <li>2006-04-10 Added Nathan Mittler as a committer</li>
                <li>2006-04-10 Working on the ActiveMQ 4.0 RC2 release candidate</li>
                <li>2006-04-10 Currently working to accept a donation from Amazon for the ActiveMQ C++ API</li>
                <li>2006-06-13 Version 4.0 Released</li>
                <li>2006-04-10 Working started on next 4.1 version</li>
                <li>2006-06-20 Version 4.0.1 Released</li>
                <li>2006-07-31 Amazon code accepted</li>
                <li>2006-09-10 Accepted Tim Bish as a committer</li>
                <li>2006-11-13 ActiveMQ Version 4.0.2 Released</li>
                <li>2006-11-24 ActiveMQ CPP Version 1.0 Released</li>
                <li>2006-12-04 ActiveMQ Version 4.1.0 Released</li>
            </ul>
</div>
        <h2 id='Project+info'><img src="../images/redarrow.gif" />Project info
            </h2>
<div class="section-content">
<p>
                If the project website and code repository are not yet setup, use the
                following table:
            </p>
<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/activemq/">http://incubator.apache.org/activemq/</a>
                    </td>
                </tr>
                <tr>
                    <td>Mailing list</td>
                    <td>dev</td>
                    <td>activemq-dev@geronimo.apache.org</td>
                </tr>
                <tr>
                    <td />
                    <td>users</td>
                    <td>activemq-users@geronimo.apache.org</td>
                </tr>
                <tr>
                    <td />
                    <td>commits</td>
                    <td>activemq-commits@geronimo.apache.org</td>
                </tr>
                <tr>
                    <td />
                    <td>pmc</td>
                    <td>activemq-private@incubator.apache.org</td>
                </tr>
                <tr>
                    <td>Bug tracking</td>
                    <td>JIRA
                        <br />
                    </td>
                    <td>
                        <a href="https://issues.apache.org/activemq/browse/AMQ">https://issues.apache.org/activemq/browse/AMQ</a>
                        <br />
                    </td>
                </tr>
                <tr>
                    <td>Source code</td>
                    <td>SVN
                        <br />
                    </td>
                    <td>
                        <a href="http://svn.apache.org/repos/asf/incubator/activemq/"> http://svn.apache.org/repos/asf/incubator/activemq/</a>
                        <br />
                    </td>
                </tr>
                <tr>
                    <td>Proposal</td>
                    <td>Wiki
                        <br />
                    </td>
                    <td>
                        <a href="http://wiki.apache.org/incubator/ActiveMqProposal">
                            http://wiki.apache.org/incubator/ActiveMqProposal</a>
                        <br />
                    </td>
                </tr>
                <tr>
                    <td>Mentors</td>
                    <td>jvanzyl</td>
                    <td>Jason van Zyl</td>
                </tr>
                <tr>
                    <td />
                    <td>jstrachan</td>
                    <td>James Strachan</td>
                </tr>
                <tr>
                    <td />
                    <td>noel</td>
                    <td>Noel Bergman</td>
                </tr>
                <tr>
                    <td>Committers</td>
                    <td>ammulder</td>
                    <td>Aaron Mulder</td>
                </tr>
                <tr>
                    <td />
                    <td>adc</td>
                    <td>Alan D. Cabrera</td>
                </tr>
                <tr>
                    <td />
                    <td>brianm</td>
                    <td>Brian McCallister</td>
                </tr>
                <tr>
                    <td />
                    <td>dain</td>
                    <td>Dain Sundstrom</td>
                </tr>
                <tr>
                    <td />
                    <td>djencks</td>
                    <td>David Jencks</td>
                </tr>
                <tr>
                    <td />
                    <td>gregw</td>
                    <td>Greg Wilkins</td>
                </tr>
                <tr>
                    <td />
                    <td>chirino</td>
                    <td>Hiram Chirino</td>
                </tr>
                <tr>
                    <td />
                    <td>jstrachan</td>
                    <td>James Strachan</td>
                </tr>
                <tr>
                    <td />
                    <td>jvanzyl</td>
                    <td>Jason van Zyl</td>
                </tr>
                <tr>
                    <td />
                    <td>proyal</td>
                    <td>Peter Royal</td>
                </tr>
                <tr>
                    <td />
                    <td>aco</td>
                    <td>Adrian Co</td>
                </tr>
                <tr>
                    <td />
                    <td>dflores</td>
                    <td>Darwin Flores</td>
                </tr>
                <tr>
                    <td />
                    <td>djcook</td>
                    <td>Dennis Cook</td>
                </tr>
                <tr>
                    <td />
                    <td>foconer</td>
                    <td>Frederick Oconer</td>
                </tr>
                <tr>
                    <td />
                    <td>gnodet</td>
                    <td>Guillaume Nodet</td>
                </tr>
                <tr>
                    <td />
                    <td>jlim</td>
                    <td>Jonas Lim</td>
                </tr>
                <tr>
                    <td />
                    <td>jgapuz</td>
                    <td>Joseph Gapuz</td>
                </tr>
                <tr>
                    <td />
                    <td>pvillacorta</td>
                    <td>Patrick Villacorta</td>
                </tr>
                <tr>
                    <td />
                    <td>rsaba</td>
                    <td>Ramzi Saba</td>
                </tr>
                <tr>
                    <td />
                    <td>rajdavies</td>
                    <td>Rob Davies</td>
                </tr>
                <tr>
                    <td />
                    <td>nmittler</td>
                    <td>Nathan Christopher Mittler</td>
                </tr>
                <tr>
                    <td />
                    <td>tabish</td>
                    <td>Tim Bish</td>
                </tr>
            </table>
</div>
        <h2 id='Incubation+Status+Reports'><img src="../images/redarrow.gif" />Incubation Status Reports</h2>
<div class="section-content">
<h3 id='Status2006Q1'>2006/Q1</h3>
<div class="section-content">
<p>The full status of incubation is here. In summary we're most of the way through incubation now, things have been progressing very well; the code is clean and using only Apache-compliant libraries, it has the correct copyright notices and is in the org.apache.activemq namespace and is generally working well now. We've got the software grants sorted and most developers have their CLAs on file and accounts created (we've a few more to do once we know the CLAs are on file).</p>
<p>We've voted on a milestone release which should go out soon once we've figured out the practicalities of doing an incuabtor milestone release. Our main outstanding issue now is creating the full website at Apache - which should be done in the next week or two - for now there is a simple home page.</p>
</div>
<h3 id='Status2006March'>2006/March</h3>
<div class="section-content">
<p>The ActiveMQ project is progressing toward graduation and things are moving along well. Below are the highlights of activity on the project:</p>
<ul>
                  <li>Website status Updated</li>
                  <li>Added Nathan Mittler from Amazon as a committer</li>
                  <li>Working on the ActiveMQ 4.0 RC2 release candidate</li>
                  <li>Currently working to accept a donation from Amazon for the ActiveMQ C++ API</li>
                  </ul>
</div>
<h3 id='Status2006April'>2006/April</h3>
<div class="section-content">
<p>The ActiveMQ project is progressing toward graduation and things are moving along well. Below are the highlights of activity on the project:</p>
<ul>
                  <li>Website status Updated</li>
                  <li>Added Nathan Mittler from Amazon as a committer</li>
                  <li>Working on the ActiveMQ 4.0 RC2 release candidate</li>
                  <li>Currently working to accept a donation from Amazon for the ActiveMQ C++ API</li>
                  </ul>
</div>
<h3 id='Status2006May'>2006/May</h3>
<div class="section-content">
<p>The STATUS file for the project is up to date. The code is clean and using only Apache-compliant libraries, it has the correct copyright notices and is in the org.apache.activemq namespace. We've got all the software grants sorted and all developers have their CLAs on file and accounts created. The project's active mailing lists are proof of the vibrant community behind ActiveMQ. Nathan Mittler was voted in as committer due to his excellent work on the C++ client for ActiveMQ.</p>
<p>The Java code base has has being going through QA and stabilization for the past few months and several release candidates for 4.0 have been cut. The 4.0 final release is currently under Vote and we expect to have a final release very shortly. Development is starting to gear up now for the 4.1 release and we are excited to find out where the community and committers drive the development of the next 4.1 release.</p>
<p>The website home page has now been sorted out and is being checked into svn. The static HTML is being generated from a Confluence wiki and content is very easy to update now. See: http://incubator.apache.org/activemq/</p>
</div>
<h3 id='Status2006June'>2006/June</h3>
<div class="section-content">
<p>The STATUS file for the project is up to date. The code is clean and using only Apache-compliant libraries, it has the correct copyright notices and is in the org.apache.activemq namespace. We've got all the software grants sorted and all developers have their CLAs on file and accounts created. The project's active mailing lists are proof of the vibrant community behind ActiveMQ.</p>
<p>The Apache ActiveMQ 4.0 final has successfully been released. For more information about the release, see: [WWW] http://incubator.apache.org/activemq/activemq-40-release.html Development has started on the next 4.1 release. In tandem, the 4.0 branch has continued to stablize and a 4.0.1 release should be ready shortly. Bug fix releases should start occurring now with more frequency.</p>
<p>The website home page has now been sorted out and is being checked into svn. The static HTML is being generated from a Confluence wiki and content is very easy to update now. See: http://incubator.apache.org/activemq/</p>
</div>
<h3 id='Status2006September'>2006/September</h3>
<div class="section-content">
<p>The ActiveMQ community continues to grow as evidenced by the mailing list volumes. Each month mailing list volumes continues to grow. Last month we had 574 emails sent to the developer list and 905 email sent to the user list! We have also seen a big increase in the amount of patches and contributions submitted from non ActiveMQ committers.</p>
<p>A large amount of development work and community interest has been around the Native clients used to access the Messaging broker. Tim Bish's excellent work on the STOMP c++ client has earned him an invitation to become an ActiveMQ committer. Amazon did a in house c++ client to ActiveMQ and that source code donation was accepted and committed to the source tree.</p>
<p>All the source headers in the 2 active branches have be update to comply with the new policies outline at: [WWW] http://www.apache.org/legal/src-headers.html.</p>
<p>The Apache ActiveMQ 4.0.1 has successfully been released. For more information about the release, see: [WWW] http://incubator.apache.org/activemq/activemq-401-release.html Development continues on the next 4.1 release. In tandem, the 4.0 branch has continued to stabilize and a 4.0.2 release should be ready shortly.</p>
<p>The project has discussed graduating and feels that ActiveMQ is ready and would prefer to become a TLP. Once the 4.0.2 release is completed expect more serious discussions regarding graduation to pop up on the incubator mailing lists.</p>
</div>
</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>2005-12-05</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.  
                  <!-- 
                  Searched using the following:
                  http://tess2.uspto.gov/bin/gate.exe?f=tess&state=eb1lm1.1.1
                  -->
                  </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>2005-11-18</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>N/A</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>2005-11-18</td>
                  <td>
                  Identify all the Mentors for the incubation, by asking all that can 
                  be Mentors.  
                  </td>
                </tr>
                <tr>
                  <td>2006-03-17</td>
                  <td>
                  Subscribe all Mentors on the pmc and general lists.  
                  </td>
                </tr>
                <tr>
                  <td>2005-12-05</td>
                  <td>
                  Give all Mentors access to the incubator SVN repository. (to be done by 
                  PMC chair) 
                  </td>
                </tr>
                <tr>
                  <td>2005-12-05</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-02-04</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>2005-12-09</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>2005-12-09</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>2005-12-09</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>2005-12-15</td>
                  <td>
                  Check that all active committers have submitted a contributors 
                  agreement.  
                  </td>
                </tr>
                <tr>
                  <td>2006-02-01</td>
                  <td>
                  Add all active committers in the STATUS file.  
                  </td>
                </tr>
                <tr>
                  <td>2005-12-15</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>2005-12-07</td>
                  <td>
                  Ask infrastructure to create source repository modules and grant the 
                  committers karma.  
                  </td>
                </tr>
                <tr>
                  <td>2005-12-05</td>
                  <td>
                  Ask infrastructure to set up and archive Mailing lists.  
                  </td>
                </tr>
                <tr>
                  <td>2006-03-22</td>
                  <td>
                  Decide about and then ask infrastructure to setup an issuetracking 
                  system (Bugzilla, Scarab, Jira).  
                  </td>
                </tr>
                <tr>
                  <td>2005-12-09</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?  <b>DONE</b>
                </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.) <b>DONE</b>
                </li>
                <li>
                Are project decisions being made in public by the committers?  <b>DONE</b>
                </li>
                <li>
                Are the decision-making guidelines published and agreed to by all of 
                the committers?  <b>DONE</b>
                </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?  <b>DONE</b>
                </li>
              </ul>
</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='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>
