<!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>jUDDI
 - 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='jUDDI+Project+Incubation+Status'><img src="../images/redarrow.gif" />jUDDI Project Incubation Status
</h2>
<div class="section-content">
<p>jUDDI graduated from the Apache Incubator in March, 2004 and is now a top level project (TLP) at Apache.  For the latest information about jUDDI project please visit <a href="http://juddi.apache.org/">http://juddi.apache.org/</a>
</p>
<p><strong>THIS WEBSITE IS NO LONGER MAINTAINED! 
</strong>  
</p>
<p><span class="graduated">The jUDDI project graduated in 2004-03</span></p>
</div>
        <h2 id='Project+Website'><img src="../images/redarrow.gif" />Project Website
</h2>
<div class="section-content">
<p>The website for jUDDI is at

        <a href="http://juddi.apache.org/">http://juddi.apache.org/
</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">
<p>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.
</p>
<p>On 22-Dec-2003 we used the free online search form available at
www.nameprotect.com. No trademark conflicts were found for the name
"jUDDI' in the US or Canada. The domain name 'juddi.org' is currently
owned by a jUDDI committer (Steve Viens).
</p>
<p>
        <strong>DONE
</strong>
      </p>
<p>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.
</p>
<p>An Apache cvs (now svn) module is in place and the jUDDI source has been
imported. Source can be viewed via ViewCVS at the following URL:
</p>
<p>
        <a href="http://svn.apache.org/viewcvs.cgi/juddi/">http://svn.apache.org/viewcvs.cgi/juddi/
</a>
      </p>
<p>
        <strong>DONE
</strong>
      </p>
<p>The mailing lists dev@juddi.apache.org and
user@juddi.apache.org have been created and are being archived at 
Apache. All history for these lists from when they were
hosted on SourceForge.net have been imported into the archives at
both Apache.
</p>
<table class="colortable" width="100%">
        <tr>
          <th>List
</th>
          <th>Archive
</th>
          <th>URL
</th>
        </tr>
        <tr>
          <td>juddi-dev
</td>
          <td>Apache
</td>
          <td>
            <a href="http://mail-archives.apache.org/mod_mbox/juddi-dev/">http://mail-archives.apache.org/mod_mbox/juddi-dev/
</a>
          </td>
        </tr>
        <tr>
          <td>juddi-user
</td>
          <td>Apache
</td>
          <td>
            <a href="http://mail-archives.apache.org/mod_mbox/juddi-user/">http://mail-archives.apache.org/mod_mbox/juddi-user/
</a>
          </td>
        </tr>
      </table>
<p>
        <strong>DONE
</strong>
      </p>
<p>If request from outside Apache to enter an existing Apache project,
then post a message to that project for them to decide on acceptance.
</p>
<p>
        <strong>DONE
</strong>
      </p>
</div>
        <h2 id='Interim+responsibility'><img src="../images/redarrow.gif" />Interim responsibility
</h2>
<div class="section-content">
<p>Who has been identified as the shepherd for the incubation?
</p>
<p>Davanum Srinivas, dims@yahoo.com
</p>
<p>Are they tracking progress?
</p>
<p>Yes. Progress is tracked here: incubator/site/projects/juddi.cwiki
</p>
</div>
        <h2 id='Copyright'><img src="../images/redarrow.gif" />Copyright
</h2>
<div class="section-content">
<p>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.
</p>
<p>Have the files been updated to reflect the new ASF copyright?
</p>
<p>All Java source files include the ASF v2.0 copyright notice.
</p>
<p>
        <strong>DONE
</strong>
      </p>
<p>Verify distribution rights
</p>
<p>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?
</p>
<p>Yes. See the following thread for more info:
</p>
<p>
        <a href="http://marc.theaimsgroup.com/?l=juddi-dev&amp;m=107945391731425&amp;w=2">http://marc.theaimsgroup.com/?l=juddi-dev&amp;m=107945391731425&amp;w=2
