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

  <properties>
    <title>Struts Release Plan (Version 1.0-beta-1)</title>
  </properties>

  <body>


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

  <p>$Id$</p>

  <p>The objective of the <strong>Struts 1.0-beta-1</strong> release is to
  create a milestone release against which a final series of bug fixes and
  documentation updates can occur before a <strong>Struts 1.0 Final</strong>
  release is created.</p>

  </section>


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

  <p>The code base for Struts has been in an informal "feature freeze" for
  several weeks, while development focus has been on bug fixes and the
  completion of required documentation.  Both of these goals have been
  substantially achieved, so it is time for a formal beta release - with
  the goal of moving quickly to a final <strong>Struts 1.0</strong> release
  shortly thereafter, if no disabling defects are found.</p>

  <p>Therefore, the following release plan is proposed for Struts 1.0-beta-1:
  </p>
  <ul>
  <li><em>Code Freeze / Tag Date</em> - Wednesday, February 21, 2001</li>
  <li><em>Release Manager</em> - Craig McClanahan</li>
  <li><em>Release Announcement</em> - To the following mailing lists and
      web sites:
      <ul>
      <li>ANNOUNCEMENTS@JAKARTA.APACHE.ORG</li>
      <li>GENERAL@JAKARTA.APACHE.ORG</li>
      <li>STRUTS-DEV@JAKARTA.APACHE.ORG</li>
      <li>STRUTS-USER@JAKARTA.APACHE.ORG</li>
      <li>JSP-INTEREST@JAVA.SUN.COM</li>
      <li>SERVLET-INTEREST@JAVA.SUN.COM</li>
      <li><a href="http://www.freshmeat.net">http://www.freshmeat.net</a></li>
      </ul></li>
  </ul>

  </section>


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

  <p>Prior to the release of Struts 1.0-beta-1, the following action items
  must be completed:</p>
  <ul>
  <li>All <a href="http://issues.apache.org/bugzilla/">Bugzilla</a> bug reports
      against Struts 1.0 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
      1.0 beta or final release, or whether they will be scheduled for
      consideration in a subsequent release time frame.</li>
  <li>Any remaining items on the Struts 1.0 TODO list shall be completed.</li>
  <li>The Struts 1.0 Release Notes document shall be updated to describe
      substantial changes and improvements since the Struts 0.5 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.2.1</a></li>
      <li><a href="http://jakarta.apache.org/tomcat">Tomcat 4.0</a> (Current
          nightly build)</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>

  </section>


  </body>

</document>
