<!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>altrmi
 - 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='AltRMI+Project+Incubation+status'><img src="../images/redarrow.gif" />AltRMI Project Incubation status
</h2>
<div class="section-content">
<p>This page tracks the project status, incubator-wise. Items marked

        <strong>DONE
</strong>have been completed.

      </p>
<p><span class="retired">The AltRMI project retired on 2007-01-18</span></p>
</div>
        <h2 id='News'><img src="../images/redarrow.gif" />News
</h2>
<div class="section-content">
<h3 id='2007-01-18'>2007-01-18</h3>
<div class="section-content">
<p>Project closed down. Activity moved to 
        <a href="http://jremoting.codehaus.org/">JRemoting</a>. </p>
</div>
<h3 id='2003-10-30'>2003-10-30
</h3>
<div class="section-content">
<p>Still "refuses" 1.0 release. Currently at 0.98-SNAPSHOT. Major work
recently included Mavenization. Reports of commercial usage. Team
happy with remaining in the incubator for time being.
</p>
</div>
</div>
        <h2 id='Project+Website'><img src="../images/redarrow.gif" />Project Website
</h2>
<div class="section-content">
<p>The website for altrmi is at

        <a href="http://incubator.apache.org/projects/altrmi/">http://incubator.apache.org/projects/altrmi/
</a>
      </p>
</div>
        <h2 id='Identify+the+project+to+be+incubated'><img src="../images/redarrow.gif" />Identify the project to be incubated
</h2>
<div class="section-content">
<ul>
        <li>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.

          <strong>DONE
</strong>
        </li>
        <li>If request from an existing Apache project to adopt an external
package, then ask the Apache project for the cvs module and mail
address names.

          <strong>DONE
</strong>
        </li>
        <li>If request from outside Apache to enter an existing Apache project,
then post a message to that project for them to decide on acceptance.

          <strong>DONE
</strong>
        </li>
        <li>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.

          <strong>DONE
</strong>
        </li>
      </ul>
</div>
        <h2 id='Interim+responsibility'><img src="../images/redarrow.gif" />Interim responsibility
</h2>
<div class="section-content">
<ul>
        <li>
          <strong>DONE
</strong>Who has been identified as the shepherd for the incubation?

        </li>
      </ul>
<p>
        <strong>Nicola Ken Barozzi
</strong>
      </p>
<ul>
        <li>Are they tracking progress in the file
incubator/projects/{project_name}/STATUS?
</li>
      </ul>
</div>
        <h2 id='Copyright'><img src="../images/redarrow.gif" />Copyright
</h2>
<div class="section-content">
<ul>
        <li>
          <strong>DONE
</strong>Have 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.

          <strong>(project originated at the ASF)
</strong>
        </li>
      </ul>
<ul>
        <li>
          <strong>DONE
</strong>Have the files been updated to reflect the new ASF copyright?

          <strong>(project originated at the ASF)
</strong>
        </li>
      </ul>
<p>Verify distribution rights:
</p>
<ul>
        <li>
          <strong>DONE
</strong>For all code included with the distribution that is not under the
Apache license, do we have the right to combine with Apache-licensed
code and redistribute?

        </li>
      </ul>
<ul>
        <ul>
          <li>jUnit (not distributed; but IBM CPL)
</li>
          <li>qdox (ASF-based)
</li>
        </ul>
      </ul>
<ul>
        <li>
          <strong>DONE
</strong>Is all source code distributed by the project 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?

          <strong>(everything is ASF-licensed)
</strong>
        </li>
      </ul>
</div>
        <h2 id='Establish+a+list+of+active+committers'><img src="../images/redarrow.gif" />Establish a list of active committers
</h2>
<div class="section-content">
<ul>
        <li>Are all active committers in the STATUS file?
</li>
      </ul>
<ul>
        <li>
          <strong>DONE
</strong>Do they have accounts on cvs.apache.org?

        </li>
      </ul>
<ul>
        <li>Have they submitted a contributors agreement?
</li>
      </ul>
</div>
        <h2 id='Infrastructure'><img src="../images/redarrow.gif" />Infrastructure
</h2>
<div class="section-content">
<ul>
        <li>
          <strong>DONE
</strong>CVS modules created and committers added to avail file?

        </li>
      </ul>
<ul>
        <li>Mailing lists set up and archived?
</li>
      </ul>
<ul>
        <li>Problem tracking system (Bugzilla)?
</li>
      </ul>
<ul>
        <li>Has the project migrated to our infrastructure?
</li>
      </ul>
</div>
        <h2 id='Collaborative+Development'><img src="../images/redarrow.gif" />Collaborative Development
</h2>
<div class="section-content">
<ul>
        <li>
          <strong>DONE
</strong>Have all of the active long-term volunteers been identified and
acknowledged as committers on the project?

        </li>
      </ul>
<ul>
        <li>
          <strong>DONE
</strong>Are there three or more independent committers?

        </li>
      </ul>
<p>(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.)
</p>
<ul>
        <ul>
          <li>Paul Hammant
</li>
          <li>Vinay Chandran
</li>
          <li>(there are more committers but they are not active)
</li>
        </ul>
      </ul>
<ul>
        <li>Are project decisions being made in public by the committers?
</li>
      </ul>
<ul>
        <li>
          <strong>DONE
</strong>Are the decision-making guidelines published and agreed to by all of
the committers?

        </li>
      </ul>
<p>Following the "Standard" apache process
</p>
</div>
        <h2 id='Organizational+acceptance+of+responsibility+for+the+project'><img src="../images/redarrow.gif" />Organizational acceptance of responsibility for the project
</h2>
<div class="section-content">
<ul>
        <li>If graduating to an existing PMC, has the PMC voted to accept it?
</li>
      </ul>
<ul>
        <li>If graduating to a new PMC, has the board voted to accept it?
</li>
      </ul>
</div>
        <h2 id='Incubator+sign-off'><img src="../images/redarrow.gif" />Incubator sign-off
</h2>
<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 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>
