<?xml version="1.0"?>
<document url="./release-plan-1.1rc1.xml">

  <properties>
    <title>Struts Release Plan (Version 1.1-rc1)</title>
  </properties>

  <body>


  <section name="Objective" href="Objective">

  <p>$Id$</p>

  <p>The objective of the <strong>Struts 1.1 Release Candidate 1</strong>
  release is to create a milestone release in preparation for an imminent
  <strong>Struts 1.1 Final</strong> release. As a release candidate, this
  milestone release currently contains no known showstoppers.</p>

  </section>


  <section name="The Plan" href="Plan">

  <p>A number of bugs have been fixed since the third Beta release of Struts 1.1,
  and all remaining bugs have been categorized either as enhancements, or as
  problems which can be fixed in a release subsequent to Struts 1.1 Final.
  Therefore it is time to make the latest code base available as a first Release
  Candidate. The goal is to move towards a final <strong>Struts 1.1</strong>
  release as soon as is practicable.</p>

  <p>Therefore, the following release plan is proposed for Struts 1.1 Release Candidate 1:
  </p>
  <ul>
  <li><em>Code Freeze / Tag Date</em> - Tuesday, February 18, 2003, 23:59:59</li>
  <li><em>Release Manager</em> - Martin Cooper</li>
  <li><em>Release Announcement</em> - To the following mailing lists:
      <ul>
      <li>announcements@jakarta.apache.org</li>
      <li>struts-dev@jakarta.apache.org</li>
      <li>struts-user@jakarta.apache.org</li>
      </ul></li>
  </ul>

  </section>


  <section name="Release Criteria" href="Criteria">

  <p>Prior to the release of Struts 1.1 Release Candidate 1, the following
  action items must be completed:</p>
  <ul>
  <li>The Struts 1.1 Release Notes document shall be updated to describe
      substantial changes and improvements since the Struts 1.0.2 release,
      along with associated updates to the main Struts Documentation
      Application pages describing the new release.</li>
  <li>All of the Struts example applications that are included with the release
      shall operate successfully in the following servlet containers:
      <ul>
      <li><a href="http://jakarta.apache.org/tomcat">Tomcat 3.3.1</a></li>
      <li><a href="http://jakarta.apache.org/tomcat">Tomcat 4.0.6</a></li>
      <li><a href="http://jakarta.apache.org/tomcat">Tomcat 4.1.18</a></li>
      </ul></li>
  <li>A release vote shall take place on the STRUTS-DEV mailing list to
      approve this plan.  The release vote MUST pass by "Majority Approval"
      of Struts committers.</li>
  </ul>

  <p>Prior to the release of a subsequent Struts 1.1 Final release, the
  following action items must be completed:</p>
  <ul>
  <li>All <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=VERIFIED&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=Struts&amp;version=Nightly+Build&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;newqueryname=&amp;order=Bug+Number">Bugzilla bug reports</a>
      against Struts 1.1 nightly builds MUST be marked as "Resolved", with any
      of the legal Bugzilla resolutions (FIXED, INVALID, WONTFIX, LATER,
      REMIND, WORKSFORME).</li>
  <li>Bug reports that are resolved as LATER or REMIND will include comments
      as to whether those specific issues will be dealt with in a subsequent
      beta, release candidate, or final release, or whether they will be
      scheduled for consideration in a subsequent release time frame.</li>
  </ul>

  </section>

  </body>

</document>
