<!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>Apache Woden 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='Apache+Woden+Project+Incubation+Status'><img src="../images/redarrow.gif" />Apache Woden Project Incubation Status
</h2>
<div class="section-content">
<p>This page tracks the project status, incubator-wise.</p>
<p><span class="graduated">The Woden project graduated on 2007-12-08</span></p>
</div>
        <h2 id='Description'><img src="../images/redarrow.gif" />Description
</h2>
<div class="section-content">
<p>The Apache Woden Project will develop a Java class library for
reading, manipulating, creating and writing WSDL documents, initially
to support WSDL 2.0 but with the longer term aim of supporting past,
present and future versions of WSDL

        <br />
      </p>
</div>
        <h2 id='News'><img src="../images/redarrow.gif" />News
</h2>
<div class="section-content">
<p>For the latest Woden news see <a href="http://ws.apache.org/woden/">http://ws.apache.org/woden/</a>.</p>
<ul>
      	<li>2007-12-08 Woden Graduated to the Web Services Project</li>
      	<li>2007-08-03 Woden

          <a href="http://people.apache.org/dist/ws/woden/milestones/1.0M7b-incubating">Milestone 7b
</a>declared

        </li>
      	<li>2007-04-23 Woden

          <a href="http://people.apache.org/dist/ws/woden/milestones/1.0M7a-incubating">Milestone 7a
</a>declared

        </li>
      	<li>2007-02-19 Woden

          <a href="http://people.apache.org/dist/ws/woden/milestones/1.0M7-incubating">Milestone 7
</a>declared

        </li>
        <li>2006-10-06 Woden

          <a href="http://people.apache.org/dist/ws/woden/milestones/1.0.0M6-incubating">Milestone 6
</a>declared

        </li>
        <li>2006-10-06 Second W3C WSDL 2.0 Working Group Interoperability Event 

        </li>
        <li>2006-06-21 Woden

          <a href="http://cvs.apache.org/dist/ws/woden/milestones/1.0.0M5-incubating">Milestone 5
</a>declared

        </li>
        <li>2006-06-05 W3C WSDL 2.0 Working Group Interoperability Event 

        </li>
        <li>2006-05-30 Woden Presentation at ApacheCon Europe 2006  

        </li>
        <li>2006-03-13 Woden

          <a href="http://cvs.apache.org/dist/ws/woden/milestones/1.0.0M4-incubating">Milestone 4
</a>declared

        </li>
        <li>2006-01-26 Woden

          <a href="http://cvs.apache.org/dist/ws/woden/milestones/1.0.0M3-incubating">Milestone 3
</a>declared

        </li>
        <li>2005-12-09 Woden

          <a href="http://cvs.apache.org/dist/ws/woden/milestones/1.0.0M2-incubating">Milestone 2
</a>declared

        </li>
        <li>2005-10-02 Woden

          <a href="http://cvs.apache.org/dist/ws/woden/milestones/M1">Milestone 1
</a>declared

        </li>
        <li>2005-03-24 Project accepted by the Web services PMC
</li>
        <li>2005-03-24 Project proposed on general@incubator mailing list

          <br />
        </li>
      </ul>
</div>
        <h2 id='Project+info'><img src="../images/redarrow.gif" />Project info
</h2>
<div class="section-content">
<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://ws.apache.org/woden/">http://ws.apache.org/woden/
</a>
          </td>
        </tr>
    <tr>
      <td>. </td>
      <td>wiki </td>
      <td><a href="http://wiki.apache.org/ws/FrontPage/Woden/">http://wiki.apache.org/ws/FrontPage/Woden/</a>
      </td>
    </tr>
        <tr>
          <td>Mailing list
</td>
          <td>dev
</td>
          <td>
            <a href="http://ws.apache.org/woden/mailinglists.html">woden-dev@ws.apache.org
</a>
          </td>
        </tr>
        <tr>
          <td>.
</td>
          <td>svn
</td>
          <td>
            <a href="http://ws.apache.org/woden/mailinglists.html">woden-commits@incubator.apache.org
</a>
          </td>
        </tr>
        <tr>
          <td>Bug tracking
</td>
          <td>JIRA
</td>
          <td>
            <a href="http://nagoya.apache.org/jira/browse/Woden">http://nagoya.apache.org/jira/browse/Woden
</a>
          </td>
        </tr>
        <tr>
          <td>Source code
</td>
          <td>svn
</td>
          <td>
            <a href="http://svn.apache.org/repos/asf/webservices/woden/">http://svn.apache.org/repos/asf/webservices/woden/
