<?xml version="1.0" encoding="UTF-8"?>
<!--
  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.
-->
<!DOCTYPE document [
  <!ENTITY project SYSTEM "project.xml">
]>
<document url="developers.html">

  &project;

  <properties>
    <author email="remm@apache.org">Remy Maucherat</author>
    <author email="yoavs@apache.org">Yoav Shapira</author>
    <title>Tomcat Developers</title>
  </properties>

<body>

  <section name="Active Developers">

    <p>
      The list indicates the developers' main areas of interest. Feel free to
      add to the list :) The developers email addresses are
      <code>[login]@apache.org</code>. Please <strong>do not</strong> contact
      developers directly for any support issues (please post to the
      tomcat-users mailing list instead, or one of the other support
      resources; some organizations and individual consultants also offer
      for pay Tomcat support, as listed on the
      <a href="http://wiki.apache.org/tomcat/SupportAndTraining">support and
      training</a> page on the Tomcat Wiki).
    </p>

    <ul>
      <li>Bill Barker (billbarker): Connectors</li>
      <li>Costin Manolache (costin): Catalina, Connectors</li>
      <li>Filip Hanik (fhanik): Clustering, Release Manager</li>
      <li>Jean-Frederic Clere (jfclere): Connectors</li>
      <li>Jim Jagielski (jim): Connectors</li>
      <li>Konstantin Kolinko (kkolinko): Catalina</li>
      <li>Mark Thomas (markt): CGI, SSI, WebDAV, bug fixing</li>
      <li>Mladen Turk (mturk): Connectors</li>
      <li>Peter Rossbach (pero): Catalina, Clustering, JMX</li>
      <li>Rainer Jung (rjung): Catalina, Clustering, Connectors</li>
      <li>Remy Maucherat (remm): Catalina, Connectors, Docs</li>
      <li>Tim Funk (funkman): Catalina, Docs</li>
      <li>Tim Whittington (timw): Connectors</li>
    </ul>

  </section>

  <section name="Retired Developers">

    <ul>
      <li>Amy Roh (amyroh): Catalina</li>
      <li>Glenn Nielsen (glenn): Catalina, Connectors</li>
      <li>Henri Gomez (hgomez): Connectors</li>
      <li>Jan Luehe (luehe): Jasper</li>
      <li>Jean-Francois Arcand (jfarcand): Catalina</li>
      <li>Kin-Man Chung (kinman): Jasper</li>
      <li>Yoav Shapira (yoavs): Docs, JMX, Catalina, balancer</li>
    </ul>
  </section>

</body>
</document>
