<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8"/>
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <meta name="Date-Revision-yyyymmdd" content="20140918"/>
  <meta http-equiv="Content-Language" content="en"/>
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

  <title>Release Guidelines</title>

  <link href="//fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,400italic,600italic,700italic" rel="stylesheet" type="text/css">
  <link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">
  <link href="/css/main.css" rel="stylesheet">
  <link href="/css/custom.css" rel="stylesheet">
  <link href="/css/syntax.css" rel="stylesheet">

  <script src="//code.jquery.com/jquery-1.11.0.min.js"></script>
  <script type="text/javascript" src="/bootstrap/js/bootstrap.js"></script>
  <script type="text/javascript" src="/js/community.js"></script>

  <!-- Matomo -->
  <script>
    var _paq = window._paq = window._paq || [];
    /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
    /* We explicitly disable cookie tracking to avoid privacy issues */
    _paq.push(['disableCookies']);
    _paq.push(['trackPageView']);
    _paq.push(['enableLinkTracking']);
    (function() {
      var u="//analytics.apache.org/";
      _paq.push(['setTrackerUrl', u+'matomo.php']);
      _paq.push(['setSiteId', '41']);
      var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
      g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
    })();
  </script>
  <!-- End Matomo Code -->
</head>
<body>

<a href="https://github.com/apache/struts" class="github-ribbon">
  <img decoding="async" loading="lazy" style="position: absolute; right: 0; border: 0;" width="149" height="149" src="https://github.blog/wp-content/uploads/2008/12/forkme_right_red_aa0000.png?resize=149%2C149" class="attachment-full size-full" alt="Fork me on GitHub" data-recalc-dims="1">
</a>

<header>
  <nav>
    <div role="navigation" class="navbar navbar-default navbar-fixed-top">
      <div class="container">
        <div class="navbar-header">
          <button type="button" data-toggle="collapse" data-target="#struts-menu" class="navbar-toggle">
            Menu
            <span class="sr-only">Toggle navigation</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a href="/index.html" class="navbar-brand logo"><img src="/img/struts-logo.svg"></a>
        </div>
        <div id="struts-menu" class="navbar-collapse collapse">
          <ul class="nav navbar-nav">
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Home<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/index.html">Welcome</a></li>
                <li><a href="/download.cgi">Download</a></li>
                <li><a href="/releases.html">Releases</a></li>
                <li><a href="/announce-2024.html">Announcements</a></li>
                <li><a href="http://www.apache.org/licenses/">License</a></li>
                <li><a href="https://www.apache.org/foundation/thanks.html">Thanks!</a></li>
                <li><a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
                <li><a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy Policy</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Support<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/mail.html">User Mailing List</a></li>
                <li><a href="https://issues.apache.org/jira/browse/WW">Issue Tracker</a></li>
                <li><a href="/security.html">Reporting Security Issues</a></li>
                <li><a href="/commercial-support.html">Commercial Support</a></li>
                <li class="divider"></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Migration+Guide">Version Notes</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Security+Bulletins">Security Bulletins</a></li>
                <li class="divider"></li>
                <li><a href="/maven/project-info.html">Maven Project Info</a></li>
                <li><a href="/maven/struts2-core/dependencies.html">Struts Core Dependencies</a></li>
                <li><a href="/maven/struts2-plugins/modules.html">Plugin Dependencies</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Documentation<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/birdseye.html">Birds Eye</a></li>
                <li><a href="/primer.html">Key Technologies</a></li>
                <li><a href="/kickstart.html">Kickstart FAQ</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/Home">Wiki</a></li>
                <li class="divider"></li>
                <li><a href="/getting-started/">Getting Started</a></li>
                <li><a href="/security/">Security Guide</a></li>
                <li><a href="/core-developers/">Core Developers Guide</a></li>
                <li><a href="/tag-developers/">Tag Developers Guide</a></li>
                <li><a href="/maven-archetypes/">Maven Archetypes</a></li>
                <li><a href="/plugins/">Plugins</a></li>
                <li><a href="/maven/struts2-core/apidocs/index.html">Struts Core API</a></li>
                <li><a href="/tag-developers/tag-reference.html">Tag reference</a></li>
                <li><a href="https://cwiki.apache.org/confluence/display/WW/FAQs">FAQs</a></li>
                <li><a href="http://cwiki.apache.org/S2PLUGINS/home.html">Plugin registry</a></li>
              </ul>
            </li>
            <li class="dropdown">
              <a data-toggle="dropdown" href="#" class="dropdown-toggle">
                Contributing<b class="caret"></b>
              </a>
              <ul class="dropdown-menu">
                <li><a href="/youatstruts.html">You at Struts</a></li>
                <li><a href="/helping.html">How to Help FAQ</a></li>
                <li><a href="/dev-mail.html">Development Lists</a></li>
                <li class="divider"></li>
                <li><a href="/submitting-patches.html">Submitting patches</a></li>
                <li><a href="/builds.html">Source Code and Builds</a></li>
                <li><a href="/coding-standards.html">Coding standards</a></li>
                <li><a href="/contributors/">Contributors Guide</a></li>
                <li class="divider"></li>
                <li><a href="/release-guidelines.html">Release Guidelines</a></li>
                <li><a href="/bylaws.html">PMC Charter</a></li>
                <li><a href="/volunteers.html">Volunteers</a></li>
                <li><a href="https://gitbox.apache.org/repos/asf?p=struts.git">Source Repository</a></li>
                <li><a href="/updating-website.html">Updating the website</a></li>
              </ul>
            </li>
            <li class="apache"><a href="http://www.apache.org/"><img src="/img/apache.png"></a></li>
          </ul>
        </div>
      </div>
    </div>
  </nav>
