<!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>Sample announcements</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="/highlighter/github-theme.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>
</head>
<body>

<a href="http://github.com/apache/struts" class="github-ribbon">
  <img style="position: absolute; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_red_aa0000.png" alt="Fork me on GitHub">
</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.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>
              </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 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><a href="/contributors/">Contributors Guide</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="https://cwiki.apache.org/confluence/display/WW/Contributors+Guide">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/contributors/sample-announcements.md" title="Edit this page on GitHub">Edit on GitHub</a>
    
    <a href="creating-and-signing-a-distribution" title="back to Creating and Signing a Distribution"><< back to Creating and Signing a Distribution</a>
    
    <h1 class="no_toc" id="sample-announcements">Sample announcements</h1>

<ul id="markdown-toc">
  <li><a href="#sample-struts-annotations-releasequality-vote" id="markdown-toc-sample-struts-annotations-releasequality-vote">Sample Struts Annotations Release/Quality Vote</a></li>
  <li><a href="#sample-test-build-announcement" id="markdown-toc-sample-test-build-announcement">Sample Test Build Announcement</a></li>
  <li><a href="#sample-releasequality-vote" id="markdown-toc-sample-releasequality-vote">Sample Release/Quality Vote</a></li>
  <li><a href="#sample-release-announcement" id="markdown-toc-sample-release-announcement">Sample Release Announcement</a></li>
  <li><a href="#fast-tracking-an-important-security-release" id="markdown-toc-fast-tracking-an-important-security-release">Fast-Tracking an Important Security Release</a></li>
</ul>

<h2 id="sample-struts-annotations-releasequality-vote">Sample Struts Annotations Release/Quality Vote</h2>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Subject: [VOTE] Struts Annotations 1.0.x Vote
The Struts Annotations 1.0.x test build is now available as a Maven
artifact. It is a dependency of Struts 2.x.y.

If you have had a chance to review the test build, please respond with
a vote on its quality:

[ ] Leave at test build
[ ] Alpha
[ ] Beta
[ ] General Availability (GA)

Everyone who has tested the build is invited to vote. Votes by PMC members are considered binding. A vote passes 
if there are at least three binding +1s and more +1s than -1s.

The vote will remain open for at least 72 hours, longer upon request.
</code></pre></div></div>

<h2 id="sample-test-build-announcement">Sample Test Build Announcement</h2>

<blockquote>
  <p>Test builds are only announced to the dev list. Announcements to the user list can only be made pursuant to a release 
vote with the consent of the PMC.</p>
</blockquote>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>The test build of Struts 2.0.3 is available.

No determination as to the quality ('alpha,' 'beta,' or 'GA') of Struts 2.0.3 has been made, and at this time it is 
simply a "test build".  We welcome any comments you may have, and will take all feedback into account if a quality vote 
is called for this build.

