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

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

  <body>

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

  <p>$Id$</p>

  <p>The objective of the <strong>Struts 1.1 Release Candidate 2</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 and other internal changes made
  since the first release candidate of Struts 1.1.
  All remaining tickets 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>
          This release candidate includes the Commons FileUpload RC1 JAR,
          which is required to compile and use Struts 1.1.
          A final release of Struts must depend only on final releases of other
          required products. Consequently, the Struts 1.1 Final release cannot
          be made unitl the Commons FileUpload 1.0 Final Release is available.
      </p>

      <p>
          However, Pending the final release of Commons FileUpload 1.0,
          and should there be no showstoppers found in this release candidate,
          <strong>Sunday June 29, 2003</strong>, is set as the anticipated release date of
          Struts 1.1 Final.
          Anyone wishing to test the product before the final release
          is encourged to do so before that date.
      </p>

  <p>Therefore, the following release plan is proposed for Struts 1.1 Release Candidate 2:
  </p>
  <ul>
  <li><em>Code Freeze / Tag Date</em> - Friday, June 6, 2003, 23:59:59</li>
  <li><em>Release Manager</em> - Ted Husted</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>

      <p>
          This plan is being prepared and executed in accordance with a positive vote
          held on the STRUT-DEV list, beginning on May 29,
          the results of which were posted on June 3, 2003.
      </p>

      <p>
          The release process shall follow the same
          <a href="http://jakarta.apache.org/commons/releases/">general procedures</a>
          established the Jakarta Commons products.
      </p>

  </section>

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

      <p>Prior to the release of Struts 1.1 Release Candidate 2, 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.1 RC1 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;bug_severity=Blocker&amp;bug_severity=Critical&amp;bug_severity=Major&amp;bug_severity=Normal&amp;bug_severity=Minor&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 "Enhancement" or "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>
          <li>
              The final release of Commons-FileUpload 1.0 must be available
              and made part of the Struts 1.1 Final distribution.
          </li>
      </ul>

    </section>
    </body>
</document>
