<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title>Web Tools Platform Project IP Log</title>
</head>
<body text="#000000" bgcolor="#ffffff" link="#0000ee" vlink="#551a8b"
    alink="#ff0000">
<h1>Web Tools Platform Project IP Log</h1>
<h2>Committer List</h2>

<table>
    <tr>
        <th align="left">Committer Name</th>
        <th align="left">Organization</th>
    </tr>
    <tr>
        <td>Craig Becker</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Chris Brealey</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Chuck Bridgham</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Kathy Chan</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Keith Chong</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Der-Ping Chou</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Marshall Culpepper</td>
        <td>JBoss</td>
    </tr>
    <tr>
        <td>Nitin Dahyabhai</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Naci Dai</td>
        <td>Eteration</td>
    </tr>
    <tr>
        <td>Tim deBoer</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Larry Dunnell</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Gorkem Ercan</td>
        <td>Turkcell</td>
    </tr>
    <tr>
        <td>Rob Frost</td>
        <td>BEA</td>
    </tr>
    <tr>
        <td>Larry Isaacs</td>
        <td>SAS</td>
    </tr>
    <tr>
        <td>Rupesh Kartha</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Konstantin Komissarchik</td>
        <td>BEA</td>
    </tr>
    <tr>
        <td>Sinan Konya</td>
        <td>Eteration</td>
    </tr>
    <tr>
        <td>Jochen Krause</td>
        <td>Innoopract</td>
    </tr>
    <tr>
        <td>John Lanuti</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>David Lauzon</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Jeffrey Liu</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Richard Mah</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Lawrence Mandel</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Kate Price</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Arthur Ryman</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Craig Salter</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Sheila Sholars</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Raghu Srinivasan</td>
        <td>Oracle</td>
    </tr>
    <tr>
        <td>Tim Wagner</td>
        <td>BEA</td>
    </tr>
    <tr>
        <td>David Williams</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Amy Wu</td>
        <td>IBM</td>
    </tr>
</table>

<h2>CVS Access Policy</h2>
WTP committers have access to all code within WTP and to the WTP website content; committers are on an honor system
to only edit code with which they are familiar and competent to update. Committers on incubating
sub-projects are restricted to operating on their sub-project code (and the corresponding website
content, although the latter is on an honor system); when the project exits incubation, its committers
are granted full WTP committership rights.

Leads of incubating sub-projects are accorded full WTP committer access rights at all times so that they may serve
their project's interests in the larger community.

<h2>Committer List for ATF Subproject (Incubating) </h2>
Checkin permission limited to subproject and related area of website unless
name also appears on the general WTP committer list.
<table>
    <tr>
        <th align="left">Committer Name</th>
        <th align="left">Organization</th>
    </tr>
    <tr>
        <td>Craig Becker</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Leugim "Gino" Bustelo</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Javier Pedemonte</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Adam Peller</td>
        <td>IBM</td>
    </tr>
    <tr>
        <td>Donald Sedota</td>
        <td>IBM</td>
    </tr>
</table>

<h2>Committer List for Dali Subproject (Incubating) </h2>
Checkin permission limited to subproject and related area of website unless
name also appears on the general WTP committer list.
<table>
    <tr>
        <th align="left">Committer Name</th>
        <th align="left">Organization</th>
    </tr>
    <tr>
        <td>Max Andersen</td>
        <td>JBoss</td>
    </tr>
    <tr>
        <td>Christian Ernst</td>
        <td>Versant</td>
    </tr>
    <tr>
        <td>Paul Fullbright</td>
        <td>Oracle</td>
    </tr>
    <tr>
        <td>Neil Hauge</td>
        <td>Oracle</td>
    </tr>
    <tr>
        <td>Markus Kuppe</td>
        <td>Versant</td>
    </tr>
    <tr>
        <td>Tran Le</td>
        <td>Oracle</td>
    </tr>
    <tr>
        <td>Dirk Le Roux</td>
        <td>Versant</td>
    </tr>
    <tr>
        <td>Karen Moore</td>
        <td>Oracle</td>
    </tr>
    <tr>
        <td>Marc Prudhommeaux</td>
        <td>BEA</td>
    </tr>
    <tr>
        <td>Shaun Smith</td>
        <td>Oracle</td>
    </tr>
    <tr>
        <td>Brian Vosburgh</td>
        <td>Oracle</td>
    </tr>
