<?xml version="1.0"?>
<!DOCTYPE document [
  <!ENTITY project SYSTEM "project.xml">
]>
<document url="status.html">

  &project;

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

<body>
  <section name="Preface">
    <p>
      This document attempts to convey the current status of Tomcat development
      in "big picture" terms.  This is not the place to check if an individual
      bug report has been addressed or when an individual feature will be available.
    </p>
    <p>
      This page is updated roughly once per every couple of Tomcat minor releases,
      so for day-to-day status you should check the tomcat-user and tomcat-dev mailing
      lists.  You can always inquire there as to the availability or status of a
      specific feature or component.
    </p>
  </section>

  <section name="Current Status Summary">
    <p>
      <b>Tomcat 5.0.27</b> was released on June 17th, 2004.  At that time, the TOMCAT_5_0
      branch was tagged in CVS, and work on Tomcat 5.5 began.  Until the first stable 
      release of Tomcat 5.5, building from
      CVS head may be unstable or broken: use the TOMCAT_5_0 branch tag to build
      the Tomcat 5.0 releases.
    </p>
    <p>
      <b>Tomcat 5.5</b> has several major goals.  They are discussed in the tomcat-dev
      mailing list's "5.next" thread: 
      <a href="http://marc.theaimsgroup.com/?l=tomcat-dev&amp;w=2&amp;r=1&amp;s=5.next&amp;q=b">MARC</a>.
      The status of some of these items is detailed below.  Once 5.5 releases are
      available, please refer to the Changelog accompanying each release for detailed
      changes, enhancements, and fixes.
    </p>
    <p>
      <b>Tomcat 4.1.x</b> is no longer actively developed.  It is maintained to address
      only showstopper, security, and Servlet Specification compliance issues.  Maintenance
      for Tomcat 4.1.x will likely cease once a stable release or two of Tomcat 5.5 are out.
      Users of Tomcat 4.1.x are strongly encouraged to upgrade to the latest stable Tomcat
      5.0 release.
    </p>
    <p>
      <b>Tomcat 4.0.x</b> is relatively old, and not actively maintained or supported.
      It is strongly recommended that users of these releases upgrade to the latest
      stable Tomcat 5.0 release or at least the latest stable Tomcat 4.1 release.
    </p>
    <p>
      <b>Tomcat 3.3.x</b> is in roughly the same maintenance mode as Tomcat 4.1.x.
    </p>
    <p>
      <b>Tomcat 3.2</b> and earlier are in roughly the same support state as Tomcat 4.0.x.
      Users should upgrade to Tomcat 3.3.x or the latest stable Tomcat 5.0.x.
    </p>
  </section>

  <section name="How to read the report">
    
    <p>
      The columns in this report contain the following information:
    <ul>
      <li><b>Priority</b> - A sense of how important it is to address this 
        issue in the short term.</li>
      <li><b>Action Item</b> - Concise description of the action item
        to be completed.  Where relevant, Java package names of the
        primary classes involved are listed in [square brackets]</li>
      <li><b>Volunteers</b> - Login of those developers who
        have volunteered to assist in the design, implementation, testing, and
        documentation of this action item's changes to Tomcat.</li>
    </ul>
      Developers can nominate
      themselves to work on particular action items by asking a Committer to 
      add their name address to those items.  The developers 
      working on each item should discuss and agree upon the approach to be 
      used for implementing the item's changes to the project source code 
      and documentation, prior to completing those changes.  Such discussions 
      should take place on the tomcat-dev mailing list so that everyone can 
      stay apprised of what is going on, or chime in if they want to 
      contribute ideas and suggestions.
    </p>
    
  </section>

  <section name="TODO List">

    <status>
      <item priority="High" owner="costin">
        Refactor ClassLoaders for Tomcat 5.5 to allow container plugins.
      </item>
      <item priority="Medium" owner="fhanik">
        Enhance Cluster functionality for Tomcat 5.5.
      </item>
      <item priority="Low" owner="yoavs, remm, funkman">
        Update docs, site, and FAQ for Tomcat 5.5 once ready.
      </item>
      <item priority="Low" owner="everyone">
        Continue fixing bugs ;)
      </item>
    </status>

  </section>

  <section name="Open bugs">
    
    <p>
      The list of the bugs which are in an unresolved state for Tomcat 5 can be
      seen 
      <a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;resolution=LATER&amp;resolution=REMIND&amp;resolution=---&amp;email1=&amp;emailtype1=substring&amp;emailassigned_to1=1&amp;email2=&amp;emailtype2=substring&amp;emailreporter2=1&amp;bugidtype=include&amp;bug_id=&amp;changedin=&amp;votes=&amp;chfieldfrom=&amp;chfieldto=Now&amp;chfieldvalue=&amp;product=Tomcat+5&amp;short_desc=&amp;short_desc_type=allwordssubstr&amp;long_desc=&amp;long_desc_type=allwordssubstr&amp;bug_file_loc=&amp;bug_file_loc_type=allwordssubstr&amp;keywords=&amp;keywords_type=anywords&amp;field0-0-0=noop&amp;type0-0-0=noop&amp;value0-0-0=&amp;cmdtype=doit&amp;order=%27Importance%27">here</a>.
      Aspiring volunteers and others are strongly encouraged to attempt 
      to comment and help resolve these issues.
    </p>
    
  </section>

</body>
</document>