</header>


<article class="container">
  <section class="col-md-12">
    <a class="edit-on-gh" href="https://github.com/apache/struts-site/edit/master/source/release-guidelines.md" title="Edit this page on GitHub">Edit on GitHub</a>
    
    <h1 class="no_toc" id="release-guidelines">Release Guidelines</h1>

<ul id="markdown-toc">
  <li><a href="#release-process" id="markdown-toc-release-process">Release Process</a></li>
  <li><a href="#coding-conventions-and-guidelines" id="markdown-toc-coding-conventions-and-guidelines">Coding Conventions and Guidelines</a></li>
  <li><a href="#clarifications" id="markdown-toc-clarifications">Clarifications</a></li>
</ul>

<p>This document describes the Apache Struts release process and our <a href="#Coding">coding conventions</a>,
which are applicable to all subprojects. Both stable and development releases are
<a href="releases">available for download.</a></p>

<h2 id="release-process">Release Process</h2>

<p>A <a href="http://commons.apache.org/releases/versioning">point release</a> should be made before and after
any product change that is not a “fully-compatible change” (see link). This includes moving a dependency from
an internal package to an external product, including products distributed through the Apache Commons.
We should place any fully-compatible changes in the hands of the community before starting on a change that
is only “interface” or “external-interface” compatible.</p>

<p>Additional remarks:</p>

<ul>
  <li>Every committer is encouraged to participate in the release process, either as the release manager or a
helper. Committers may also share the release manager role.</li>
  <li>The release process can seem daunting when you review it for the first time. But, essentially, it breaks
down into four phases of just a few steps each:
    <ul>
      <li><strong>Rolling</strong> - Issues, dependencies, release notes, JAR manifest, licenses, copyrights,
and build (using the release target).</li>
      <li><strong>Testing</strong> - JUnit, Cactus, web apps (for all “supported” containers).</li>
      <li><strong>Voting</strong> - Upload test build to internal directory, post majority vote on DEV list as to release
grade: Alpha, Beta, General Availability.</li>
      <li><strong>Distributing</strong> - Checksum, sign, mirror, update download page, announce.</li>
    </ul>
  </li>
  <li>Committers are <strong>required</strong> to post a release plan before tagging the repository and should wait
the traditional 72 hours before proceeding.</li>
  <li>A checklist format can be used for the <a href="http://wiki.apache.org/struts/StrutsReleasePlans">release plan</a>,
to help step through the process. The plan may be maintained in the repository or on the
<a href="http://wiki.apache.org/struts/">Struts wiki</a>.</li>
  <li>Our dependencies on external JARs (including Commons JARs) should be in line with our own release status.
Our nightly build can be dependant on another nightly build. Our beta can be dependant on another beta (or
“release candidate”), but should avoid a dependance on a nightly build. Our General Availability release
may only have dependencies on other GA, final, or stable releases.</li>
  <li>Use your own discretion as to detail needed by the Release Notes. A high-level description of the changes
is more important than providing uninterpreted detail. At a minimum, new features and deprecations should be
summarized, since these are commonly asked questions. Ideally, the release notes should be maintained,
continuously for the nightly build so that we they do not need to be assembled at the last minute.</li>
  <li>Try building the distribution under prior version of J2SE, if possible, to ensure that we are still
backwardly-compatible. But, our distributions should be built using the <strong>latest production release of J2SE</strong>,
to take advantage of all available compiler enhancements.</li>
  <li>If you have multiple J2SE versions configured, run the JUnit and Cactus tests using the same configuration
that will be used to build the distribution.</li>
  <li>There is a “release” target in the buildfile that will zip and tar the distribution. Before uploading the
distribution, extract the sample web applications and deploy the WARs under each of the “supported”
containers (if you can). Play test each application under each container to be sure they operate
nominally.</li>
  <li>The test build can be posted to the internal distribution directory (svn.apache.org/struts/) and
announced to the Struts DEV and PMC lists (only!). Do not announce a test build on any other Apache lists or
link to it from an Apache website.</li>
  <li>If the test build is voted to Alpha, Beta, or GA status, the release can announced to the User list and
linked from the website.</li>
  <li>Any formal release may be submitted for mirroring. All GA releases <strong>must</strong> be mirrored.</li>
  <li>After announcing a release, remember to update the Downloads and Announcements pages. If the release is