</table>

<h2>Committer List for JSF Subproject (Incubating) </h2>
Checkin permission limited to subproject and related area of website unless
name also appears on the general WTP committer list.
<table>
    <tr>
        <th align="left">Committer Name</th>
        <th align="left">Organization</th>
    </tr>
    <tr>
        <td>Justin Chen</td>
        <td>Oracle</td>
    </tr>
    <tr>
        <td>Jean Choi</td>
        <td>Sybase</td>
    </tr>
    <tr>
        <td>Gerry Kessler</td>
        <td>Oracle</td>
    </tr>
    <tr>
        <td>Raghunathan Srinivasan</td>
        <td>Oracle</td>
    </tr>
    <tr>
        <td>Ian Trimble</td>
        <td>Oracle</td>
    </tr>
</table>

<h2>WTP PMC </h2>
<table>
    <tr>
        <th align="left">Name</th>
        <th align="left">&nbsp;</th>
    </tr>
    <tr>
        <td>Naci Dai</td>
        <td>&nbsp;</td>
    </tr>
    <tr>
        <td>Jochen Krause</td>
        <td>&nbsp;</td>
    </tr>
    <tr>
        <td>Arthur Ryman</td>
        <td>&nbsp;</td>
    </tr>
    <tr>
        <td>Raghu Srinivasan</td>
        <td>&nbsp;</td>
    </tr>
    <tr>
        <td>Tim Wagner</td>
        <td>Lead</td>
    </tr>
    <tr>
        <td>David Williams</td>
        <td>&nbsp;</td>
    </tr>
</table>


<h2>3rd Party IP Licensed for Binary Redistribution</h2>

Note: The Apache Software Foundation license version 2.0 (referred to
simply as "ASF 2.0" in the table below) can be found at
<a href='http://jakarta.apache.org/cactus/license.html'>Apache 2.0
License.</a>