</a>
          </td>
        </tr>
        <tr>
          <td>Mentors
</td>
          <td>
            <br />
          </td>
          <td>Davanum Srinivas (dims at apache.org)

            <br />
          </td>
        </tr>
        <tr>
          <td>
            <br />
          </td>
          <td>
            <br />
          </td>
          <td>Paul Fremantle (paul at wso2.com)

            <br />
          </td>
        </tr>
        <tr>
          <td>
            <br />
          </td>
          <td>
            <br />
          </td>
          <td>Sanjiva Weerawarana (sanjiva at opensource.lk)
</td>
        </tr>
        <tr>
          <td>Committers
</td>
          <td>
            <br />
          </td>
          <td>Matthew Duftler (duftler at apache.org)

            <br />
          </td>
        </tr>
        <tr>
          <td>
</td>
          <td>
            <br />
          </td>
          <td>Chathura Herath (chathura at opensource.lk)

            <br />
          </td>
        </tr>
        <tr>
          <td>
            <br />
          </td>
          <td>
            <br />
          </td>
          <td>Jeremy Hughes (hughesj at apache.org)

            <br />
          </td>
        </tr>
        <tr>
          <td>
            <br />
          </td>
          <td>
            <br />
          </td>
          <td>John Kaputin (jakaputin at gmail.com)

            <br />
          </td>
        </tr>
        <tr>
          <td>
            <br />
          </td>
          <td>
            <br />
          </td>
          <td>Lawrence Mandel (lmandel at apache.org)

            <br />
          </td>
        </tr>
        <tr>
          <td>
            <br />
          </td>
          <td>
            <br />
          </td>
          <td>Arthur Ryman (arthur.ryman at gmail.com)

            <br />
          </td>
        </tr>
        <tr>
          <td>
            <br />
          </td>
          <td>
            <br />
          </td>
          <td>Oshani Seneviratne (oshanis at gmail.com)

            <br />
          </td>
        </tr>
        <tr>
          <td>
            <br />
          </td>
          <td>
            <br />
          </td>
          <td>Graham Turrell (gturrell at apache.org)

            <br />
          </td>
        </tr>
      </table>
</div>
        <h2 id='Incubation+status+reports'><img src="../images/redarrow.gif" />Incubation status reports
</h2>
<div class="section-content">
<ul>
        <li>
          <h3><a href="http://wiki.apache.org/incubator/November2007">November 2007</a></h3>
        </li>
      	<li>
          <h3><a href="http://wiki.apache.org/incubator/August2007">August 2007</a></h3>
        </li>
      	<li>
          <h3><a href="http://wiki.apache.org/incubator/May2007#head-1a298493e0732f4127f01993e6abc54e3793f23e">May 2007</a></h3>
        </li>
      	<li>
          <h3><a href="http://wiki.apache.org/incubator/March2007#head-1a298493e0732f4127f01993e6abc54e3793f23e">March 2007</a></h3>
        </li>
      	<li>
          <h3><a href="http://wiki.apache.org/incubator/February2007#head-1a298493e0732f4127f01993e6abc54e3793f23e">February 2007</a></h3>
        </li>
      	<li>
          <h3><a href="http://wiki.apache.org/incubator/December2006#head-1a298493e0732f4127f01993e6abc54e3793f23e">December 2006</a></h3>
        </li>
        <li>
          <h3><a href="http://wiki.apache.org/incubator/August2006#head-1a298493e0732f4127f01993e6abc54e3793f23e">August 2006</a></h3>
        </li>
        <li>
          <h3><a href="http://wiki.apache.org/incubator/May2006#head-ff9cbecb90f19a9674c9dff1291b71f7c1fef0ac">May 2006</a></h3>
        </li>
        <li>
          <h3>Mar. 2006
</h3>Woden has declared milestones 3 and 4. These milestones include parsing
logic for the WSDL document and component models and the SOAP extensibility elements.
Validation for the WSDL document and component models in nearing completion.<br /><br />
Woden was <a href="http://lists.w3.org/Archives/Public/www-ws-desc/2006Feb/0063.html">demonstrated</a>
at the W3C Web Service Description Working Group <a href="http://lists.w3.org/Archives/Public/www-ws-desc/2006Mar/att-0001/20060228-ws-desc-minutes.html#item01">F2F Meeting</a>
on Feb 28, 2006 during the <a href="http://www.w3.org/2005/12/allgroupoverview.html">Technical Plenary Week</a> in Cannes, Mandelieu, France.<br /><br />
A <a href="http://www.w3.org/2006/02/WSDLConvert.html">WSDL 1.1 - 2.0 converter</a>, which makes use of Woden,
was created at the W3C.
        </li>
        <li>
          <h3>Dec. 2005