to be mirrored, wait at least 24 hours after submittal before making public announcements (as stated in the
<a href="https://www.apache.org/dev/mirrors">Apache Mirroring guidelines</a>.</li>
  <li>If a serious flaw if found in a test build or release, it may be withdrawn by a majority vote of the PMC and
removed from ASF distribution channels.</li>
</ul>

<h2 id="coding-conventions-and-guidelines">Coding Conventions and Guidelines</h2>

<p>Source code and documentation contributed to the Struts repositories should observe the:</p>
<ul>
  <li>The <a href="http://www.oracle.com/technetwork/java/codeconvtoc-136057">“Code Conventions for the Java Programming Language”</a>,
as published by Oracle.</li>
</ul>

<h2 id="clarifications">Clarifications</h2>
<ul>
  <li>First, “Observe the style of the original”. Resist the temptation to make stylistic changes for their own
sake. But, if you must reformat code, commit style changes separately from code changes. Either change
the style, commit, and then change the code, or vice-versa.</li>
  <li>Set editors to replace tabs with spaces and do not trim trailing spaces. Tabs confound the version
control alerts. Trimming trailing spaces creates unnecessary changes.</li>
  <li>Specify imported classes (do not use <em>.*</em>).</li>
  <li>Write all if/else statements as full blocks with each clause within braces, unless the entire statement fits
on the same line.</li>
  <li>Use <code class="language-plaintext highlighter-rouge">FIXME:</code> and <code class="language-plaintext highlighter-rouge">TODO:</code> tokens to mark follow up notes in code. You may also
include your Apache username and the date.</li>
  <li>Omit <code class="language-plaintext highlighter-rouge">@author</code> tags.</li>
  <li><code class="language-plaintext highlighter-rouge">@since</code> to document changes between Struts versions, as in <code class="language-plaintext highlighter-rouge">@since Struts 2.1.</code></li>
  <li>Wrap lines of code and JavaDoc at column 78. You can include a “comment rule” in the source to help with
this.</li>
  <li>Please do your best to provide high-quality Javadocs for all source code elements. Package overviews
(aka “Developer Guides”) are also encouraged.</li>
  <li>When working on a bugfix, please first write a test case that proves the bug exists, and then use the test
to prove the bug is fixed. =:0)</li>
  <li>When working on an enhancement, please feel free to use test-driven design and write the test first <code class="language-plaintext highlighter-rouge">&lt;head-slap/&gt;</code></li>
  <li>As files are updated from year to year, the copyright on each file should be extended to include the current
year. <em>You do not need to change the copyright year unless you change the file.</em>  Every source file should
include the ASF copyright notice and current Apache License and copyright.</li>
  <li>Provide high-level API compatibility for any changes made within the same major release series (#.x.x).
Changes which adversely affect compatibility should be slotted for the next major release series (++#.x.x).</li>
  <li>Our favorite books about programming are
<a href="http://www.amazon.com/exec/obidos/ISBN=0201633612/apachesoftwar-20/">Design Patterns</a>,
<a href="http://www.amazon.com/exec/obidos/ISBN=0201485672/apachesoftwar-20/">Refactoring</a>,
and <a href="http://www.amazon.com/exec/obidos/ISBN=0735619670/apachesoftwar-20/">Code Complete</a></li>
  <li>Our favorite book about open source development is the
<a href="http://www.amazon.com/exec/obidos/ISBN=1565927249/apachesoftwar-20/">The Cathedral and the Bazaar</a></li>
  <li>Our favorite science fiction author is
<a href="http://www.nitrosyncretic.com/rah/">Robert Heinlein</a>,
<a href="http://jargon.net/jargonfile/t/TANSTAAFL">TANSTAAFL</a>,
(Except on Friday, when we favor <a href="http://news.bbc.co.uk/1/hi/uk/1326657.stm">Douglas Adams</a>).</li>
</ul>

<p>Next: <a href="bylaws">PMC Charter</a></p>

  </section>
</article>


<footer class="container">
  <div class="col-md-12">
    Copyright &copy; 2000-2022 <a href="https://www.apache.org/">The Apache Software Foundation</a>.
    Apache Struts, Struts, Apache, the Apache feather logo, and the Apache Struts project logos are
    trademarks of The Apache Software Foundation. All Rights Reserved.
  </div>
  <div class="col-md-12">Logo and website design donated by <a href="https://softwaremill.com/">SoftwareMill</a>.</div>
</footer>

<script>!function (d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (!d.getElementById(id)) {
    js = d.createElement(s);
    js.id = id;
    js.src = "//platform.twitter.com/widgets.js";
    fjs.parentNode.insertBefore(js, fjs);
  }
}(document, "script", "twitter-wjs");</script>
<script src="https://apis.google.com/js/platform.js" async="async" defer="defer"></script>

<div id="fb-root"></div>

<script>(function (d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s);
  js.id = id;
  js.src = "//connect.facebook.net/en_GB/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>


</body>
</html>