<table border="1">
    <tr>
        <th>Software</th>
        <th>Version</th>
        <th>License</th>
        <th>Introduced in</th>
        <th>Removed since</th>
        <th>Notes</th>
    </tr>

    <tr>
	    <td rowSpan="3">Axis</td>
    	<td>1.1</td>
    	<td>ASF 1.1</td>
    	<td>Initial contribution</td>
        <td>0.7</td>
    	<td rowSpan="3">includes SAAJ</td>
    </tr>
    <tr>
        <td>1.2.1</td>
        <td>ASF 2.0</td>
        <td>0.7</td>
        <td>1.0.3</td>
    </tr>
    <tr>
        <td>1.3</td>
        <td>ASF 2.0</td>
        <td>1.5</td>
        <td>still in use</td>
    </tr>

    <tr>
        <td rowSpan="2">Commons discovery</td>
        <td>?</td>
        <td>ASF 1.1</td>
        <td>Initial contribution</td>
        <td>0.7</td>
        <td>&nbsp;</td>
    </tr>
    <tr>
        <td>0.2</td>
        <td>ASF 2.0</td>
        <td>0.7</td>
        <td>still in use</td>
        <td>&nbsp;</td>
    </tr>

    <tr>
        <td rowSpan="3">Commons logging</td>
        <td>1.0.2</td>
        <td>ASF 1.1</td>
        <td>Initial contribution</td>
        <td>0.7</td>
        <td>&nbsp;</td>
    </tr>
    <tr>
        <td>1.0.3</td>
        <td>ASF 2.0</td>
        <td>0.7</td>
        <td>1.0</td>
        <td>&nbsp;</td>
    </tr>
    <tr>
        <td>1.0.4</td>
        <td>ASF 2.0</td>
        <td>1.0</td>
        <td>still in use</td>
        <td>&nbsp;</td>
    </tr>

    <tr>
        <td rowSpan="2">JAX-RPC</td>
        <td>1.1 (part of Axis 1.1)</td>
        <td>ASF 1.1</td>
        <td>Initial contribution</td>
        <td>0.7</td>
        <td rowSpan="2">Source code for this jar is developed/owned by Apache Axis</td>
    </tr>
    <tr>
        <td>1.1 (part of Axis 1.2.1)</td>
        <td>ASF 2.0</td>
        <td>0.7</td>
        <td>still in use</td>
    </tr>

    <tr>
        <td rowSpan="2">log4j</td>
        <td>1.2.4</td>
        <td>ASF 1.1</td>
        <td>Initial contribution</td>
        <td>0.7</td>
        <td>&nbsp;</td>
    </tr>
    <tr>
        <td>1.2.8</td>
        <td>ASF 2.0</td>
        <td>0.7</td>
        <td>still in use</td>
        <td>&nbsp;</td>
    </tr>

    <tr>
        <td rowSpan="2">Axis-Ant</td>
        <td>1.1</td>
        <td>ASF 1.1</td>
        <td>Initial contribution</td>
        <td>0.7</td>
        <td>&nbsp;</td>
    </tr>
    <tr>
        <td>1.2.1</td>
        <td>ASF 2.0</td>
        <td>0.7</td>
        <td>still in use</td>
        <td>&nbsp;</td>
    </tr>

    <tr>
        <td>SOAP</td>
        <td>2.3.1</td>
        <td>w3c</td>
        <td>Initial contribution</td>
        <td>0.7</td>
        <td>&nbsp;</td>
    </tr>

    <tr>
        <td>Cactus</td>
        <td>1.7.2</td>
        <td>ASF 2.0</td>
        <td>1.5</td>
        <td>still in use</td>
        <td>Includes cactus-1.7.2 (the one for J2EE 1.3), aspectjrt-1.2.1, commons-logging-1.0.4,
        and commons-httpclient-2.0.2 jars, and junit 3.8.1</td>
    </tr>

    <tr>
        <td>wsdl4j</td>
        <td>1.4</td>
        <td>Common Public License 1.0</td>
        <td>Initial contribution</td>
        <td>still in use</td>
        <td>includes "qname.jar"</td>
    </tr>

    <tr>
        <td>wsil4j</td>
        <td>1.0</td>
        <td>ASF 1.1</td>
        <td>Initial contribution</td>
        <td>still in use</td>
        <td>&nbsp;</td>
    </tr>

    <tr>
        <!--  FYI, 2.6.2 Version named in 0.7 Release Review was incorrect, its always been 2.7.0 -->
        <td rowspan="3">xerces-j</td>
        <td>2.7.0</td>
        <td>ASF 2.0</td>
        <td>0.7</td>
        <td>1.0.3</td>
        <td rowspan="3">redistribute binaries in org.apache.xerces plugin</td>
    </tr>

    <tr>
        <td>2.8.0</td>
        <td>ASF 2.0</td>
        <td>1.5</td>
        <td>still in use</td>
    </tr>

    <tr>
        <td>2.8.1</td>
        <td>ASF 2.0</td>
        <td>1.5.2</td>
        <td>(pending, contribution questionnaire submitted 9/18/2006)</td>
    </tr>

    <tr>
        <td>DOM 3 Interfaces</td>
        <td>Level 3</td>
        <td>w3c</td>
        <td>Initial contribution</td>
        <td>dropped prior to 1.5.0 release</td>
        <td>These were dropped because there were technical problems included them, and not really needed as long as we pre-req a recent Xerces</td>
    </tr>

    <tr>
        <td rowSpan="4">uddi4j</td>
        <td>2.0.2</td>
        <td>IBM Public License</td>
        <td>Initial contribution</td>
        <td>0.7</td>
        <td>&nbsp;</td>
    </tr>
    <tr>
        <td>2.0.3</td>
        <td>IBM Public License</td>
        <td>0.7</td>
        <td>1.0.1</td>
        <td>&nbsp;</td>
    </tr>
    <tr>
        <td>2.0.4</td>
        <td>IBM Public License</td>
        <td>1.0.1</td>
        <td>1.5</td>
        <td>&nbsp;</td>
    </tr>
    <tr>
        <td>2.0.5</td>
        <td>IBM Public License</td>
        <td>1.5.1</td>
        <td>still in use</td>
        <td>&nbsp;</td>
    </tr>

    <tr>
        <td>http.xsd</td>
        <td>WSDL 1.1</td>
        <td>IBM, Microsoft</td>
        <td>1.0</td>
        <td>still in use</td>
        <td>License updated from <a href="http://schemas.xmlsoap.org/wsdl/http/wsdl-http.xsd">
        http://schemas.xmlsoap.org/wsdl/http/wsdl-http.xsd</a> on
        6/18/06 for WTP 1.5 release (clarified redistribution language).</td>
    </tr>

    <tr>
        <td>soap.xsd</td>
        <td>WSDL 1.1</td>
        <td>IBM, Microsoft</td>
        <td>1.0</td>
        <td>still in use</td>
        <td>License updated from <a href="http://schemas.xmlsoap.org/wsdl/soap/">
        http://schemas.xmlsoap.org/wsdl/soap/</a> on
        6/18/2006 for WTP 1.5 release (clarified redistribution language).</td>
    </tr>

    <tr>
        <td>soapenc.xsd</td>
        <td>WSDL 1.1</td>
        <td>W3C</td>
        <td>0.7</td>
        <td>still in use</td>
        <td>License updated from <a href="http://schemas.xmlsoap.org/soap/encoding/">
        http://schemas.xmlsoap.org/soap/encoding/</a> on
        6/18/2006 for WTP 1.5 release.</td>
    </tr>

    <tr>
        <td>wsdl.xsd</td>
        <td>WSDL 1.1</td>
        <td>IBM, Microsoft</td>
        <td>1.0</td>
        <td>still in use</td>
        <td>License updated from <a href="http://schemas.xmlsoap.org/wsdl/">
        http://schemas.xmlsoap.org/wsdl/</a> on
        6/18/2006 for WTP 1.5 release (clarified redistribution language).</td>
    </tr>

    <tr>
        <td>wsdl20.xsd</td>
        <td>1.2</td>
        <td>w3c</td>
        <td>1.0</td>
        <td>still in use</td>
        <td>&nbsp;</td>
    </tr>

    <tr>
        <td>wsdl-mime.xsd</td>
        <td>WSDL 1.1</td>
        <td>IBM, Microsoft</td>
        <td>1.0</td>
        <td>still in use</td>
        <td>License updated from <a href="http://schemas.xmlsoap.org/wsdl/mime/">
        http://schemas.xmlsoap.org/wsdl/mime/</a> on
        6/18/2006 for WTP 1.5 release (clarified redistribution language).</td>
    </tr>

    <tr>
        <td>XHTML</td>
        <td>1.0, 1.1</td>
        <td>w3c</td>
        <td>1.0</td>
        <td>still in use</td>
        <td>we re-distribute this as part of the org.eclipse.wst.html.standard.dtds plugin</td>
    </tr>

    <tr>
        <td>WAP DTDs</td>
        <td>1.1, 1.3</td>
        <td>OMA</td>
        <td>1.0</td>
        <td>still in use</td>
        <td>EPL 1.0 (See notes below, since was permitted upon request).
        <br />we re-distribute in org.eclipse.wst.html.standard.dtds plugin</td>
    </tr>

