<!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>JSR-301 Reference Implementation Codebase Intellectual Property (IP) Clearance 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='JSR-301+Reference+Implementation+Codebase+Intellectual+Property+%28IP%29+Clearance+Status'><img src="../images/redarrow.gif" />JSR-301 Reference Implementation 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>The codebase is the JSR-301 reference implementation.</p>
<p>This codebase will become a subproject of Apache MyFaces.</p>
</div>
        <h2 id='Project+info'><img src="../images/redarrow.gif" />Project info</h2>
<div class="section-content">
<ul>
				<li>Which PMC will be responsible for the code: Apache MyFaces</li>
			</ul>
<ul>
				<li>Into which existing project/module: Apache MyFaces</li>
			</ul>
<ul>
				<li>Officer or member managing donation: Manfred Geiler</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>2007-09-03</td>
						<td>If applicable, make sure that any associated name does not
                already exist and is not already trademarked for an existing software
                product.</td>
					</tr>
				</table>
<p>
MD5 or SHA1 sum for <a href="https://issues.apache.org/jira/browse/MYFACES-1664">donated software</a>:
<br />md5: 861076b6accc3728a3e36d4c240cf28f
<br />sha1: 9bd74ae4e27c8f41bdea51437a457062960103fb
        </p>
<h4 id='Copyright'>Copyright</h4>
<div class="section-content">
<table class="colortable" width="100%">
						<tr>
							<th>date</th>
							<th>item</th>
						</tr>
						<tr>
							<td>2007-10-11</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>2007-10-11</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>
<p>
Identify name recorded for software grant: javax.portlet.faces, com.oracle.portlet.faces
					</p>
</div>
<h4 id='Verify+distribution+rights'>Verify distribution rights</h4>
<div class="section-content">
<p>
Corporations and individuals holding existing distribution rights:
            </p>
<ul>
						<li>Oracle Corporation</li>
					</ul>
<table class="colortable" width="100%">
						<tr>
							<th>date</th>
							<th>item</th>
						</tr>
						<tr>
							<td>2007-10-11</td>
							<td>Check that all active committers have a signed CLA on
                  record.</td>
						</tr>
						<tr>
							<td>2007-10-11</td>
							<td>Remind active committers that they are responsible for
                  ensuring that a Corporate CLA is recorded if such is
                  required to authorize their contributions under their
                  individual CLA.</td>
						</tr>
						<tr>
							<td>2007-10-11</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>2007-10-11</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">
<p>
Related VOTEs: 
        </p>
<ul>
					<li>
						<em>The vote was started on dev@myfaces.apache.org on 2007-10-15 and will close on 2007-10-18.</em>
					</li>
				</ul>
</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>