Release notes:
* [https://cwiki.apache.org/confluence/display/WW/Version+Notes+#.#.#]

Distribution:
* [https://dist.apache.org/repos/dist/dev/struts/#.#.#/]

Maven 2 staging repository:
* [https://repository.apache.org/content/groups/staging/]

We appreciate the time and effort everyone has put toward contributing code and documentation, posting to the mailing 
lists, and logging issues.
</code></pre></div></div>

<h2 id="sample-releasequality-vote">Sample Release/Quality Vote</h2>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Subject: [VOTE] Struts #.#.# Vote
The Struts #.#.# test build is now available.

Release notes:
* [https://cwiki.apache.org/confluence/display/WW/Version+Notes+#.#.#]

Distribution:
* [https://dist.apache.org/repos/dist/dev/struts/#.#.#/]

Maven 2 staging repository:
* [https://repository.apache.org/content/groups/staging/]

Once you have had a chance to review the test build, please respond with a vote on its quality:

[ ] Leave at test build
[ ] Alpha
[ ] Beta
[ ] General Availability (GA)

Everyone who has tested the build is invited to vote. Votes by PMC members are considered binding. A vote passes if 
there are at least three binding +1s and more +1s than -1s.

The vote will remain open for at least 72 hours, longer upon request. A vote can be amended at any time to upgrade 
or downgrade the quality of the release based on future experience. If an initial vote designates the build as "Beta", 
the release will be submitted for mirroring and announced to the user list. Once released as a public beta, subsequent 
quality votes on a build may be held on the user list.

As always, the act of voting carries certain obligations. A binding vote not only states an opinion, but means that 
the voter is agreeing to help do the work
</code></pre></div></div>

<h2 id="sample-release-announcement">Sample Release Announcement</h2>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Subject: [ANN] Struts #.#.# [GA | Beta] release available

The Apache Struts group is pleased to announce that Struts #.#.# is available as a "[Beta | General Availability]" 
release. [[The Beta designation indicates that we believe the distribution needs wider testing before being upgraded 
to a "General Availability" release. Your input is essential.] The GA designation is our highest quality grade.]

Apache Struts 2 is an elegant, extensible framework for creating enterprise-ready Java web applications. The framework 
is designed to streamline the full development cycle, from building, to deploying, to maintaining applications over time.

[This release includes one important security fix:]

All developers are strongly advised to update existing Struts 2 applications to Struts #.#.#.

Struts #.#.# is available in a full distribution, or as separate library, source, example and documentation distributions, 
from the releases page.
* http://struts.apache.org/download.cgi#struts###

The release is also available from the central Maven repository under Group ID "org.apache.struts".

The #.#.x series of the Apache Struts framework has a minimum requirement of the following specification versions:
* Java Servlet 2.4 and JavaServer Pages (JSP) 2.0
* Java 2 Standard Platform Edition (J2SE) 7

The release notes are available online at:
* https://cwiki.apache.org/confluence/display/WW/Version+Notes+#.#.#

Should any issues arise with your use of any version of the Struts framework, please post your comments to the user list,
and, if appropriate, file a tracking ticket.appropriate, file a tracking ticket:
* https://issues.apache.org/jira/browse/WW

- The Apache Struts group.
</code></pre></div></div>

<h2 id="fast-tracking-an-important-security-release">Fast-Tracking an Important Security Release</h2>

<blockquote>
  <p>When a serious security issue  arises, we should try to create a #.#.#.# branch from the last GA release, and apply 
to that branch only the security patch.</p>
</blockquote>

<ul>
  <li>If the patch first applies to some other dependency, implore the other group to do the same, to avoid side-effects 
from other changes.</li>
  <li>If the release manager would like to “fast track” a vote, so as to make a security fix available quickly, the preferred 
procedure is to
    <ul>
      <li>Include the term “fast-track” in the subject, as in <code class="highlighter-rouge">[VOTE] Struts 2.0.9.1 quality (fast track)</code></li>
      <li>In the vote message, specify voting terms like:</li>
    </ul>
  </li>
</ul>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>The Struts #.#.#.# test build is now available.

(optional (in case of the presence of security bulletin)
It includes the latest security patches which fix two possible vulnerabilities:
* ...
* ...

For details and the rationale behind these changes, please consult the
corresponding security bulletins:
* https://cwiki.apache.org/confluence/display/WW/S2-XXX
* https://cwiki.apache.org/confluence/display/WW/S2-XXX

Please note that currently these bulletins and the release notes are
only visible to logged-in users with the struts-committer role. This is
a needed requirement to control disclosure until the actual release is
announced.
(/optional)

Release notes:
* [https://cwiki.apache.org/confluence/display/WW/Version+Notes+#.#.#.#]

Distribution:
* [https://dist.apache.org/repos/dist/dev/struts/#.#.#.#/]

Maven 2 staging repository:
* [https://repository.apache.org/content/groups/staging/]

Once you have had a chance to review the test build, please respond with a vote on its quality:

[ ] Leave at test build
[ ] Alpha
[ ] Beta
[ ] General Availability (GA)

Everyone who has tested the build is invited to vote. Votes by PMC members are considered binding. A vote passes 
if there are at least three binding +1s and more +1s than -1s.

This is a "fast-track" release vote. If we have a positive vote after 24 hours (at least three binding +1s and more +1s 
than -1s), the release may be submitted for mirroring and announced to the usual channels.

The website download link will include the mirroring timestamp parameter [1], which limits the selection of mirrors 
to those that have been refreshed since the indicated time and date. (After 24 hours, we *must* remove the timestamp
parameter from the website link, to avoid unnecessary server load.) In the case of a fast-track release, the email 
announcement will not link directly to &lt;download.cgi&gt;, but to &lt;downloads.html&gt;, so that we can control use of the timestamp 
parameter.

[1] &lt;[http://apache.org/dev/mirrors.html#use|http://apache.org/dev/mirrors.html#use]&gt;

- The Apache Struts group.
</code></pre></div></div>

<p>Please be sure to update <a href="https://cwiki.apache.org/confluence/display/WW/Security+Bulletins">Security Bulletins</a> accordingly 
as described above.</p>

  </section>
</article>


<footer class="container">
  <div class="col-md-12">
    Copyright &copy; 2000-2018 <a href="http://www.apache.org/">The Apache Software Foundation </a>.
    All Rights Reserved.
  </div>
  <div class="col-md-12">
    Apache Struts, Struts, Apache, the Apache feather logo, and the Apache Struts project logos are
    trademarks of The Apache Software Foundation.
  </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>