</table>

Additional Notes / Email Traces:
<p>

<ul>
    <li>WAP DTDs: The three files in question are detailed in
    https://bugs.eclipse.org/bugs/show_bug.cgi?id=105535 Namely, our xml
    catalog entries in
    <ul>
        <li>publicId="-//WAPFORUM//DTD WML 1.1//EN" uri="dtds/wml11.dtd"
        
        <li>publicId="-//WAPFORUM//DTD XHTML Mobile 1.0//EN"
        uri="dtds/xhtml-mobile10-flat.dtd"
        webURL="http://www.wapforum.org/DTD/xhtml-mobile10.dtd"
        <li>publicId="-//WAPFORUM//DTD WML 1.3//EN" uri="dtds/wml13.dtd"
        webURL="http://www.wapforum.org/DTD/wml13.dtd"
    </ul>
    These will be in our org.eclipse.wst.html.standard.dtds plugin. <pre>
From: Bengoshi@aol.com [mailto:Bengoshi@aol.com] 
Sent: Tuesday, October 18, 2005 2:12 AM
To: janet.campbell@eclipse.org
Cc: alastair_angwin@uk.ibm.com; Bengoshi@aol.com
Subject: Re: FW: Redistribution of WAP DTDs within Eclipse 
  
Hello, Janet, 