</h3>The milestone plan, originally too ambitious, was updated to reflect
Woden's new schedule. Woden milestone 2 was declared. Milestone 2
contains parsing logic for WSDL 2.0 interface and binding elements
and components, and validation logic for the WSDL 2.0 types element
and interface element and component.

        </li>
        <li>
          <h3>Oct. 2005
</h3>We posted a Woden milestone plan in September covering M1 at end-Sept
through to M5 in Jan 2006. Completion of the initial project
objective, full WSDL 2.0 functionality, is targetted for M4 end-Nov.
M1 was release on Mon 3 Oct and included most but not all of the
planned scopd. M3 and M4 will be busy periods. M5 and future plans
will emerge as we approach M4 and start thinking about other Woden
objectives like WSDL 1.1 conversion and StAX XML parsing for the Axis
community. We are using the woden-dev mailing list for communication
and discussion and recently held our first conference call - although
not all participants could make the call, it helped confirm the
Milestone plan and resolve some technical issues. Most of the
development is currently being done by 2 committers and this may
continue up to M3/M4, by which time we will have a suitable base for
others to start building on.

        </li>
        <li>
          <h3>Sept. 2005
</h3>Woden incubator progress slower than expected over summer, but plan
now agreed with milestone deliverables each month to complete WSDL
2.0 functionality by December.

        </li>
      </ul>
</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'>Identify the project to be incubated
</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date
</th>
              <th>item
</th>
            </tr>
            <tr>
              <td>2007-06-20
</td>
              <td>
              	<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>
					A search of the United States Patent and Trademark Office shows no results for Woden.
				</p>
				<p>
					A Google search for Woden turns up 385 results. Aside from such notable Woden references as
					the <a href="http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&amp;friendID=72439386">Woden band</a>,
					there are only two Woden references that are somewhat related to software:
					<ol>
						<li><a href="http://www.woden.com">Woden Network Systems Ltd.</a>, a telcom based in the UK</li>
						<li><a href="http://www.macupdate.com/info.php/id/1114/woden-(ppc)">Woden game for PPC Macs</a>, 
						from 1997 this game has had just over 2000 downloads</li>
					</ol>
				</p>
</td>
            </tr>
            <tr>
              <td>N/A

                <br />
              </td>
              <td>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.
</td>
            </tr>
            <tr>
              <td>N/A

                <br />
              </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-12-09
</td>
              <td>Identify all the Mentors for the incubation, by asking all that can
be Mentors.
</td>
            </tr>
            <tr>
              <td>2007-05-22

                <br />
              </td>
              <td>Subscribe all Mentors on the woden-dev list.