</a>
      </p>
<p>
        <strong>DONE
</strong>
      </p>
<p>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?
</p>
<p>Yes. All source code distributed with jUDDI is covered under the
Apache license.
</p>
<p>
        <strong>DONE
</strong>
      </p>
</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">
<p>Are all active committers in the STATUS file?
</p>
<p>Yes.
</p>
<p>Active committers at the time of incubation are:
</p>
<table class="colortable" width="100%">
        <tr>
          <th>Committer
</th>
          <th>Email Address
</th>
        </tr>
        <tr>
          <td>Steve Viens
</td>
          <td>sviens@apache.org
</td>
        </tr>
        <tr>
          <td>Anou Manavalan
</td>
          <td>anou_mana@apache.org
</td>
        </tr>
        <tr>
          <td>Andy Cutright
</td>
          <td>acutright@apache.org
</td>
        </tr>
        <tr>
          <td>Anil Saldhana
</td>
          <td>anilsaldhana@yahoo.com
</td>
        </tr>
      </table>
<p>Do they have accounts on cvs.apache.org?
</p>
<p>Yes.
</p>
<p>Have they submitted a contributors agreement?
</p>
<p>Yes.
</p>
<p>
        <strong>DONE
</strong>
      </p>
</div>
        <h2 id='Infrastructure'><img src="../images/redarrow.gif" />Infrastructure
</h2>
<div class="section-content">
<p>CVS modules created and committers added to avail file?
</p>
<p>
        <strong>DONE
</strong>
      </p>
<p>Mailing lists set up and archived?
</p>
<p>
        <strong>DONE
</strong>
      </p>
<p>Problem tracking system (Jira)?
</p>
<p>Issue tracking has been set up under Jira.
</p>
<p>
        <a href="https://issues.apache.org/jira/browse/JUDDI">https://issues.apache.org/jira/browse/JUDDI
</a>
      </p>
<p>
        <strong>DONE
</strong>
      </p>
<p>Has the project migrated to our infrastructure?
</p>
<p>
        <strong>DONE
</strong>
      </p>
<p>Have all of the active long-term volunteers been identified and
acknowledged as committers on the project?
</p>
<p>There are four jUDDI committers:
</p>
<table class="colortable" width="100%">
        <tr>
          <th>Committer
</th>
          <th>Email Address
</th>
        </tr>
        <tr>
          <td>Steve Viens
</td>
          <td>sviens@apache.org
</td>
        </tr>
        <tr>
          <td>Anou Manavalan
</td>
          <td>anou_mana@apache.org
</td>
        </tr>
        <tr>
          <td>Andy Cutright
</td>
          <td>acutright@apache.org
</td>
        </tr>
        <tr>
          <td>Anil Saldhana
</td>
          <td>anilsaldhana@yahoo.com
</td>
        </tr>
      </table>
<p>All four individuals are acknowledged jUDDI committers.
</p>
<p>
        <strong>DONE
</strong>
      </p>
<p>Are there three or more independent committers?
</p>
<p>Yes. All four initial jUDDI committers are independent committers.
</p>
<p>
        <strong>DONE
</strong>
      </p>
<p>Are project decisions being made in public by the committers?
</p>
<p>Yes
</p>
<p>
        <strong>DONE
</strong>
      </p>
<p>Are the decision-making guidelines published and agreed to by all of
the committers?
</p>
<p>No special guidelines have been published. The Apache style of
development is known to us all and silently accepted.
</p>
<p>
        <strong>DONE
</strong>
      </p>
</div>
        <h2 id='Incubation+Status+Reports'><img src="../images/redarrow.gif" />Incubation Status Reports
