accumulo-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
Subject svn commit: r932721 - in /websites/staging/accumulo/trunk/content: ./ versioning.html
Date Sun, 14 Dec 2014 17:57:25 GMT
Author: buildbot
Date: Sun Dec 14 17:57:25 2014
New Revision: 932721

Staging update by buildbot for accumulo

    websites/staging/accumulo/trunk/content/   (props changed)

Propchange: websites/staging/accumulo/trunk/content/
--- cms:source-revision (original)
+++ cms:source-revision Sun Dec 14 17:57:25 2014
@@ -1 +1 @@

Added: websites/staging/accumulo/trunk/content/versioning.html
--- websites/staging/accumulo/trunk/content/versioning.html (added)
+++ websites/staging/accumulo/trunk/content/versioning.html Sun Dec 14 17:57:25 2014
@@ -0,0 +1,645 @@
+<!DOCTYPE html>
+<html lang="en">
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+ 2.0
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+  <link href="/css/bootstrap.min.css" rel="stylesheet">
+  <link href="/css/bootstrap-theme.min.css" rel="stylesheet">
+  <link href="/css/dataTables.bootstrap.css" rel="stylesheet">
+  <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
+  <!--[if lt IE 9]>
+    <script src=""></script>
+    <script src=""></script>
+  <![endif]-->
+  <script src=""></script>
+  <script src="/js/bootstrap.min.js"></script>
+  <script src="/js/jquery.dataTables.min.js"></script>
+  <script src="/js/dataTables.bootstrap.js"></script>
+  <link href="/css/accumulo.css" rel="stylesheet" type="text/css">
+  <link href="//" rel="stylesheet">
+  <title>Apache Accumulo Git WIP</title>
+  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+  })(window,document,'script','//','ga');
+  ga('create', 'UA-50934829-1', '');
+  ga('send', 'pageview');
+<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
+<div class="container-fluid">
+  <div class="navbar-header">
+    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-items">
+      <span class="sr-only">Toggle navigation</span>
+      <span class="icon-bar"></span>
+      <span class="icon-bar"></span>
+      <span class="icon-bar"></span>
+    </button>
+    <a class="navbar-brand" href="/index.html">Accumulo</a>
+  </div>
+  <div class="collapse navbar-collapse" id="navbar-items">
+  <ul class="nav navbar-nav">
+    <li class="dropdown">
+      <a class="dropdown-toggle" data-toggle="dropdown" href="#">
+        Project <span class="caret"></span>
+      </a>
+<ul class="dropdown-menu">
+<li id="nav_index"><a href="/index.html">Home</a></li>
+<li id="nav_downloads"><a href="/downloads">Downloads</a></li>
+<li id="nav_features"><a href="/notable_features.html">Features</a></li>
+<li><a href=""><i class="fa fa-external-link"></i>
+    <li class="dropdown">
+      <a class="dropdown-toggle" data-toggle="dropdown" href="#">
+        Community <span class="caret"></span>
+      </a>
+<ul class="dropdown-menu">
+<li id="nav_getinvolved"><a href="/get_involved.html">Get Involved</a></li>
+<li id="nav_mailinglists"><a href="/mailing_list.html">Mailing Lists</a></li>
+<li id="nav_people"><a href="/people.html">People</a></li>
+<li id="nav_blog"><a href="">Blog</a></li>
+<li class="divider"></li>
+<li class="dropdown-header">Governance</li>
+<li id="nav_bylaws"><a href="/bylaws.html">Bylaws</a></li>
+<li id="nav_consensusbuilding"><a href="/governance/consensusBuilding.html">Consensus
+<li id="nav_lazyconsensus"><a href="/governance/lazyConsensus.html">Lazy Consensus</a></li>
+<li id="nav_releasing"><a href="/governance/releasing.html">Releasing</a></li>
+<li id="nav_voting"><a href="/governance/voting.html">Voting</a></li>
+    <li class="dropdown">
+      <a class="dropdown-toggle" data-toggle="dropdown" href="#">
+        Development <span class="caret"></span>
+      </a>
+<ul class="dropdown-menu">
+<li id="nav_source"><a href="/source.html">Source &amp; Guide</a></li>
+<li id="nav_git"><a href="/git.html">Git Workflow</a></li>
+<li id="nav_contrib"><a href="/contrib.html">Contrib Projects</a></li>
+<li id="nav_rb"><a href="/rb.html">Review Board</a></li>
+<li id="nav_releasing"><a href="/releasing.html">Making Releases</a></li>
+<li><a href=""><i class="fa
fa-external-link"></i> Issues</a></li>
+<li><a href=""><i class="fa
fa-external-link"></i> Builds</a></li>
+    <li class="dropdown">
+      <a class="dropdown-toggle" data-toggle="dropdown" href="#">
+        Documentation <span class="caret"></span>
+      </a>
+<ul class="dropdown-menu">
+<li class="dropdown-header">Manual</li>
+<li><a href="/1.5/accumulo_user_manual.html">1.5</a></li>
+<li><a href="/1.6/accumulo_user_manual.html">1.6</a></li>
+<li class="divider"></li>
+<li class="dropdown-header">Javadoc</li>
+<li><a href="/1.5/apidocs">1.5</a></li>
+<li><a href="/1.6/apidocs">1.6</a></li>
+<li class="divider"></li>
+<li class="dropdown-header">Examples</li>
+<li id="nav_examples_1_5"><a href="/1.5/examples">1.5</a></li>
+<li id="nav_examples_1_6"><a href="/1.6/examples">1.6</a></li>
+<li class="divider"></li>
+<li id="old_documentation"><a href="/old_documentation.html">Docs for Older Verisons</a></li>
+<li id="nav_screenshots"><a href="/screenshots.html">Screenshots</a></li>
+<li id="nav_papers"><a href="/papers.html">Papers &amp; Other Links</a></li>
+<li id="nav_glossary"><a href="/glossary.html">Glossary</a></li>
+    <li class="dropdown">
+      <a class="dropdown-toggle" data-toggle="dropdown" href="#">
+        ASF Links <span class="caret"></span>
+      </a>
+<ul class="dropdown-menu">
+<li><a href=""><i class="fa fa-external-link"></i>
Apache Software Foundation</a></li>
+<li><a href=""><i class="fa
fa-external-link"></i> Sponsorship</a></li>
+<li><a href=""><i class="fa fa-external-link"></i>
+<li><a href=""><i class="fa fa-external-link"></i>
+<form method="GET" action="" class="navbar-form navbar-right"
+  <div class="form-group">
+    <input type="text" name="q" class="form-control" placeholder="Search"/>
+    <input type="hidden" name="fc_project" value="Accumulo"/>
+  </div>
+  <button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-search"></span></button>
+  </div>
+<div class="container-fluid">
+<div class="row">
+  <div class="col-md-2" id="sidebar">
+  <div style="text-align: center">
+    <a href="/index.html"><img id="logo" alt="Apache Accumulo &trade;" class="img-responsive"
+    <br>
+Latest 1.6 release: <strong>1.6.1</strong><br>
+Latest 1.5 release: <strong>1.5.2</strong><br>
+    <br>
+    <a id="download-button-sidebar" class="btn btn-success btn-block" href="/downloads/"
+  </div>
+    <hr>
+<table class="table" id="sociallinks">
+<tr><td><img src="/images/Twitter_logo_blue.png" style="height: 1em"></td><td><a
+<tr><td><img src="/images/InBug-16px_0.png"></td><td><a
href="">Apache Accumulo
+<tr><td><img src="/images/GitHub-Mark-32px.png" style="height: 1em"></td><td><a
href="">apache / accumulo</a></td></tr>
+<tr><td><span class="glyphicon glyphicon-comment"></span></td><td><a
href="irc://">#accumulo @ freenode</a></td></tr>
+<tr><td><img src="/favicon.png" width="16" /></td><td><a
href="">Apache Accumulo Blog</a></td></tr>
+<a id="accumulo-summit-logo" href=""><img alt="Accumulo
Summit" class="img-responsive" src="/images/accumulo-summit-2014.png"></a>
+  </div>
+  <div class="col-md-8 col-md-offset-1">
+  <div id="bannertext">
+    <img id="logo" alt="Apache Accumulo &trade;" src="/images/accumulo-logo.png"/>
+  </div>
+  <div id="content">
+    <h1 class="title">Apache Accumulo Git WIP</h1>
+    <p><a href="">Git</a> is an open source, distributed
version control system
+which has become very popular in large, complicated software projects due to
+its efficient handling of multiple, simultaneously and independently developed
+branches of source code.\</p>
+<h2 id="workflow-background">Workflow Background</h2>
+<p>Likely the most contested subject matter regarding switching an active team
+from one SCM tool to another is a shift in the development paradigm.</p>
+<p>Some background, the common case, as is present with this team, is that
+developers coming from a Subversion history are very light on merging being a
+critical consideration on how to perform development. Because merging in
+Subversion is typically of no consequence to the complete view of history, not
+to mention that Subversion allows "merging" of specific revisions instead of
+sub-trees. As such, a transition to Git typically requires a shift in mindset
+in which a fix is not arbitrarily applied to trunk (whatever the main
+development is called), but the fix should be applied to the earliest, non
+end-of-life (EOL) version of the application.</p>
+<p>For example, say there is a hypothetical application which has just released
+version-3 of their software and have shifted their development to a version-4
+WIP. Version-2 is still supported, while version-1 was just EOL'ed. Each
+version still has a branch. A bug was just found which affects all released
+versions of this application. In Subversion, considering the history in the
+repository, it is of no consequence where the change is initially applied,
+because a Subversion merge is capable of merging it to any other version.
+History does not suffer because Subversion doesn't have the capacities to
+accurately track the change across multiple branches. In Git, to maintain a
+non-duplicative history, it is imperative that the developer choose the correct
+branch to fix the bug in. In this case, since version-1 is EOL'ed, version-2,
+version-3 and the WIP version-4 are candidates. The earliest version is
+obviously version-2; so, the change should be applied in version-2, merged to
+version-3 and then the version-4 WIP.</p>
+<p>The importance of this example is making a best-attempt to preserve history
+when using Git. While Git does have commands like cherry-pick which allow the
+contents of a commit to be applied from one branch to another which are not
+candidates to merge without conflict (which is typically the case when merging
+a higher version into a lower version), this results in a duplication of that
+commit in history when the two trees are eventually merged together. While Git
+is smart enough to not attempt to re-apply the changes, history still contains
+the blemish.</p>
+<p>The purpose of this extravagant example is to outline, in the trivial case, how
+the workflow decided upon for development is very important and has direct
+impact on the efficacy of the advanced commands bundled with Git.</p>
+<h2 id="proposed-workflow">Proposed Workflow</h2>
+<p>This is a summary of what has been agreed upon by vocal committers/PMC members
+on <a href=""></a>. Enumeration
+every possible situation out of the scope of this document. This document
+intends to lay the ground work to define the correct course of action regardless
+of circumstances. Some concrete examples will be provided to ensure the
+explanation is clear.</p>
+<p>Active development is performed concurrently over no less than two versions
+   of Apache Accumulo at any one point in time. As such, the workflow must
+   provide guidance on how and where changes should be made which apply to
+   multiple versions and how to ensure that such changes are contained in all
+   applicable versions.</p>
+<p>Releases are considered extremely onerous and time-consuming so no emphasis
+   is placed on rapid iterations or development-cycles.</p>
+<p>New features typically have lengthy development cycles in which more than
+   one developer contributes to the creation of the new feature from planning,
+   to implementation, to scale testing. Mechanisms/guidance should be provided
+   for multiple developers to teach contribute to a remote-shared resource.</p>
+<p>The repository should be the irrefutable, sole source of information
+   regarding the development of Apache Accumulo, and, as such, should have
+   best-efforts given in creating a clean, readable history without any single
+   entity having to control all write access and changes (a proxy). In other
+   words, the developers are the ones responsible for ensuring that previous
+   releases are preserved to meet ASF policy, for not rewriting any public
+   history of code not yet officially released (also ASF policy relevant) and
+   for a best-effort to be given to avoid duplicative commits appearing in
+    history created by the application of multiple revisions which have
+    different identifying attributes but the same contents (git-rebase and
+    git-cherry-pick).</p>
+<h1 id="the-implementation">The implementation</h1>
+<h2 id="contributors">Contributors</h2>
+<p>Use the following steps, original derived from Apache Kafka's <a href="">simple
+<p>To be specific, let's consider a contributor wanting to work on a fix for the
+Jira issue ACCUMULO-12345 that affects 1.5.0 release.</p>
+<p>Ensure you configured Git with your information</p>
+<p><code>git config --global 'My Name' &amp;&amp; git config
+<p>Clone the Accumulo repository:</p>
+<p><code>git clone accumulo</code></p>
+<p>or update your local copy:</p>
+<p><code>git fetch &amp;&amp; git fetch --tags</code></p>
+<p>For the given issue you intend to work on, choose the 'lowest' fixVersion
+   and create a branch for yourself to work in. This example is against the next release
of 1.5</p>
+<p><code>git checkout -b ACCUMULO-12345-my-work origin/1.5</code></p>
+<p>Make commits as you see fit as you fix the issue, referencing the issue name
+   in the commit message:</p>
+<p><code>git commit -av</code></p>
+<p>Please include the ticket number at the beginning of the log message, and
+in the first line, as it's easier to parse quickly. For example:</p>
+<p><code>ACCUMULO-2428 throw exception when rename fails after compaction</code></p>
+<p>Consider following the git log message format described in
+<a href="">Zach Holman's talk</a>
+(specifically slides 78-98, beginning at 15:20 into the video). Essentially,
+leave a short descriptive message in the first line, skip a line, and write
+more detailed stuff there, if you need to. For example:</p>
+<p><code>ACCUMULO-2194 Add delay for randomwalk Security teardown</code></p>
+<p><code>If two Security randomwalk tests run back-to-back, the second test may
see that the
+table user still exists even though it was removed when the first test was torn down.
+This can happen if the user drop does not propagate through Zookeeper quickly enough.
+This commit adds a delay to the end of the Security test to give ZK some time.</code></p>
+<p>Assuming others are developing against the version you also are, as you
+   work, or before you create your patch, rebase your branch against the remote
+   to lift your changes to the top of your branch. The branch specified here should be the
same one you used in step 4.</p>
+<p><code>git pull --rebase origin 1.5</code></p>
+<p>At this point, you can create a patch file from the upstream branch to
+   attach to the ACCUMULO-12345 Jira issue. The branch specified here should be teh same
one you used in step 4.</p>
+<p><code>git format-patch --stdout origin/1.5 &gt; ACCUMULO-12345.patch</code></p>
+<p>An alternative to creating a patch is submitting a request to pull your changes
+from some repository, e.g. Github. Please include the repository and branch
+name merge in the notice to the Jira issue, e.g.</p>
+<div class="codehilite"><pre><span class="n">repo</span><span
class="p">=</span><span class="n">git</span><span class="p">:</span><span
class="o">//</span><span class="n">github</span><span class="p">.</span><span
class="n">com</span><span class="o">/&lt;</span><span class="n">username</span><span
class="o">&gt;/</span><span class="n">accumulo</span><span class="p">.</span><span
class="n">git</span> <span class="n">branch</span><span class="p">=</span><span
class="n">ACCUMULO</span><span class="o">-</span>12345
+<p>A second alternative is to use Github's "Pull Requests" feature against the
+<a href="">Apache Accumulo account</a>. Notifications
+new pull-requests from Github should automatically be sent to
+<a href=""></a>.</p>
+<p>Ignoring specifics, contributors should be sure to make their changes against
+the earlier version in which the fix is intended, <code>git-rebase</code>'ing
+changes against the upstream branch so as to keep their changes co-located and
+free of unnecessary merges.</p>
+<h2 id="developers">Developers</h2>
+<h3 id="primary-development">Primary Development</h3>
+<p>Primary development should take place in <code>master</code> which is
to contain the most
+recent, un-released version of Apache Accumulo. Branches exist for minor releases
+for each previously released major version. </p>
+<p>Using long-lived branches that track a major release line simplifies management
+release practices. Developers are encouraged to make branches for their own purposes,
+for large features, release candidates or whatever else is deemed useful.</p>
+<h3 id="reviewing-contributor-changes">Reviewing contributor changes</h3>
+<p>It is always the responsibility of committers to determine that a patch is
+intended and able to be contributed.  From the
+<a href="">new committer's guide</a>:
+"Please take care to ensure that patches are original works which have been
+clearly contributed to the ASF in public. In the case of any doubt (or when a
+contribution with a more complex history is presented) please consult your
+project PMC before committing it."</p>
+<p>Extra diligence may be necessary when code is contributed via a pull request.
+Committers should verify that the contributor intended to submit the code as a 
+Contribution under the <a href="">Apache
+When pulling the code, committers should also verify that the commits pulled match the 
+list of commits sent to the Accumulo dev list in the pull request.</p>
+<h4 id="patches">Patches</h4>
+<p>Developers should use the following steps to apply patches from
+<p>Checkout the branch for the major version which the patch is intended:</p>
+<p><code>git checkout 1.5</code></p>
+<p>Verify the changes introduced by the patch:</p>
+<p><code>git apply --stat ACCUMULO-12345.patch</code></p>
+<p>Verify that the patch applies cleanly:</p>
+<p><code>git apply --check ACCUMULO-12345.patch</code></p>
+<p>If all is well, apply the patch:</p>
+<p><code>git am --signoff &lt; ACCUMULO-12345.patch</code></p>
+<p>When finished, push the changes:</p>
+<p><code>git push origin 1.5</code></p>
+<p>Merge where appropriate:</p>
+<p><code>git checkout master &amp;&amp; git merge 1.5</code></p>
+<h4 id="github-pull-requests">Github Pull-Requests</h4>
+<p>If the contributor submits a repository and branch to pull
+from, the steps are even easier:</p>
+<p>Add their repository as a remote to your repository</p>
+<p><code>git remote add some_name ${repository}</code></p>
+<p>Fetch the refs from the given repository</p>
+<p><code>git fetch ${repository}</code></p>
+<p>Merge in the given branch to your local branch</p>
+<p><code>git merge some_name/${branch}</code></p>
+<p>Delete the remote:</p>
+<p><code>git remote remove some_name</code></p>
+<p>If the branch doesn't fast-forward merge, you likely want to inform the
+contributor to update their branch to avoid the conflict resolution and merge
+commit. See the <a href="">Git
+for more information on merging. When merging a pull-request, it's best to <strong>not</strong>
+include a signoff on the commit(s) as it changes the final commit ID in the
+Accumulo repository. This also has the negative of not automatically closing
+the Pull-Request when the changes are made public.</p>
+<h3 id="feature-branches">Feature Branches</h3>
+<p>Ease in creating and using feature branches is a desirable merit which Git
+provides with little work. Feature branches are a great way in which developers
+to work on multiple, long-running features concurrently, without worry of
+mixing code ready for public-review and code needing more internal work.
+Additionally, this creates an easily consumable series of commits in which
+other developers can track changes, and see how the feature itself evolved.</p>
+<p>To prevent developers' feature branches from colliding with one another, it was
+suggested to impose a "hierarchy" in which shared feature branches are prefixed
+with <code>&lt;apache_id&gt;/ACCUMULO-&lt;issue#&gt;[-description]</code>.</p>
+<p>Create a branch off of <code>master</code>.</p>
+<p><code>git checkout &lt;apache_id&gt;/ACCUMULO-&lt;issue#&gt;
+<p>Create the feature, commiting early and often to appropriately outline the
+"story" behind the feature and it's implementation.</p>
+<p>As long as you have not collaborating with others, <code>git-rebase</code>
your feature
+branch against upstream changes in <code>master</code></p>
+<p><code>git fetch &amp;&amp; git rebase origin/master</code></p>
+<p>If you are actively collaborating with others, you should be nice and not
+change their history. Use <code>git-merge</code> instead.</p>
+<p><code>git fetch &amp;&amp; git merge origin/master</code></p>
+<p>Continue steps 2 through 4 until the feature is complete.</p>
+<p>Depending on the nature, duration and history of the changes in your feature
+branch, you can choose to:</p>
+<p><strong>'Simple' Merge</strong>: </p>
+<p><code>git checkout master &amp;&amp; git merge &lt;apache_id&gt;/ACCUMULO-&lt;issue#&gt;</code></p>
+<p><strong>Rebase and merge</strong> -- keeps all feature-branch commits
+  co-located: </p>
+<p><code>git fetch &amp;&amp; git rebase origin/master &amp;&amp;
git checkout master &amp;&amp; git merge &lt;apache_id&gt;/ACCUMULO-&lt;issue#&gt;</code></p>
+<p><strong>Merge with squash</strong> -- feature branch history is a mess,
just make one commit
+  with the lump-sum of your feature branch changes: </p>
+<p><code>git checkout master &amp;&amp; git merge --squash &lt;apache_id&gt;/ACCUMULO-&lt;issue#&gt;</code></p>
+<h3 id="changes-which-affect-multiple-versions-aka-merging">Changes which affect multiple
versions (a.k.a. merging)</h3>
+<p>Merging can be a very confusing topic for users switching to Git, but it can be
+summarized fairly easily.</p>
+<p><strong>Precondition</strong>: choose the right branch to start! (lowest,
applicable version
+   for the change)</p>
+<p>Get your changes fixed for that earliest version.</p>
+<p>Switch to the next highest version which future minor versions will be
+   released (non-EOL major release series).</p>
+<p><code>git-merge</code> the branch from #1 into the current.</p>
+<p>In the face of conflicts, use options from <code>git-merge</code> to
help you.</p>
+<li><code>git checkout new-version &amp;&amp; git merge --stat old-version</code></li>
+<li><code>git checkout new-version &amp;&amp; git merge --no-commit old-version</code></li>
+<p>Treat your current branch as the branch from #2, and repeat from #2.</p>
+<p>When merging changes across major releases, there is always the possibility of
+changes which are applicable/necessary in one release, but not in any future
+releases, changes which are different in implementation due to API changes, or
+any number of other cases. Whatever the actual case is, the developer who made
+the first set of changes (you) is the one responsible for performing the merge
+through the rest of the active versions. Even when the merge may results in a
+zero-length change in content, this is incredibly important to record as you
+are the one who knows that this zero-length change in content is correct!</p>
+<h2 id="release-management">Release Management</h2>
+<p>Releases, although not a day to day task, have their own unique steps which are
+to be followed. Releases can be categorized in to minor and major releases.</p>
+<h3 id="a-minor-release">A minor release</h3>
+<p>A minor release is some set of changes <code>z'</code> on top of a version
+Typically, <code>z'</code> is simply <code>z + 1</code>, e.g. given
a release named '1.6.0', and the
+next minor release is '1.6.1'. These changes for <code>z'</code> should not break
+client code which works against <code>z</code> and should absolutely not change
the public
+<p>By convention, the branch containing the changes <code>z'</code> should
be named
+<code>x.y</code> (where the changes for <code>z'</code> are commits
since <code>x.y.z</code>. The steps to take are as follows:</p>
+<li>Prepare the release candidate. <a href="/governance/releasing.html">Release
+   Guide</a>, <a href="/releasing.html">Maven
+   Instructions</a></li>
+<li>Create a branch for the release candidate from the <code>x.y</code>
+   named something like <code>x.y.z'-RCN</code>.</li>
+<li>Test and Vote</li>
+<li>Create a GPG-signed tag with the correct final name: <code>x.y.z'</code></li>
+<li>Push a delete of the remote branch <code>x.y.z'-RCN</code></li>
+<p>This process is not firm and should not be viewed as requirements for making a release.
+The release manager is encouraged to make use branches/tags in whichever way is best.</p>
+<h3 id="a-major-release">A major release</h3>
+<p>A major release is a release in which multiple new features are introduced
+and/or the public API are modified. The major release <code>y'</code>, even when
+client API is not modified, will typically contain many new features and
+functionality above the last release series <code>y</code>. A major release also
+the <code>z</code> value back to <code>0</code>.</p>
+<p>The steps to create a new major release are very similar to a minor release:</p>
+<li>Prepare the release candidate. <em>reference release instructions</em></li>
+<li>Create a tag of the release candidate from the <code>x.y</code> branch,
+   named something like <code>x.y.0-RCN</code>.</li>
+<li>Test and Vote</li>
+<li>Create a GPG-signed tag with the correct final name: <code>x.y.0</code></li>
+<li>Push a delete of the remote branch <code>x.y.0-RCN</code></li>
+<h1 id="the-infrastructure">The infrastructure</h1>
+<p>This section deals with the changes that must be requested through INFRA. As
+with any substantial INFRA request, the VOTE and result from the mailing should
+be referenced so INFRA knows that the request has been acknowledged. Likely, a
+PMC member should be the one to submit the request.</p>
+<h2 id="repositories">Repositories</h2>
+<p>I believe that we will need multiple repositories to best align ourselves with
+how we currently track "Accumulo" projects. The repositories follow:</p>
+<p>The main source tree. This will track the standard trunk, branches, tags
+   structure from Subversion for Apache Accumulo.</p>
+<p>One repository for every project in
+   <a href="">contrib</a>: Accumulo-BSP,
+   Instamo Archetype, and the Wikisearch project. Each of these
+   are considered disjoint from one another, and the main source tree, so they
+   each deserve their own repository.</p>
+<p>Given the list of repositories that currently exist on the <a href="">ASF
+site</a> and a brief search over INFRA
+tickets, multiple repositories for a single Apache project is not an issue.
+Having this list when making the initial ticket will likely reduce the amount
+of work necessary in opening multiple INFRA tickets.</p>
+<h2 id="mirroring">Mirroring</h2>
+<p>It should be noted in the INFRA requst that each repository will also need to
+be configured to properly mirror to the <a href="">ASF Github</a>
+account to provide the same functionality with current have via the git+svn
+mirror. This should be noted in the INFRA request. Same change needs to be
+applied for the <a href="">Apache hosted</a> mirror'ing.</p>
+<h2 id="mailing-lists">Mailing lists</h2>
+<p>It should be noted in the INFRA request that commit messages should be sent to
+<a href=""></a>.
The subject
+can be decided on using the <a href="">provided
+<h1 id="examples">Examples</h1>
+<p>For the sake of clarity, some examples of common situations are included below.</p>
+<h2 id="releasing-160">Releasing 1.6.0</h2>
+<p>Branch from <code>master</code> to <code>1.6</code></p>
+<p><code>git checkout master &amp;&amp; git branch 1.6</code></p>
+<p>Tag <code>1.6.0-RC1</code> from the just created <code>1.6</code>
+<p><code>git tag 1.6.0-RC1 1.6</code></p>
+<p>Test, vote, etc. and tag from 1.6.0-RC1</p>
+<p><code>git -s tag 1.6.0 1.6.0-RC1</code></p>
+<p>Delete the RC tag, if desired.</p>
+<p><code>git tag -d 1.6.0-RC1 &amp;&amp; git push --delete origin 1.6.0-RC1</code></p>
+<p>Ensure <code>master</code> contains all features and fixes from <code>1.6.0</code></p>
+<p><code>git checkout master &amp;&amp; git merge 1.6</code></p>
+<p>Update the project version in <code>master</code> to 1.7.0-SNAPSHOT</p>
+  </div>
+  <div id="footer">
+    <a alt="Apache Software Foundation" href="">
+      <img id="asf-logo" alt="Apache Software Foundation" src="/images/feather-small.gif"
+    </a>
+    <div class="copyright">
+      <p>
+        Copyright &copy; 2011-2014 The Apache Software Foundation, Licensed under
+        the <a href="">Apache License, Version
+        Apache Accumulo, Accumulo, Apache, the Apache feather logo, and the Apache Accumulo
+        project logo are trademarks of the <a href="">Apache Software
Foundation</a>.<br />
+        Site created with <a href="">Bootstrap</a> including
icons from <a href="">GLYPHICONS</a> and <a href="">Font
+      </p>
+    </div> 
+  </div>
+  </div>
+<script type="text/javascript">

View raw message