</td>
            </tr>
            <tr>
              <td>2007-05-22

                <br />
              </td>
              <td>Give all Mentors access to all incubator SVN modules. (to be done by
PMC chair) (see <a href="http://people.apache.org/~jim/committers.html">http://people.apache.org/~jim/committers.html</a>)
</td>
            </tr>
            <tr>
              <td>2005-12-09

                <br />
              </td>
              <td>Tell Mentors to track progress in the file
'incubator/projects/woden.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>2007-11-06
</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>2007-11-06
</td>
              <td>
              	Check and make sure that for all code included with the distribution
				that is not under the Apache license, we have the right to combine
				with Apache-licensed code and redistribute.<br />
				<br />
				All source code included with the distribution is under the Apache V2.0
				or the W3C license. In addition, the binary libraries included in the 
				Woden distribution are listed in the table below.
				<table>
					<tr>
						<th>Library</th>
						<th>License</th>
					</tr>
					<tr>
						<td>axiom-api-1.2.3.jar</td>
						<td><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache V2.0</a></td>
					</tr>
					<tr>
						<td>axiom-impl-1.2.3.jar</td>
						<td><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache V2.0</a></td>
					</tr>
					<tr>
						<td>commons-logging-api-1.1.jar</td>
						<td><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache V2.0</a></td>
					</tr>
					<tr>
						<td>geronimo-stax-api_1.0_spec-1.0.jar</td>
						<td><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache V2.0</a></td>
					</tr>
					<tr>
						<td>wsdl4j.jar</td>
						<td><a href="http://www.opensource.org/licenses/cpl1.0.php">CPL V1.0</a></td>
					</tr>
					<tr>
						<td>wstx-asl-3.2.0.jar</td>
						<td><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache V2.0</a></td>
					</tr>
					<tr>
						<td>xercesImpl.jar</td>
						<td><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache V2.0</a></td>
					</tr>
					<tr>
						<td>xml-apis.jar</td>
						<td><a href="http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231">W3C</a></td>
					</tr>
					<tr>
						<td>XmlSchema-1.3.1.jar</td>
						<td><a href="http://www.apache.org/licenses/LICENSE-2.0">Apache V2.0</a></td>
					</tr>
					
					
				</table>
			</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+%21'>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>2006-05-22
</td>
              <td>Check that all active committers have submitted a contributors
agreement.
</td>
            </tr>
            <tr>
              <td>2007-05-22
</td>
              <td>Add all active committers in the STATUS file.
</td>
            </tr>
            <tr>
              <td>2007-05-22
</td>
              <td>Ask root for the creation of committers' accounts on cvs.apache.org.
</td>
            </tr>
          </table>
</div>
<h4 id='Infrastructure+%21'>Infrastructure !
</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>Ask infrastructure to create source repository modules and grant the
committers karma.
</td>
            </tr>
            <tr>
              <td>2005-12-09
</td>
              <td>Ask infrastructure to set up and archive Mailing lists.
</td>
            </tr>
            <tr>
              <td>2005-12-09
</td>
              <td>Decide about and then ask infrastructure to setup an issuetracking
system (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>
            	<p><i>Have all of the active long-term volunteers been identified and
acknowledged as committers on the project?</i></p>
				<p>Yes.</p>
</li>
            <li>
            	<p><i>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.)</i></p>
				<p>
					Yes. Woden is actively lead by John Kaputin and Lawrence Mandel, 
					committers from IBM. The list of people who have made commits to the Woden 
					repository are Eran Chinthaka (Indiana University), Matt Duftler (IBM),
					Chathura Herath (Indiana University), Jeremy Hughes (IBM), 
					John Kaputin (IBM), Lawrence Mandel (IBM), Arthur Ryman (IBM), 
					Oshani Seneviratne (MIT), Davanum 'Dims' Srinivas (independent), and Graham 
					Turrell (IBM). Matt, Jeremy, Arthur, Oshani, and Graham have all made 
					significant contributions to Woden. Chinthaka, 
					Chathura, and Dims have all contributed bug fixes in support of Axis2. 
					It is also of note that over the past year Woden has seen large 
					contributions from non-committers such as Dan Harvey (IBM summer student), 
					who fixed many bugs and refactored Woden's build process, Sagara Gunathunga 
					(independent), who is currently working on serializing the Woden model, 
					and Tomi Vanek (independent), who contributed a WSDL viewer. 
				</p>
			</li>
            <li>
            	<p><i>Are project decisions being made in public by the committers?</i></p>
            	<p>Yes. All project decisions are discussed on both the public weekly Woden telecons and on
            	the woden-dev mailing list.</p>
</li>
            <li>
            	<p><i>Are the decision-making guidelines published and agreed to by all of
the committers?</i></p>
				<p>Yes. See the <a href="http://ws.apache.org/woden/dev/devprocess.html">Woden Decision Making and Development Processes</a> document.</p>
</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?
				<p>
					Yes.
				</p>
</li>
          </ul>
</div>
<h4 id='Project+Adoption'>Project Adoption</h4>
<div class="section-content">
<p>
          	Woden is playing a valuable role in the Web services space and as such
          	has already been adopted by the following projects:
            <ul>
            	<li>
      				<a href="http://ws.apache.org/axis2/">Apache Axis2</a>
      			</li>
      			<li>
      				<a href="http://incubator.apache.org/servicemix/">Apache ServiceMix</a>
      			</li>
      			<li>
      				<a href="http://lsdis.cs.uga.edu/projects/meteor-s/opensource/woden4sawsdl/index.html">Woden4SAWSDL</a>
      			</li>
            </ul>
          </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?<br />
            	Yes. The Web Services PMC accepted Woden in 
            	<a href="http://mail-archives.apache.org/mod_mbox/ws-woden-dev/200711.mbox/%3c88f5d710711301045y41b70c2ftccd786ae4366de11@mail.gmail.com%3e">a vote</a> 
            	that resulted in 15 +1s, no 0s, and no -1s.
			</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?<br />
				Yes. The Incubator PMC <a href="http://mail-archives.apache.org/mod_mbox/incubator-general/200712.mbox/%3c88f5d710712080020l2395aea7t6ea5201f43b8a356@mail.gmail.com%3e">voted in favor of Woden's graduation</a> 
				with 8 +1s, no 0s, and no -1s. The vote was called on Dec. 8, 2007.
			</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>