</h2>
<div class="section-content">
<h3 id='2004-03-06+jUDDI+Status'>2004-03-06 jUDDI Status
</h3>
<div class="section-content">
<div class="source"><code>2004-03-06 jUDDI Status * Is the STATUS file up to date? (also post
link) Yes. http://incubator.apache.org/projects/juddi.html * Any
legal, cross-project or personal issues that still need to be
addressed? No outstanding issues. * What has been done for incubation
since the last report? All project committers have received
confirmation that CLA's have been recieved and accepted. The jUDDI
Web Site has continued to be updated and built out.
http://ws.apache.org/juddi/ All source files have been modified to
include the ASF v2.0 copyright notice. The mailing lists
juddi-user@ws.apache.org and juddi-dev@ws.apache.org are now being
archived at both Apache and MARC. Past list traffic has been imported
into the Apache archives. License files have been added for most
non-Apache libraries that are distributed with jUDDI. * What are the
project's plans and expectations for the next period? Complete review
of non-Apache libraries bundled with jUDDI removing any that should
not be included and adding LICENSE files for any that requires one.
Assemble a to-do list (roadmap) for future development and publish to
the jUDDI web site. Upgrade to Axis 1.2beta (Axis 1.1 is currently
bundled with jUDDI). Refactor CVS to create a areas for the jUDDI
java source directory, the jUDDI website and locations for addons,
contributions or prototypes that do not fit well in the jUDDI source
tree. Right now everything is in the jUDDI source tree. Exit the
Apache Incubator (hey, it was fun). Produce an 0.8.x or 0.9
release.of jUDDI. * Any recommendations for how incubation could run
more smoothly for you? The current process has worked well for us.
</code>
</div>
</div>
<h3 id='2003-10-19+jUDDI+Status'>2003-10-19 jUDDI Status
</h3>
<div class="section-content">
<div class="source"><code>2003-10-19 jUDDI Status * Is the STATUS file up to date? (also post
link) Yes. http://incubator.apache.org/projects/juddi.html * Any
legal, cross-project or personal issues that still need to be
addressed? No outstanding issues. * What has been done for incubation
since the last report? All four project committers have submitted
CLA's. We're still waiting on confirmation for one of these A jUDDI
Web Site has been created at Apache and the original jUDDI web site
redirects visitors to the new web site. http://ws.apache.org/juddi/
An cvs module is in place and the jUDDI source has been imported.
Java packages have been renamed from &quot;org.juddi&quot; to
&quot;org.apache.juddi&quot; and all source files have been modified to include
the ASF copyright notice. The mailing lists juddi-user@ws.apache.org
and juddi-dev@ws.apache.org have been created and are being archived.
Issue tracking has been setup under Jira. Gump is successfully
building jUDDI. http://lsd.student.utwente.nl/gump/ws-juddi/ * Plans
and expectations for the next period? Still need to acquire and check
in license files for dependent non-Apache libraries that are
distributed with jUDDI. Waiting to be notified that the fourth
committer's CLA has been received and his account created and granted
the appropriate privs. Assemble a to-do list (roadmap) for future
development and plan the next jUDDI release. We'd like to wrap up the
few issues that are outstanding and exit incubation before the next
period comes to a close. * Any recommendations for how incubation
could run more smoothly for you? I've heard reference to a STATUS
file as well as the jUDDI cwiki that I've been updating. While I've
assumed they are one-in-the-same I'm not certain of that (perhaps you
can enlighten me). If they are not they same thing then I'm confused
about the need to keep status in two different places. Even this
status report is more or less a reformatted version the cwiki
document.
</code>
</div>
</div>
</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">
<p>If graduating to an existing PMC, has the PMC voted to accept it?
</p>
<p>The Web Services PMC has voted to Incubate jUDDI.
</p>
<p>
        <strong>DONE
</strong>
      </p>
</div>
        <h2 id='Incubator+sign-off'><img src="../images/redarrow.gif" />Incubator sign-off
</h2>
<div class="section-content">
<p>Has the Incubator decided that the project has accomplished all of
the above tasks?
</p>
<p>Yes. The Incubator PMC has voted to graduate jUDDI
</p>
<p>
        <strong>DONE
</strong>
      </p>
</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>