OMA's Legal, Trademark and Regulatory Committee has approved the use of the Eclipse Public License version 1.0 for the WAP DTD's.

Best regards,

Ann

Ann S. Woodliff
Attorney at Law
Phone: (425) 454-9343

----- Forwarded by David M Williams/Raleigh/IBM on 10/20/2005 09:14 AM ----- 
"Janet Campbell" janet.campbell@eclipse.org
10/18/2005 10:47 AM 
To David M Williams/Raleigh/IBM@IBMUS, "'Adrian Cho'" Adrian_Cho@ca.ibm.com
Subject FW: FW: Redistribution of WAP DTDs within Eclipse 
We have received approval to distribute the WAP DTD�s using the EPL v. 1.0. 
  
Regards, 
  
Janet Campbell 
Manager, Intellectual Property 
Eclipse Foundation Inc. 
</pre>
</ul>


<!-- added this section 4/20/2006, for release 1.5 to handle "pointing to" 
       use of 3rd party code from other Eclipse projects -->
<h2>3rd Party IP provided by other Eclipse projects</h2>

<table border="1">
    <tr>
        <th>Software</th>
        <th>Version</th>
        <th>License</th>
        <th>Other Eclipse project or  component</th>
        <th>Notes</th>
    </tr>

    <tr>
        <td>org.eclipse.equinox.servlet.api</td>
        <td>1.0.0</td>
        <td>Apache 1.1</td>
        <td>The Eclipse Project (Equinox component)</td>
        <td>This is a "bundle-ized" version of the servlets.jar 4.1.30 from Apache Jakarta.</td> 
    </tr>
</table> 

<h2>Proposals for 3rd Party IP Licensed for Binary Redistribution for Future Releases</h2>

<em>Listed for informational purposes only; WTP is NOT able to distribute this IP, but lists these items for tracking purposes
and so that downstream projects can determine whether redundant IP requests exist.</em>

<table border="1">
    <tr>
        <th>Software</th>
        <th>Version</th>
        <th>License/Use Agreement</th>
        <th>Bugzilla</th>
        <th>Notes</th>
    </tr>
    <tr>
        <td>3rd party (non-EPL licensed) logos</td>
        <td>N/A</td>
        <td>being determined by EMO</td>
        <td>142580 (WTP) and 142579 (EMO)</td>
        <td>&nbsp;</td>
    </tr>
    <tr>
        <td>J2EE DTDs/Schemas</td>
        <td>1.3 - 1.5 (aka 5)</td>
        <td>varies/unclear</td>
        <td>104086 tracks the "IBM sourced" approach; no defect for the outstanding Sun query</td>
        <td>Some of these state that reproduction is permissible as long as no changes are made;
            others stipulate that written permission from Sun is required to reproduce/redistribute.
            Research/investigation with Sun is ongoing.
        </td>
    </tr>
    <tr>
        <td>WSIL DTDs</td>
        <td>???</td>
        <td>not yet clarified</td>
        <td>127679</td>
        <td>License/distribution terms have not yet been definitively proven.</td>
    </tr>
    <tr>
        <td>Dojo Ajax Framework</td>
        <td>0.3.1</td>
        <td>Academic Free License version 2.1</td>
        <td>145865</td>
        <td>JavaScript source files to be shipped</td>
    </tr>
    <tr>
        <td>Rico Ajax Framework</td>
        <td>1.1.2</td>
        <td>Apache V2.0</td>
        <td>145865</td>
        <td>JavaScript source files to be shipped</td>
    </tr>
    <tr>
        <td>Prototype JavaScript Framework</td>
        <td>1.4.0</td>
        <td>MIT Style</td>
        <td>145865</td>
        <td>JavaScript source files to be shipped</td>
    </tr>
    <tr>
        <td>Script.aculo.us Ajax Framework</td>
        <td>1.6.2</td>
        <td>MIT Style</td>
        <td>145865</td>
        <td>JavaScript source files to be shipped</td>
    </tr>
    <tr>
        <td>Jslint JavaScript Verifier</td>
        <td>N.A.</td>
        <td>BSD like</td>
        <td>145865</td>
        <td>JavaScript source files to be shipped</td>
    </tr>
    <tr>
        <td>Rhino - JavaScript for Java</td>
        <td>1.6.2</td>
        <td>Mozilla Public License Version 1.1</td>
        <td>145865</td>
        <td>jars containing Java classes to be shipped</td>
    </tr> 
    <tr>
        <td>JavaXPCOM</td>
        <td>1.8.0.4</td>
        <td>Mozilla Public License Version 1.1</td>
        <td>145865</td>
        <td>jars containing Java classes to be shipped</td>
    </tr>
    <tr>
        <td>Zimbra Ajax Toolkit</td>
        <td>3.1.0</td>
        <td>ZPL (MPL with modifications to explicitly state that Zimbra trademarks not covered)</td>
        <td>145865</td>
        <td>JavaScript source files and jars containing Java classes to be shipped. </td>
    </tr>              
