<!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>XBean Codebase Intellectual Property (IP) Clearance 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='XBean+Codebase+Intellectual+Property+%28IP%29+Clearance+Status'><img src="../images/redarrow.gif" />XBean Codebase Intellectual Property (IP) Clearance Status</h2>
<div class="section-content">
</div>
        <h2 id='Description'><img src="../images/redarrow.gif" />Description</h2>
<div class="section-content">
<p>XBean is a new set of functional modules for the Apache Geronimo project. XBean includes the following
        modules:</p>
<ul>
        <li>classpath: Utilities for manipulating the class path of a server after is has been initialized</li>
        <li>jmx: Utilities for automated wrapping of serves with an MBean</li>
        <li>kernel: A light weight kernel</li>
        <li>osgi: Experimental bidirectional bridge between OSGi and the XBean kernel</li>
        <li>reflect: Simple API for build objects using reflection</li>
        <li>sca: SCA annotation support for service building</li>
        <li>server: Supporting classes to start a kernel in a standalone server</li>
        <li>spring: Simplified XML extensions for Spring</li>
        <li>telnet: Lightweight telnet server for scripting the kernel</li>
      </ul>
</div>
        <h2 id='Project+info'><img src="../images/redarrow.gif" />Project info</h2>
<div class="section-content">
<ul>
        <li>Geronimo module</li>
      </ul>
<ul>
        <li>geronimo/xbean</li>
      </ul>
<p>
        <em>Completed tasks are shown by the completion date (YYYY-MM-dd).</em>
      </p>
<h3 id='Identify+the+codebase'>Identify the codebase</h3>
<div class="section-content">
<table class="colortable" width="100%">
          <tr>
            <th>date</th>
            <th>item</th>
          </tr>
          <tr>
            <td>2006-01-20</td>
            <td>No hits at <a href="http://tess2.uspto.gov/bin/gate.exe?f=login&amp;p_lang=english&amp;p_d=trmk">United States Patent and Trademark Office</a></td>
          </tr>
        </table>
<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-01-20</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-01-20</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-01-20</td>
              <td><p>Check that all active committers have a signed CLA on record.</p>
                svn log https://svn.codehaus.org/xbean | grep "r[0-9][0-9]* | " |
                sed "s/r[0-9][0-9]* | \(.*\) | .* | .*$/\1/" | sort | uniq
                <p>All of the committers have a CLA on file at Apache. The following
                  table maps the unix user names to real names:</p>
                <table>
                  <tr><td>chirino</td><td>Hiram Chirino</td></tr>
                  <tr><td>dain</td><td>Dain Sundstrom</td></tr>
                  <tr><td>dandiep</td><td>Daniel Diephouse</td></tr>
                  <tr><td>dblevins</td><td>David Blevins</td></tr>
                  <tr><td>gnt</td><td>Guillaume Nodet</td></tr>
                  <tr><td>jstrachan</td><td>James Strachan</td></tr>
                  <tr><td>jvanzyl</td><td>Jason van Zyl</td></tr>
                  <tr><td>maguro</td><td>Alan Cabrera</td></tr>
                  <tr><td>root</td><td>-service account-</td></tr>
                  <tr><td>spullara</td><td>Sam Pullara</td></tr>
                </table>
              </td>
            </tr>
            <tr>
              <td>2006-01-20</td>
              <td>Remind active committers that they are responsible for ensuring that
                a Corporate CLA is recorded if such is is required to authorize their
                contributions under their individual CLA.
              </td>
            </tr>
            <tr>
              <td>2006-01-20</td>
              <td>Check and make sure that for all items 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-01-20</td>
              <td>Check and make sure that all items depended upon 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>
<p>Generally, the result of checking off these items will be a Software
            Grant, CLA, and Corporate CLA for ASF licensed code, which must have
            no dependencies upon items whose licenses that are incompatible with
            the Apache License.
          </p>
</div>
</div>
<h3 id='Organizational+acceptance+of+responsibility+for+the+project'>Organizational acceptance of responsibility for the project</h3>
<div class="section-content">
<ul>
          <li>Has the receiving PMC voted to accept it? YES</li>
        </ul>
<u>
          <a href="http://mail-archives.apache.org/mod_mbox/geronimo-dev/200602.mbox/%3c43E282DD.8020502@hogstrom.org%3e">
              http://mail-archives.apache.org/mod_mbox/geronimo-dev/200602.mbox/%3c43E282DD.8020502@hogstrom.org%3e
            <br />
          </a>
          <br />
        </u>
<u>
          <a href="http://mail-archives.apache.org/mod_mbox/geronimo-dev/200601.mbox/%3c6BA20318-F62D-4645-AF21-AE31428C7351@iq80.com%3e">
              http://mail-archives.apache.org/mod_mbox/geronimo-dev/200601.mbox/%3c6BA20318-F62D-4645-AF21-AE31428C7351@iq80.com%3e
            <br />
          </a>
          <br />
        </u>
</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>