</table>

<h2>Contribution Questionnaires Reviews for Source Contributions Distributed under EPL</h2>

<table border="1">
    <tr>
        <th>Contributor</th>
        <th>Committer</th>
        <th>Subproject</th>
        <th>Bugzilla number</th>
        <th>Description</th>
        <th>Status</th>
    </tr>

    <tr>
	    <td>Craig Becker</td>
    	<td>Craig Becker</td>
    	<td>ATF</td>
    	<td>???</td>
    	<td>Initial contribution</td>
        <td>?? has review completed ??</td>
    </tr>

    <tr>
	    <td>Jean Choi</td>
    	<td>Jean Choi</td>
    	<td>JSF</td>
    	<td>123525</td>
    	<td>Faces config editor</td>
        <td>EMO approved</td>
    </tr>

    <tr>
	    <td>Xiaonan Jiang</td>
    	<td>Ian Trimble</td>
    	<td>JSF</td>
    	<td>124226 / 126181</td>
    	<td>EMF model</td>
        <td>EMO approved</td>
    </tr>
    
    <tr>
	    <td>Lumir Vanek</td>
    	<td>Gerry Kessler</td>
    	<td>JSF</td>
    	<td>133299</td>
    	<td>Snippets view for JSF RI JSP tags</td>
        <td>pending approval</td>
    </tr>
    
    <tr>
	    <td>Christian Ernst</td>
    	<td>Neil Hauge</td>
    	<td>Dali</td>
    	<td>135074</td>
    	<td>UI binding port from ORM project</td>
        <td>EMO approved</td>
    </tr>
    
    <tr>
	    <td>Karen Moore</td>
    	<td>Neil Hauge</td>
    	<td>Dali</td>
    	<td>N/A (preceded Bugzilla component)</td>
    	<td>Initial contribution from Oracle</td>
        <td>EMO approved</td>
    </tr>
    
    <tr>
	    <td>Artur Filipiak</td>
    	<td>Lawrence Mandel</td>
    	<td>WTP</td>
    	<td>122593</td>
    	<td>WTP Logo</td>
        <td>EMO approved</td>
    </tr>
    
</table>

<h2>3rd Party IP Incorporated in Source Form and Distributed Under EPL</h2>

<a href='http://www.eclipse.org/projects/ipscanning/timquery4.php'>An
automated Bugzilla query to list attachments.</a>

<h2>Past Committers</h2>
<table>
    <tr>
        <th align="left">Committer Name</th>
        <th align="left">Organization</th>
        <th align="left">Last Activity in Release</th>
    </tr>
    <tr>
        <td>Phil Avery</td>
        <td>IBM</td>
        <td>1.5</td>
    </tr>
    <tr>
        <td>Vijay Bhadriraju</td>
        <td>IBM</td>
        <td>1.5</td>
    </tr>
    <tr>
        <td>Jens Lukowski</td>
        <td>University of Karlsruhe</td>
        <td>1.5</td>
    </tr>
    <tr>
        <td>Ozgur Tumer</td>
        <td>Eteration</td>
        <td>1.5</td>
    </tr>
    <tr>
        <td>Susan Yeshin</td>
        <td>IBM</td>
        <td>1.5</td>
    </tr>
  </table>
</body>
</html>
