You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2015/07/10 09:41:27 UTC

[04/15] isis-site git commit: ISIS-1133: contributors guide

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/release-process.html
----------------------------------------------------------------------
diff --git a/content/release-process.html b/content/release-process.html
deleted file mode 100644
index 9d81574..0000000
--- a/content/release-process.html
+++ /dev/null
@@ -1,2249 +0,0 @@
-<!doctype html>
-<html class="no-js" lang="en">
-<head>
-    <meta charset="utf-8"/>
-    <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
-
-    <title>Formal Release Process</title>
-
-    <!--
-        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
-
-        http://www.apache.org/licenses/LICENSE-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.
-    -->
-
-    <!-- No caching headers -->
-    <meta http-equiv="cache-control" content="no-cache" />
-    <meta http-equiv="pragma" content="no-cache" />
-    <meta http-equiv="expires" content="-1" />
-
-
-    <!-- TODO: need to (re)instate CDN in the future (not using for now just so can develop off-line -->
-    <link href="./css/foundation/5.5.1/foundation.css" rel="stylesheet" />
-    <script src="./js/foundation/5.5.1/vendor/modernizr.js"></script>
-    <link href="./css/asciidoctor/colony.css" rel="stylesheet">
-    <link href="./css/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
-
-
-
-
-    <link href="./css/github-fork-ribbon-css/0.1.1/gh-fork-ribbon.css" rel="stylesheet" />
-    <!--[if lt IE 9]>
-      <link href="./css/github-fork-ribbon-css/0.1.1/gh-fork-ribbon.ie.css" rel="stylesheet" />
-    <![endif]-->
-
-
-    <style type="text/css">
-        /* Stylesheet for CodeRay to match GitHub theme | MIT License | http://foundation.zurb.com */
-/*pre.CodeRay {background-color:#f7f7f8;}*/
-.CodeRay .line-numbers{border-right:1px solid #d8d8d8;padding:0 0.5em 0 .25em}
-.CodeRay span.line-numbers{display:inline-block;margin-right:.5em;color:rgba(0,0,0,.3)}
-.CodeRay .line-numbers strong{font-weight: normal}
-table.CodeRay{border-collapse:separate;border-spacing:0;margin-bottom:0;border:0;background:none}
-table.CodeRay td{vertical-align: top}
-table.CodeRay td.line-numbers{text-align:right}
-table.CodeRay td.line-numbers>pre{padding:0;color:rgba(0,0,0,.3)}
-table.CodeRay td.code{padding:0 0 0 .5em}
-table.CodeRay td.code>pre{padding:0}
-.CodeRay .debug{color:#fff !important;background:#000080 !important}
-.CodeRay .annotation{color:#007}
-.CodeRay .attribute-name{color:#000080}
-.CodeRay .attribute-value{color:#700}
-.CodeRay .binary{color:#509}
-.CodeRay .comment{color:#998;font-style:italic}
-.CodeRay .char{color:#04d}
-.CodeRay .char .content{color:#04d}
-.CodeRay .char .delimiter{color:#039}
-.CodeRay .class{color:#458;font-weight:bold}
-.CodeRay .complex{color:#a08}
-.CodeRay .constant,.CodeRay .predefined-constant{color:#008080}
-.CodeRay .color{color:#099}
-.CodeRay .class-variable{color:#369}
-.CodeRay .decorator{color:#b0b}
-.CodeRay .definition{color:#099}
-.CodeRay .delimiter{color:#000}
-.CodeRay .doc{color:#970}
-.CodeRay .doctype{color:#34b}
-.CodeRay .doc-string{color:#d42}
-.CodeRay .escape{color:#666}
-.CodeRay .entity{color:#800}
-.CodeRay .error{color:#808}
-.CodeRay .exception{color:inherit}
-.CodeRay .filename{color:#099}
-.CodeRay .function{color:#900;font-weight:bold}
-.CodeRay .global-variable{color:#008080}
-.CodeRay .hex{color:#058}
-.CodeRay .integer,.CodeRay .float{color:#099}
-.CodeRay .include{color:#555}
-.CodeRay .inline{color:#00}
-.CodeRay .inline .inline{background:#ccc}
-.CodeRay .inline .inline .inline{background:#bbb}
-.CodeRay .inline .inline-delimiter{color:#d14}
-.CodeRay .inline-delimiter{color:#d14}
-.CodeRay .important{color:#555;font-weight:bold}
-.CodeRay .interpreted{color:#b2b}
-.CodeRay .instance-variable{color:#008080}
-.CodeRay .label{color:#970}
-.CodeRay .local-variable{color:#963}
-.CodeRay .octal{color:#40e}
-.CodeRay .predefined{color:#369}
-.CodeRay .preprocessor{color:#579}
-.CodeRay .pseudo-class{color:#555}
-.CodeRay .directive{font-weight:bold}
-.CodeRay .type{font-weight:bold}
-.CodeRay .predefined-type{color:inherit}
-.CodeRay .reserved,.CodeRay .keyword {color:#000;font-weight:bold}
-.CodeRay .key{color:#808}
-.CodeRay .key .delimiter{color:#606}
-.CodeRay .key .char{color:#80f}
-.CodeRay .value{color:#088}
-.CodeRay .regexp .delimiter{color:#808}
-.CodeRay .regexp .content{color:#808}
-.CodeRay .regexp .modifier{color:#808}
-.CodeRay .regexp .char{color:#d14}
-.CodeRay .regexp .function{color:#404;font-weight:bold}
-.CodeRay .string{color:#d20}
-.CodeRay .string .string .string{background:#ffd0d0}
-.CodeRay .string .content{color:#d14}
-.CodeRay .string .char{color:#d14}
-.CodeRay .string .delimiter{color:#d14}
-.CodeRay .shell{color:#d14}
-.CodeRay .shell .delimiter{color:#d14}
-.CodeRay .symbol{color:#990073}
-.CodeRay .symbol .content{color:#a60}
-.CodeRay .symbol .delimiter{color:#630}
-.CodeRay .tag{color:#008080}
-.CodeRay .tag-special{color:#d70}
-.CodeRay .variable{color:#036}
-.CodeRay .insert{background:#afa}
-.CodeRay .delete{background:#faa}
-.CodeRay .change{color:#aaf;background:#007}
-.CodeRay .head{color:#f8f;background:#505}
-.CodeRay .insert .insert{color:#080}
-.CodeRay .delete .delete{color:#800}
-.CodeRay .change .change{color:#66f}
-.CodeRay .head .head{color:#f4f}
-
-        pre.CodeRay code {
-            background-color: inherit;
-            border-style: none;
-        }
-
-        pre.CodeRay code > span:first-child {
-            margin-left: -5px;
-        }
-
-        .literalblock pre,
-        .listingblock pre:not(.highlight),
-        .listingblock pre[class="highlight"],
-        .listingblock pre[class^="highlight "],
-        .listingblock pre.CodeRay,
-        .listingblock pre.prettyprint {
-            background: rgb(253, 250, 246);
-         }
-        .sidebarblock .literalblock pre,
-        .sidebarblock .listingblock pre:not(.highlight),
-        .sidebarblock .listingblock pre[class="highlight"],
-        .sidebarblock .listingblock pre[class^="highlight "],
-        .sidebarblock .listingblock pre.CodeRay,
-        .sidebarblock .listingblock pre.prettyprint {
-            background: rgb(253, 250, 246);
-         }
-
-    <style>
-
-    <style>
-    .github-fork-ribbon-wrapper.right {
-        position: fixed;
-    }
-    .github-fork-ribbon {
-        background: #090;
-    }
-    .github-fork-ribbon a:hover {
-        background:#0D0;
-        color:#fff;
-        font-size: 1.1em;
-    }
-    </style>
-
-    <style>
-        @media only screen and (min-width: 40.063em) {
-          .top-bar {
-            .contain-to-grid .top-bar {
-                max-width: 80rem;
-            }
-          }
-        }
-        .row {
-            max-width: 80rem;
-        }
-    </style>
-
-    <style>
-        .extended-quote,
-        .extended-quote-first {
-            margin-left: 40px;
-            margin-right: 40px;
-            font-style: italic;
-        }
-        .extended-quote-attribution {
-            text-align: right;
-            margin-right: 100px;
-            color: #10B061;
-        }
-
-        .extended-quote-first:before {
-            content: "\201c";
-            float: left;
-            font-size: 2.75em;
-            font-weight: bold;
-            line-height: 0.6em;
-            margin-left: -0.6em;
-            color: #003b6b;
-            text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
-        }
-    </style>
-
-    <style>
-        body {
-          position: relative;
-        }
-
-        *:not(pre) a > code {
-            color: #210DDC;
-        }
-
-        *:not(pre) > code {
-            background-color: inherit;
-            border: none;
-            font-weight: normal;
-        }
-
-        body div#toc li,
-        body div#toc2 li {
-            list-style-type: none;
-        }
-
-        div#doc-content {
-            margin-top: 30px;
-        }
-
-        body div#toc li.active-region:before,
-        body div#toc2 li.active-region:before {
-            content: "\00BB \0020";
-            margin-left: -12px;
-        }
-
-        body div#toc li a.active,
-        body div#toc2 li a.active {
-            color: red;
-        }
-
-        body div#toc.toc,
-        body div#toc.toc2 {
-            position: fixed;
-            left: auto;
-            padding-top: 60px;
-            z-index: auto;
-            background-color: white;
-            border-left-color: #eee;
-            border-left-style: solid;
-            border-right: none;
-            min-height: 2000px;
-        }
-
-    </style>
-
-    <style>
-
-        @media only screen and (min-width: 768px) {
-          #toc.toc2 ul ul { margin-left: -10px; }
-        }
-
-
-        body div#toc .tocify-subheader ul {
-            margin-bottom: 0px;
-        }
-
-        body div#toc .tocify-subheader li {
-            font-size: 14px;
-        }
-        .tocify li.tocify-item, .tocify ul.tocify-item {
-            line-height: 24px;
-        }
-
-        body div#toc li.tocify-item.active:before,
-        body div#toc2 li.tocify-item.active:before {
-            content: "\00BB \0020";
-            margin-left: -12px;
-        }
-
-        body div#toc li.tocify-item.active a,
-        body div#toc2 li.tocify-item.active a {
-            color: red;
-        }
-    </style>
-
-    <style>
-        footer {
-            margin-top: 1000px;
-        }
-    </style>
-
-    <style>
-        /* overriding colony.css stylesheet */
-        .literalblock pre, .literalblock pre[class], .listingblock pre, .listingblock pre[class] {
-           /*padding: 1.25em 1.5625em 1.125em 1.5625em;*/
-           padding: 0.3em 0.6em 0.25em 0.6em;
-        }
-        @media only screen and (min-width: 1280px)
-        #toc.toc2 {
-          /*width: 20em;*/
-          width: 25em;
-        }
-
-        #doc-content a {
-          color: #210DDC;
-        }
-
-        .top-bar h1 {
-            border-bottom: inherit;
-        }
-
-        h2 {
-          margin-top: 80px;
-        }
-        h3 {
-          margin-top: 40px;
-        }
-        h4,h5 {
-          margin-top: 30px;
-        }
-
-        .admonitionblock.tip > table td.content {
-            color: #10B061;
-        }
-        .admonitionblock.note > table td.content {
-            color: #B509AB;
-        }
-        .admonitionblock.important > table td.content {
-            color: #D5810A;
-        }
-
-        .admonitionblock .title {
-            font-size: larger;
-            font-style: italic;
-        }
-
-        .imageblock img {
-            margin-bottom: 10px;
-        }
-    </style>
-
-    <style>
-        /* from http://ben.balter.com/2014/03/13/pages-anchor-links/ */
-        .header-link {
-          position: absolute;
-          left: -0.5em;
-          opacity: 0;
-
-          /*
-          -webkit-transition: opacity 0.2s ease-in-out 0.1s;
-          -moz-transition: opacity 0.2s ease-in-out 0.1s;
-          -ms-transition: opacity 0.2s ease-in-out 0.1s;
-          */
-        }
-
-        h2:hover .header-link,
-        h3:hover .header-link,
-        h4:hover .header-link,
-        h5:hover .header-link,
-        h6:hover .header-link {
-          opacity: 1;
-        }
-    </style>
-
-    <style>
-        .top-bar
-        {
-            -webkit-transition-duration: .5s;
-            transition-duration: .5s;
-
-            -webkit-transition-timing-function: cubic-bezier( 0.215, 0.610, 0.355, 1.000 );
-            transition-timing-function: cubic-bezier( 0.215, 0.610, 0.355, 1.000 );
-
-            -webkit-transition-property: -webkit-transform;
-            transition-property: transform;
-        }
-
-        /*
-        http://osvaldas.info/auto-hide-sticky-header
-        MIT license
-        */
-        .header--hidden
-        {
-            -webkit-transform: translateY( -100% );
-            -ms-transform: translateY( -100% );
-            transform: translateY( -100% );
-
-            transition-duration: .5s;
-            transition-timing-function: cubic-bezier( 0.215, 0.610, 0.355, 1.000 );
-            -webkit-transition-property: -webkit-transform;
-            transition-property: transform;
-        }
-    </style>
-
-    <style>
-        #doc-content a.guide {
-            color: white;
-        }
-    </style>
-
-    <style>
-        .tocify {
-            margin-top: 80px;
-        }
-    </style>
-
-
-</script>
-
-</head>
-<body>
-
-<<div class="github-fork-ribbon-wrapper right" style="position: fixed;">
-    <div class="github-fork-ribbon">
-        <a href="https://github.com/apache/isis/fork">Fork me on GitHub</a>
-    </div>
-</div>
-
-
-<div class="row">
-
-    <div class="fixed contain-to-grid header">
-        <nav class="top-bar" data-topbar role="navigation" style="max-width: 80rem">
-            <ul class="title-area">
-                <li class="name">
-                    <h1>
-                        <a href="/index.html">Apache Isis&trade;</a>
-                    </h1>
-                </li>
-                <!-- Remove the class "menu-icon" to get rid of menu icon. Take out "Menu" to just have icon alone -->
-                <li class="toggle-topbar menu-icon"><a href="#"><span>Menu</span></a></li>
-            </ul>
-
-            <section class="top-bar-section">
-                <ul class="right">
-
-                    <li class="has-form">
-                       <FORM class="searchbox navbar-form navbar-right" id="searchbox_012614087480249044419:dn-q5gtwxya" action="http://www.google.com/cse">
-                        <div class="row collapse">
-                            <input type="hidden" name="cx" value="012614087480249044419:dn-q5gtwxya">
-                            <INPUT type="hidden" name="cof" value="FORID:0">
-                            <INPUT class="form-control" name="q" type="text" placeholder="Search">
-                        </div>
-                    </FORM>
-                     </li>
-
-                </ul>
-
-                <!-- Left Nav Section -->
-                <ul class="left">
-
-                    <li><a href="/documentation.html">Documentation</a></li>
-                    <li><a href="/downloads.html">Downloads</a></li>
-                    <li><a href="/help.html">Help</a></li>
-                    <li><a href="/asf.html">@ASF</a></li>
-
-                </ul>
-
-            </section>
-        </nav>
-    </div>
-</div>
-
-<div class="row">
-
-    <div id="doc-content-left" class="large-9 medium-9 columns">
-
-
-        <div id="doc-content">
-          <div id="preamble">
-<div class="sectionbody">
-<div class="paragraph">
-<p><br/><br/></p>
-</div>
-<div class="paragraph">
-<p>This page details the process for formally releasing Isis modules.</p>
-</div>
-<div class="paragraph">
-<p>If you&#8217;ve done this before and just want the bare essentials, see this <a href="release-process-one-pager.html">one-pager</a>
-(that also parameterizes some of the steps listed here 'long-hand'. There is also an experimental
-<a href="resources/release.sh">script</a> for automating the latter part of the process.</p>
-</div>
-<div class="paragraph">
-<p>See also the <a href="release-checklist.html">release checklist</a> for keeping track of where you are while releasing (possibly multiple) components.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_intro">Intro</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Apache Isis consists of two separately releasable modules. Relative to the root of the
-<a href="https://git-wip-us.apache.org/repos/asf/isis/repo?p=isis.git;a=tree">source code repo</a>, these are:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><code>core</code></p>
-</li>
-<li>
-<p><code>component/example/archetypes/simpleapp</code></p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Previously there were many other components, but these have either been mothballed or moved into core. The only
-remaining component that is not in core (though has not yet been released) is <code>component/viewer/scimpi</code>. There is
-currently no plan to release this component.</p>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_process_prerequisites">Process Prerequisites</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Before releasing <code>core</code>, ensure there is consensus on the <a href="../support.html">dev mailing list</a> that this is the right
-time for a release. The discussion should include confirming the version number to be used, and to confirm content.</p>
-</div>
-<div class="paragraph">
-<p>Once agreed, the formal release can begin. The steps are:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>create a branch locally in which to prepare the release</p>
-</li>
-<li>
-<p>use <code>mvn release:prepare</code> to generate the signed artifacts and create a tag in the source code control system</p>
-</li>
-<li>
-<p>use <code>mvn release:perform</code> to upload the signed artifacts to the Apache staging repository</p>
-</li>
-<li>
-<p>vote on the staged artifacts (in particular, the signed source release ZIP from which the remaining artifacts are derivable)</p>
-</li>
-<li>
-<p>on a successful vote:</p>
-</li>
-<li>
-<p>promote the staged artifacts</p>
-</li>
-<li>
-<p>distribute the source zip</p>
-</li>
-<li>
-<p>merge in the branch back to into master</p>
-</li>
-<li>
-<p>on a failed vote:</p>
-</li>
-<li>
-<p>drop the staging repository</p>
-</li>
-<li>
-<p>delete the branch and tag</p>
-</li>
-<li>
-<p>fix the problems and go round round the loop again.</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Before any of this can happen, there are a number of prerequisites, in terms of (a) the codebase itself,
-(b) the community process, and (c) the committer acting as release manager and performing the release.</p>
-</div>
-<div class="sect2">
-<h3 id="_set_up_local_environment">Set up local environment</h3>
-<div class="sect3">
-<h4 id="_public_private_key">Public/private key</h4>
-<div class="paragraph">
-<p>The most important configuration you require is to set up public/private key pair. This is used by the <code>maven-release-plugin</code> to sign the code artifacts. See the page on <a href="key-generation.html">key generation</a> for more details.</p>
-</div>
-<div class="paragraph">
-<p>In order to prepare the release, you&#8217;ll (need to) have a <code>~/.gnupg</code> directory with the relevant files (<code>gpg.conf</code>, <code>pubring.gpg</code>, <code>secring.gpg</code> etc), and have <code>gpg</code> on your operating system PATH.</p>
-</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>If on Windows, the equivalent directory is <code>c:\users\xxx\appdata\roaming\gnupg</code>. For <code>gpg</code>, use either <a href="http://cygwin.com">cygwin.com</a> or <a href="http://www.gpg4win.org">gpg4win.org</a>. Note also that the mSysGit version of <code>gpg</code> (as provided by GitHub&#8217;s bash client) is not compatible with that provided by cygwin; move it to one side and check that <code>gpg.exe</code> being used is that from gpg4win.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_maven_code_settings_xml_code">Maven <code>settings.xml</code></h4>
-<div class="paragraph">
-<p>During the release process the <code>maven-deploy-plugin</code> uploads the generated artifacts to a staging repo on the <a href="http://repository.apache.org">Apache repository manager</a>. This requires your Apache LDAP credentials to be specified in your <code>~/.m2/settings.xml</code> file:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;settings&gt;</span>
-  <span class="tag">&lt;servers&gt;</span>
-    <span class="tag">&lt;server&gt;</span>
-      <span class="tag">&lt;id&gt;</span>apache.releases.https<span class="tag">&lt;/id&gt;</span>
-      <span class="tag">&lt;username&gt;</span>xxxxxxx<span class="tag">&lt;/username&gt;</span>
-      <span class="tag">&lt;password&gt;</span>yyyyyyy<span class="tag">&lt;/password&gt;</span>
-    <span class="tag">&lt;/server&gt;</span>
-    ...
-  <span class="tag">&lt;/servers&gt;</span>
-  ...
-<span class="tag">&lt;/settings&gt;</span></code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>where <code>xxxxxxx</code> and <code>yyyyyyy</code> are your Apache LDAP username and password. For more information, see these <a href="http://www.apache.org/dev/publishing-maven-artifacts.html#dev-env">ASF docs</a>.</p>
-</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>It is also possible to configure to use <code>.ssh</code> secure keys, and thereby avoid hardcoding your Apache LDAP password into your <code>.m2/settings.xml</code> file. A description of how to do this can be found, for example, <a href="http://bval.apache.org/release-setup.html">here</a>.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>Also, set up keyphrase for <code>gpg</code>; this avoids being prompted during release:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;profiles&gt;</span>
-  <span class="tag">&lt;profile&gt;</span>
-    <span class="tag">&lt;id&gt;</span>gpg<span class="tag">&lt;/id&gt;</span>
-    <span class="tag">&lt;properties&gt;</span>
-      <span class="tag">&lt;gpg.executable&gt;</span>gpg2<span class="tag">&lt;/gpg.executable&gt;</span>
-      <span class="tag">&lt;gpg.passphrase&gt;</span>this is not really my passphrase<span class="tag">&lt;/gpg.passphrase&gt;</span>
-    <span class="tag">&lt;/properties&gt;</span>
-  <span class="tag">&lt;/profile&gt;</span>
-  ...
-<span class="tag">&lt;/profiles&gt;</span>
-
-<span class="tag">&lt;activeProfiles&gt;</span>
-  <span class="tag">&lt;activeProfile&gt;</span>gpg<span class="tag">&lt;/activeProfile&gt;</span>
-  ...
-<span class="tag">&lt;/activeProfiles&gt;</span></code></pre>
-</div>
-</div>
-</div>
-<div class="sect3">
-<h4 id="_pull_down_code_to_release">Pull down code to release</h4>
-<div class="paragraph">
-<p>Set the HEAD of your local git repo to the commit to be released. In many cases this will be the tip of the origin&#8217;s <code>master</code> branch:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git checkout master
-git pull --ff-only</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Then, determine/confirm the version number of the module being released. This should be in line with our <a href="versioning-policy.html">semantic versioning policy</a>.</p>
-</div>
-<div class="paragraph">
-<p>Next, create a release branch in your local Git repo, using the version number determined and as per <a href="release-branch-and-tag-names.html">these standards</a>. For example, to prepare release candidate #1 for a release 1.9.0 of <code>core</code>, use:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git checkout -b isis-1.9.0</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>All release preparation is done locally; if we are successful, this branch will be pushed back to master.</p>
-</div>
-<div class="paragraph">
-<p>Finally, make sure you have a JIRA ticket open against which to perform all commits.</p>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_set_environment_variables">Set Environment Variables</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>If you are releasing <code>core</code>:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">cd core
-
-export ISISTMP=/c/tmp              # or whatever
-export ISISART=isis
-export ISISDEV=1.10.0-SNAPSHOT
-export ISISREL=1.9.0
-export ISISRC=RC1
-
-export ISISCOR=&quot;Y&quot;
-env | grep ISIS | sort</code></pre>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_code_prerequisites">Code Prerequisites</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>{note
-Unless otherwise stated, you should assume that all remaining steps should be performed in the base directory of the module being released.
-}</p>
-</div>
-<div class="paragraph">
-<p>Before making any formal release, there are a number of prerequisites that should always be checked.</p>
-</div>
-<div class="sect2">
-<h3 id="_update_the_version_number">Update the version number</h3>
-<div class="paragraph">
-<p>The version number of the parent pom should reflect the branch name that you are now on (with a <code>-SNAPSHOT</code> suffix). In many cases this will have been done already during earlier development; but confirm that it has been updated. If it has not, make the change.</p>
-</div>
-<div class="paragraph">
-<p>For example, if releasing <code>core</code> version <code>1.9.0</code>, the POM should read:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;groupId&gt;</span>org.apache.isis.core<span class="tag">&lt;/groupId&gt;</span>
-<span class="tag">&lt;artifactId&gt;</span>isis<span class="tag">&lt;/artifactId&gt;</span>
-<span class="tag">&lt;version&gt;</span>1.9.0<span class="tag">&lt;/version&gt;</span></code></pre>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_update_parent_apache_isis_core">Update parent (Apache Isis Core)</h3>
-<div class="paragraph">
-<p>If releasing Apache Isis Core, check (via <a href="http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.apache%22%20a%3A%22apache%22">search.maven.org</a>) whether there is a newer version of the Apache parent <code>org.apache:apache</code>.</p>
-</div>
-<div class="paragraph">
-<p>If there is, update the <code>&lt;version&gt;</code> in the <code>&lt;parent&gt;</code> element in the parent POM to match the newer version:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="xml"><span class="tag">&lt;parent&gt;</span>
-    <span class="tag">&lt;groupId&gt;</span>org.apache<span class="tag">&lt;/groupId&gt;</span>
-    <span class="tag">&lt;artifactId&gt;</span>apache<span class="tag">&lt;/artifactId&gt;</span>
-    <span class="tag">&lt;version&gt;</span>NN<span class="tag">&lt;/version&gt;</span>
-    <span class="tag">&lt;relativePath</span> <span class="tag">/&gt;</span>
-<span class="tag">&lt;/parent&gt;</span></code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>where <code>NN</code> is the updated version number.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_check_no_snapshot_dependencies">Check no SNAPSHOT dependencies</h3>
-<div class="paragraph">
-<p>There should be no snapshot dependencies; the only mention of <code>SNAPSHOT</code> should be for the Isis modules about to be released.</p>
-</div>
-<div class="paragraph">
-<p>As a quick check, do a grep for <code>SNAPSHOT</code>:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">grep SNAPSHOT `/bin/find . -name pom.xml | grep -v target | sort`</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Or, for a more thorough check, load up each <code>pom.xml</code> and inspect manually:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">vi `/bin/find . -name pom.xml | grep -v target | sort`</code></pre>
-</div>
-</div>
-<div class="olist lowerroman">
-<ol class="lowerroman" type="i">
-<li>
-<p>and search for <code>SNAPSHOT</code>.</p>
-</li>
-</ol>
-</div>
-<div class="admonitionblock tip">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-tip" title="Tip"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Obviously, don&#8217;t update Apache Isis' <code>SNAPSHOT</code> references; these get updated by the <code>mvn release:prepare</code> command we run later.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_update_plugin_versions">Update plugin versions</h3>
-<div class="paragraph">
-<p>The <code>maven-versions-plugin</code> should be used to determine if there are newer versions of any of the plugins used to build Apache Isis. Since this goes off to the internet, it may take a minute or two to run:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn versions:display-plugin-updates &gt; /tmp/foo
-grep &quot;\-&gt;&quot; /tmp/foo | /bin/sort -u</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Review the generated output and make updates as you see fit. (However, if updating, please check by searching for known issues with newer versions).</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_update_dependency_versions">Update dependency versions</h3>
-<div class="paragraph">
-<p>The <code>maven-versions-plugin</code> should be used to determine if there are newer versions of any of Isis' dependencies. Since this goes off to the internet, it may take a minute or two to run:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn versions:display-dependency-updates &gt; /tmp/foo
-grep &quot;\-&gt;&quot; /tmp/foo | /bin/sort -u</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Update any of the dependencies that are out-of-date. That said, do note that some dependencies may show up with a new dependency, when in fact the dependency is for an old, badly named version. Also, there may be new dependencies that you do not wish to move to, eg release candidates or milestones.</p>
-</div>
-<div class="paragraph">
-<p>For example, here is a report showing both of these cases:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">[INFO]   asm:asm ..................................... 3.3.1 -&gt; 20041228.180559
-[INFO]   commons-httpclient:commons-httpclient .......... 3.1 -&gt; 3.1-jbossorg-1
-[INFO]   commons-logging:commons-logging ......... 1.1.1 -&gt; 99.0-does-not-exist
-[INFO]   dom4j:dom4j ................................. 1.6.1 -&gt; 20040902.021138
-[INFO]   org.datanucleus:datanucleus-api-jdo ................ 3.1.2 -&gt; 3.2.0-m1
-[INFO]   org.datanucleus:datanucleus-core ................... 3.1.2 -&gt; 3.2.0-m1
-[INFO]   org.datanucleus:datanucleus-jodatime ............... 3.1.1 -&gt; 3.2.0-m1
-[INFO]   org.datanucleus:datanucleus-rdbms .................. 3.1.2 -&gt; 3.2.0-m1
-[INFO]   org.easymock:easymock ................................... 2.5.2 -&gt; 3.1
-[INFO]   org.jboss.resteasy:resteasy-jaxrs ............. 2.3.1.GA -&gt; 3.0-beta-1</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>For these artifacts you will need to search <a href="http://search.maven.org">Maven central repo</a> directly yourself to confirm there are no newer dependencies not shown in this list.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_code_cleanup_formatting">Code cleanup / formatting</h3>
-<div class="paragraph">
-<p>Make sure that all source code has been cleaned up and formatted according to the Apache Isis and ASF conventions. Use <a href="resources/Apache-code-style-formatting.xml">this</a> Eclipse template and <a href="resources/isis.importorder">this</a> import order.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_license_header_notices_rat_tool">License header notices (RAT tool)</h3>
-<div class="paragraph">
-<p>The Apache Release Audit Tool <code>RAT</code> (from the <a href="http://creadur.apache.org">Apache Creadur</a> project) checks for missing license header files. The parent <code>pom.xml</code> of each releasable module specifies the RAT Maven plugin, with a number of custom exclusions.</p>
-</div>
-<div class="paragraph">
-<p>To run the RAT tool, use:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn org.apache.rat:apache-rat-plugin:check -D rat.numUnapprovedLicenses=50 -o</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>where <code>rat.numUnapprovedLicenses</code> property is set to a high figure, temporarily overriding the default value of 0. This will allow the command to run over all submodules, rather than failing after the first one.</p>
-</div>
-<div class="admonitionblock warning">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-warning" title="Warning"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Do <em>not</em> use <code>mvn rat:check</code>; depending on your local Maven configuratoin this may bring down the obsolete <code>mvn-rat-plugin</code> from the Codehaus repo.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-<div class="paragraph">
-<p>All being well the command should complete. For each failing submodule, it will have written out a <code>target\rat.txt</code>; missing license notes are indicated using the key <code>!???</code>. You can collate these together using something like:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">for a in `/bin/find . -name rat.txt -print`; do grep '!???' $a; done</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Investigate and fix any reported violations, typically by either:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>adding genuinely missing license headers from Java (or other) source files, or</p>
-</li>
-<li>
-<p>updating the <code>&lt;excludes&gt;</code> element for the <code>apache-rat-plugin</code> plugin to ignore test files, log files and any other non-source code files</p>
-</li>
-<li>
-<p>also look to remove any stale <code>&lt;exclude&gt;</code> entries</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>To add missing headers, you can if you wish use the groovy script <code>addmissinglicenses.groovy</code> (in the <code>scripts</code> directory) to automatically insert missing headers for certain file types. The actual files checked are those with extensions specified in the line <code>def fileEndings = [&quot;.java&quot;, &quot;.htm&quot;]</code>:</p>
-</div>
-<div class="paragraph">
-<p>Run this in dry run mode first (shown here relative to the <code>core</code> module):</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">groovy ../scripts/addmissinglicenses.groovy</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>When happy, perform the updates by specifying the <code>-x</code> (execute) flag:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">groovy addmissinglicenses.groovy -x</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Once you&#8217;ve fixed all issues, confirm once more that <code>apache-rat-plugin</code> no longer reports any license violations, this time leaving the <code>rat.numUnapprovedLicenses</code> property to its default, 0:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn org.apache.rat:apache-rat-plugin:check -D rat.numUnapprovedLicenses=0 -o
-for a in `find . -name rat.txt -print`; do grep '!???' $a; done</code></pre>
-</div>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_missing_license_check">Missing License Check</h3>
-<div class="paragraph">
-<p>Although Apache Isis has no dependencies on artifacts with incompatible licenses, the POMs for some of these dependencies (in the Maven central repo) do not necessarily contain the required license information. Without appropriate additional configuration, this would result in the generated <code>DEPENDENCIES</code> file and generated Maven site indicating dependencies as having "unknown" licenses.</p>
-</div>
-<div class="paragraph">
-<p>Fortunately, Maven allows the missing information to be provided by configuring the <code>maven-remote-resources-plugin</code>. This is stored in the <code>src/main/appended-resources/supplemental-models.xml</code> file, relative to the root of each releasable module.</p>
-</div>
-<div class="paragraph">
-<p>To capture the missing license information, use:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn license:download-licenses</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>This Maven plugin creates a <code>license.xml</code> file in the <code>target/generated-resources</code> directory of each module.</p>
-</div>
-<div class="paragraph">
-<p>Then, run the following script (shown here relative to the <code>core</code> module).</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">groovy ../scripts/checkmissinglicenses.groovy</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>This searches for all <code>licenses.xml</code> files, and compares them against the contents of the <code>supplemental-models.xml</code> file. For example, the output could be something like:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">licenses to add to supplemental-models.xml:
-
-[org.slf4j, slf4j-api, 1.5.7]
-[org.codehaus.groovy, groovy-all, 1.7.2]
-
-licenses to remove from supplemental-models.xml (are spurious):
-
-[org.slf4j, slf4j-api, 1.5.2]</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>If any missing entries are listed or are spurious, then update <code>supplemental-models.xml</code> and try again.</p>
-</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Ignore any missing license warnings for the TCK modules; this is a result of the TCK modules for the viewers (eg <code>isis-viewer-bdd-concordion-tck</code>) depending on the TCK dom, fixtures etc.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_sanity_check">Sanity check</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Before you cut the release, perform one last sanity check on the codebase.</p>
-</div>
-<div class="sect2">
-<h3 id="_sanity_check_for_code_core_code">Sanity check for <code>core</code></h3>
-<div class="paragraph">
-<p>First, check that there are <em>NO SNAPSHOT</em> dependencies in any of the <code>pom.xml</code> of the modules of the core.</p>
-</div>
-<div class="paragraph">
-<p>Next, delete all Isis artifacts from your local Maven repo:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">rm -rf ~/.m2/repository/org/apache/isis</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Next, check that <code>core</code> builds independently, using the <code>-o</code> offline flag:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn clean install -o</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Confirm that the versions of the Isis artifacts now cached in your local repository are correct.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_sanity_check_for_non_code_core_code_components">Sanity check for non-<code>core</code> components</h3>
-<div class="paragraph">
-<p>You should already have changed the parent POM of the releasable module to reference a released version of <code>org.apache.isis.core:isis</code>. Now, also check that there are remaining <em>NO SNAPSHOT</em> dependencies in any of the <code>pom.xml</code> of the modules of the component.</p>
-</div>
-<div class="paragraph">
-<p>Next, delete all Isis artifacts from your local Maven repo:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">rm -rf ~/.m2/repository/org/apache/isis</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Next, build the component, though without the offline flag. Maven should pull down the component&#8217;s dependencies from the Maven central repo, including the non-spshot of Apache Isis core:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn clean install</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Confirm that the versions of the Isis artifacts now cached in your local repository are correct (both those pulled down from Maven central repo, as well as those of the component built locally). The versions of <code>core</code> should not be a SNAPSHOT.</p>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_commit_changes">Commit changes</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Before going any further, remember to commit any changes from the preceding steps:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git commit -am &quot;ISIS-nnn: updates to pom.xml etc for release&quot;</code></pre>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_preparing_a_release_code_mvn_release_prepare_code">Preparing a Release (<code>mvn release:prepare</code>)</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Most of the work is done using the <code>mvn release:prepare</code> goal. Since this makes a lot of changes, we run it first in "dry run" mode; only if that works do we run the goal for real.</p>
-</div>
-<div class="sect2">
-<h3 id="_dry_run">Dry-run</h3>
-<div class="paragraph">
-<p>Run the dry-run as follows:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn release:prepare -P apache-release -D dryRun=true \
-    -DreleaseVersion=$ISISREL \
-    -Dtag=$ISISART-$ISISREL \
-    -DdevelopmentVersion=$ISISDEV</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>where:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p><code>releaseVersion</code> just strip off the <code>-SNAPSHOT</code> suffix:</p>
-</li>
-<li>
-<p><code>tag</code> should follow our <a href="release-branch-and-tag-names.html">standard</a> (concatenation of the <code>artifactId</code> and the version entered above <em>without a <code>-RCn</code> suffix</em>)</p>
-</li>
-<li>
-<p><code>developmentVersion</code> should increment as required, and have <code>-SNAPSHOT</code> appended.</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>This is not quite fully automated; you may be prompted for the gpg passphrase. (Experiments in using <code>--batch-mode -Dgpg.passphrase=&quot;&#8230;&#8203;&quot;</code> to fully automate this didn&#8217;t work; for more info, see <a href="http://maven.apache.org/plugins/maven-gpg-plugin/sign-mojo.html">here</a> (maven release plugin docs) and <a href="http://maven.apache.org/maven-release/maven-release-plugin/examples/non-interactive-release.html">here</a> (maven gpg plugin docs).</p>
-</div>
-<div class="paragraph">
-<p>Or, if you want to be prompted for the versions, you can omit the properties, eg:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn release:prepare -P apache-release -D dryRun=true</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Some modules might have additional profiles to be activated. For example, the (now mothballed) SQL ObjectStore required <code>-P apache-release,integration-tests</code> so that its integration tests are also run.</p>
-</div>
-<div class="paragraph">
-<p>This should generate something like:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">$ mvn release:prepare -P apache-release -D dryRun=true
-[INFO] Scanning for projects...
-[INFO] ------------------------------------------------------------------------
-[INFO] Reactor Build Order:
-[INFO]
-[INFO] Apache Isis Core
-[INFO] Apache Isis Core AppLib
-[INFO] Apache Isis Core Unit Test Support
-[INFO] Apache Isis Core MetaModel
-[INFO] Apache Isis Core Runtime
-[INFO] Apache Isis Core WebServer
-       ...
-[INFO] Apache Isis Core Integration Testing Support
-[INFO]
-[INFO] ------------------------------------------------------------------------
-[INFO] Building Apache Isis Core 1.9.0
-[INFO] ------------------------------------------------------------------------
-[INFO]
-[INFO] --- maven-release-plugin:2.3.2:prepare (default-cli) @ isis ---
-[INFO] Resuming release from phase 'map-release-versions'
-What is the release version for &quot;Apache Isis Core&quot;? (org.apache.isis.core:isis)
-1.9.0: :</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>If you didn&#8217;t provide the <code>releaseVersion</code>, <code>tag</code> and <code>developmentVersion</code> tags, then you&#8217;ll be prompted for them. You can generally accept the defaults that Maven offers.</p>
-</div>
-<div class="paragraph">
-<p>Assuming this completes successfully, re-run the command, but without the <code>dryRun</code> flag and specifying <code>resume=false</code> (to ignore the generated <code>release.properties</code> file that gets generated as a side-effect of using <code>git</code>). You can also set the <code>skipTests</code> flag since they would have been run during the previous dry run:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn release:prepare -P apache-release -D resume=false -DskipTests=true
-        -DreleaseVersion=$ISISREL \
-        -Dtag=$ISISART-$ISISREL \
-        -DdevelopmentVersion=$ISISDEV</code></pre>
-</div>
-</div>
-<div class="admonitionblock tip">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-tip" title="Tip"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>If any issues here, then explicitly delete the generated <code>release.properties</code> file first.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_post_prepare_sanity_check">Post-prepare sanity check</h3>
-<div class="paragraph">
-<p>You should end up with artifacts in your local repo with the new version <code>1.9.0</code>. There are then a couple of sanity checks that you can perform:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>unzip the source-release ZIP and check it builds.<br></p>
-<div class="paragraph">
-<p>For example, if building core, then the ZIP file will be called <code>isis-1.9.0-source-release.zip</code> and should reside in <code>~/.m2/repository/org/apache/isis/core/isis/1.9.0</code> directory.<br></p>
-</div>
-<div class="paragraph">
-<p>Unzip in a new directory, and build.</p>
-</div>
-</li>
-<li>
-<p>Inspect the <code>DEPENDENCIES</code> file.<br></p>
-<div class="paragraph">
-<p>This file should be in the root of the extracted ZIP. In particular, check that there are no category-x dependencies.</p>
-</div>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>If you find problems and the release was performed on a branch, then just delete the branch and start over.</p>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_upload_release_for_voting">Upload Release for Voting</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Once the release has been built locally, it should be uploaded for voting. This is done by deploying the Maven artifacts to a staging directory (this includes the source release ZIP file which will be voted upon).</p>
-</div>
-<div class="paragraph">
-<p>The Apache staging repository runs on Nexus server, hosted at <a href="https://repository.apache.org">repository.apache.org</a>. The process of uploading will create a staging repository that is associated with the host (IP address) performing the release. Once the repository is staged, the newly created staging repository is "closed" in order to make it available to others.</p>
-</div>
-<div class="paragraph">
-<p>Before you start, make sure you&#8217;ve defined the staging repo in your local <code>~/.m2/settings.xml</code> file (see earlier on this page).</p>
-</div>
-<div class="sect2">
-<h3 id="_perform_the_release">Perform the Release</h3>
-<div class="paragraph">
-<p>If running on *nix, then the command to stage the release is:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn release:perform -P apache-release</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>but if using mSysGit on windows, specify a different working directory:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">mvn release:perform -P apache-release \
-    -DworkingDirectory=$ISISTMP/$ISISART-$ISISREL/checkout</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>You may (again) be prompted for gpg passphrase.</p>
-</div>
-<div class="paragraph">
-<p>The command starts off by checking out the codebase from the tag (hence different working directory under Windows to avoid 260 char path limit). It then builds the artifacts, then uploads them to the Apache staging repository:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">...
-[INFO] --- maven-release-plugin:2.3.2:perform (default-cli) @ isis ---
-[INFO] Performing a LOCAL checkout from scm:git:file:///C:\APACHE\isis-git-rw\co
-re
-[INFO] Checking out the project to perform the release ...
-[INFO] Executing: cmd.exe /X /C &quot;git clone --branch isis-1.9.0 file:///C:\APACHE\isis-git-rw\core C:\APACHE\isis-git-rw\core\target\checkout&quot;
-[INFO] Working directory: C:\APACHE\isis-git-rw\core\target
-[INFO] Performing a LOCAL checkout from scm:git:file:///C:\APACHE\isis-git-rw
-[INFO] Checking out the project to perform the release ...
-[INFO] Executing: cmd.exe /X /C &quot;git clone --branch isis-1.9.0 file:///C:\APACHE\isis-git-rw C:\APACHE\isis-git-rw\core\target\checkout&quot;
-[INFO] Working directory: C:\APACHE\isis-git-rw\core\target
-[INFO] Executing: cmd.exe /X /C &quot;git ls-remote file:///C:\APACHE\isis-git-rw&quot;
-[INFO] Working directory: C:\Users\ADMINI~1\AppData\Local\Temp
-[INFO] Executing: cmd.exe /X /C &quot;git fetch file:///C:\APACHE\isis-git-rw&quot;
-[INFO] Working directory: C:\APACHE\isis-git-rw\core\target\checkout
-[INFO] Executing: cmd.exe /X /C &quot;git checkout isis-1.9.0&quot;
-[INFO] Working directory: C:\APACHE\isis-git-rw\core\target\checkout
-[INFO] Executing: cmd.exe /X /C &quot;git ls-files&quot;
-[INFO] Working directory: C:\APACHE\isis-git-rw\core\target\checkout
-[INFO] Invoking perform goals in directory C:\APACHE\isis-git-rw\core\target\checkout\core
-[INFO] Executing goals 'deploy'...
-...</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>All being well this command will complete successfully. Given that it is uploading code artifacts, it could take a while to complete.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_check_the_repository">Check the Repository</h3>
-<div class="paragraph">
-<p>If the <code>mvn release:perform</code> has worked then it will have put release artifacts into a newly created staging repository .</p>
-</div>
-<div class="paragraph">
-<p>Log onto <a href="http://repository.apache.org">repository.apache.org</a> (using your ASF LDAP account):</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/release-process/nexus-staging-0.png"><img src="images/release-process/nexus-staging-0.png" alt="nexus staging 0" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>And then check that the release has been staged (select <code>staging repositories</code> from left-hand side):</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/release-process/nexus-staging-1.png"><img src="images/release-process/nexus-staging-1.png" alt="nexus staging 1" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>If nothing appears in a staging repo you should stop here and work out why.</p>
-</div>
-<div class="paragraph">
-<p>Assuming that the repo has been populated, make a note of its repo id; this is needed for the voting thread. In the screenshot above the id is <code>org.apache.isis-008</code>.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_close_the_repository">Close the Repository</h3>
-<div class="paragraph">
-<p>After checking that the staging repository contains the artifacts that you expect you should close the staging repository. This will make it available so that people can check the release.</p>
-</div>
-<div class="paragraph">
-<p>Press the Close button and complete the dialog:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/release-process/nexus-staging-2.png"><img src="images/release-process/nexus-staging-2.png" alt="nexus staging 2" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>Nexus should start the process of closing the repository.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/release-process/nexus-staging-2a.png"><img src="images/release-process/nexus-staging-2a.png" alt="nexus staging 2a" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>All being well, the close should (eventually) complete successfully (keep hitting refresh):</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/release-process/nexus-staging-3.png"><img src="images/release-process/nexus-staging-3.png" alt="nexus staging 3" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>The Nexus repository manager will also email you with confirmation of a successful close.</p>
-</div>
-<div class="paragraph">
-<p>If Nexus has problems with the key signature, however, then the close will be aborted:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/release-process/nexus-staging-4.png"><img src="images/release-process/nexus-staging-4.png" alt="nexus staging 4" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>Use <code>gpg --keyserver hkp://pgp.mit.edu --recv-keys nnnnnnnn</code> to confirm that the key is available.</p>
-</div>
-<div class="admonitionblock note">
-<table>
-<tr>
-<td class="icon">
-<i class="fa icon-note" title="Note"></i>
-</td>
-<td class="content">
-<div class="paragraph">
-<p>Unfortunately, Nexus does not seem to allow subkeys to be used for signing. See <a href="key-generation.html">Key Generation</a> for more details.</p>
-</div>
-</td>
-</tr>
-</table>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_push_changes">Push changes</h3>
-<div class="paragraph">
-<p>Finally, push both the branch and the tag created locally to the central origin server. For the tag, we append an <code>-RCn</code> suffix until the vote succeeds.</p>
-</div>
-<div class="paragraph">
-<p>To push the branch, for example:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git checkout prepare/$ISISART-$ISISREL
-git push -u origin prepare/$ISISART-$ISISREL</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>To push the tag, with the <code>-RCn</code> suffix, for example:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git push origin refs/tags/$ISISART-$ISISREL:refs/tags/$ISISART-$ISISREL-$ISISRC
-git fetch</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>The remote tag isn&#8217;t visible locally (eg via <code>gitk --all</code>), but can be seen <a href="https://git-wip-us.apache.org/repos/asf/isis/repo?p=isis.git;a=summary">online</a>.</p>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_voting">Voting</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Once the artifacts have been uploaded, you can call a vote.</p>
-</div>
-<div class="paragraph">
-<p>In all cases, votes last for 72 hours and require a +3 (binding) vote from members.</p>
-</div>
-<div class="sect2">
-<h3 id="_start_voting_thread_on_a_href_mailto_e_p_e_g_e_p_e_g_a">Start voting thread on <a href="mailto:&#100;e&#118;&#x40;&#x69;&#x73;&#x69;&#115;&#x2e;&#x61;p&#97;&#x63;&#104;e&#46;&#111;&#114;g">&#100;e&#118;&#x40;&#x69;&#x73;&#x69;&#115;&#x2e;&#x61;p&#97;&#x63;&#104;e&#46;&#111;&#114;g</a></h3>
-<div class="paragraph">
-<p>The following boilerplate is for a release of the Apache Isis Core. Adapt as required:</p>
-</div>
-<div class="paragraph">
-<p>Use the following subject:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">[VOTE] Apache Isis Core release 1.8.0 RC1</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>And use the following body:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">I've cut a release for Apache Isis Core and the simpleapp archetype:
-* Core 1.8.0
-* SimpleApp Archetype 1.8.0
-
-The source code artifacts have been uploaded to staging repositories on repository.apache.org:
-
-* http://repository.apache.org/content/repositories/orgapacheisis-10xx/org/apache/isis/core/isis/1.9.0/isis-1.9.0-source-release.zip
-* http://repository.apache.org/content/repositories/orgapacheisis-10xx/org/apache/isis/archetype/simpleapp-archetype/1.9.0/simpleapp-archetype-1.9.0-source-release.zip
-
-For each zip there is a corresponding signature file (append .asc to the zip's url).
-
-In the source code repo the code has been tagged as isis-1.8.0-RC1 and simpleapp-archetype-1.8.0-RC1.
-
-For instructions on how to verify the release (build from binaries and/or use in Maven directly), see http://isis.apache.org/contributors/verifying-releases.html
-
-Please verify the release and cast your vote.  The vote will be open for a minimum of 72 hours.
-
-[ ] +1
-[ ]  0
-[ ] -1</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Remember to update:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>the version number (1.9.0 or whatever)</p>
-</li>
-<li>
-<p>the release candidate number (<code>RC1</code> or whatever)</p>
-</li>
-<li>
-<p>the repository id, as provided by Nexus earlier (<code>orgapacheisis-10xx</code> or whatever)</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Note that the email also references the procedure for other committers to <a href="verifying-releases.html">verify the release</a>.</p>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_after_the_vote">After the vote</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Once the vote has completed, post the results to the isis-dev mailing list.</p>
-</div>
-<div class="paragraph">
-<p>For example, use the following subject for a vote on Apache Isis Core:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">[RESULT] [VOTE] Apache Isis Core release 1.9.0</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>using the body (alter last line as appropriate):</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">The vote has completed with the following result :
-
-  +1 (binding): &lt;i&gt;list of names&lt;/i&gt;
-  +1 (non binding): &lt;i&gt;list of names&lt;/i&gt;
-
-  -1 (binding): &lt;i&gt;list of names&lt;/i&gt;
-  -1 (non binding): &lt;i&gt;list of names&lt;/i&gt;
-
-The vote is (UN)SUCCESSFUL.</code></pre>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_for_a_successful_vote">For a successful vote</h3>
-<div class="paragraph">
-<p>If the vote has been successful, then replace the <code>-RCn</code> tag with another without the qualifier.</p>
-</div>
-<div class="paragraph">
-<p>You can do this using the <code>scripts/promoterctag.sh</code> script; for example:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">sh scripts/promoterctag isis-1.9.0 RC1    # $ISISART-$SISREL $ISISRC</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Or, if you like to execute the steps in that script by hand:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>add the new remote tag, for example:<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git push origin refs/tags/isis-1.9.0:refs/tags/isis-1.9.0
-git fetch</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p>delete the <code>-RCn</code> remote tag, for example:<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git push origin –delete refs/tags/isis-1.9.0-RC1 # $ISISART-$SISREL-$ISISRC
-git fetch</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p>delete the <code>-RCn</code> local tag, for example:<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git tag -d isis-1.9.0-RC1 # $ISISART-$SISREL-$ISISRC
-git fetch</code></pre>
-</div>
-</div>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Then, continue onto the next section for the steps to promote and announce the release.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_for_an_unsuccessful_vote">For an unsuccessful vote</h3>
-<div class="paragraph">
-<p>If the vote has been unsuccessful, then:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>delete the remote branch, for example:<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git push origin –delete isis-1.9.0 # $ISISART-$SISREL</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p>delete your local branch, for example:<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git branch -D isis-1.9.0 # $ISISART-$SISREL</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p>delete the remote origin server&#8217;s tag, for example:<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git push origin –delete refs/tags/isis-1.9.0-RC1</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p>delete the tag that was created locally, for example:<br></p>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git tag -d isis-1.9.0 # $ISISART-$SISREL</code></pre>
-</div>
-</div>
-</li>
-<li>
-<p>drop the staging repository in <a href="http://repository.apache.org">Nexus</a></p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Address the problems identified in the vote, and go again.</p>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_promoting_release_to_distribution">Promoting Release to Distribution</h2>
-<div class="sectionbody">
-<div class="sect2">
-<h3 id="_release_binaries_to_maven_central_repo">Release Binaries to Maven Central Repo</h3>
-<div class="paragraph">
-<p>From the Nexus pages, select the staging repository and select 'release' from the top menu.</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/release-process/nexus-release-1.png"><img src="images/release-process/nexus-release-1.png" alt="nexus release 1" width="600px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>This moves the release artifacts into an Apache releases repository; from there they will be automatically moved to the Maven repository.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_release_source_zip">Release Source Zip</h3>
-<div class="paragraph">
-<p>As described in the <a href="http://www.apache.org/dev/release-publishing.html#distribution_dist">Apache documentation</a>, each Apache TLP has a <code>release/TLP-name</code> directory in the distribution Subversion repository at <a href="https://dist.apache.org/repos/dist">https://dist.apache.org/repos/dist</a>. Once a release vote passes, the release manager should <code>svn add</code> the artifacts (plus signature and hash files) into this location. The release is then automatically pushed to <a href="http://www.apache.org/dist/">http://www.apache.org/dist/</a> by <code>svnpubsub</code>. Only the most recent release of each supported release line should be contained here, old versions should be deleted.</p>
-</div>
-<div class="paragraph">
-<p>Each project is responsible for the structure of its directory. The directory structure of Apache Isis reflects the directory structure in our git source code repo:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>isis/
-  core/
-  component/
-    objectstore/  # empty, JDO now part of core
-    security/     # empty, Shiro now part of core
-    viewer/       # empty, Restful and Wicket viewers now part of core
-  example/
-    archetype/
-      simpleapp/
-  tool/
-    maven-isis-plugin/   # not yet released</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>If necessary, checkout this directory structure:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">svn co https://dist.apache.org/repos/dist/release/isis isis-dist</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>Next, add the new release into the appropriate directory, and delete any previous release. You can use <a href="upd_sh">the upd.sh script</a> to help; this downloads the artefacts from the Nexus release repository, adds the artefacts to subsversion and deletes the previous version.</p>
-</div>
-<div class="paragraph">
-<p>At the end, commit the changes:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>svn commit -m "publishing isis source releases to dist.apache.org"</code></pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_update_jira_and_generate_release_notes">Update JIRA and generate Release notes</h2>
-<div class="sectionbody">
-<div class="sect2">
-<h3 id="_close_all_jira_tickets_for_the_release">Close All JIRA tickets for the release</h3>
-<div class="paragraph">
-<p>Close all JIRA tickets for the release, or moved to future releases if not yet addressed. Any tickets that were partially implemented should be closed, and new tickets created for the functionality on the ticket not yet implemented.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_generate_release_notes_in_jira">Generate Release Notes in JIRA</h3>
-<div class="paragraph">
-<p>Use JIRA to <a href="http://confluence.atlassian.com/display/JIRA/Creating+Release+Notes">generate release notes</a>:</p>
-</div>
-<div class="imageblock">
-<div class="content">
-<a class="image" href="images/release-process/jira-create-release-notes.png"><img src="images/release-process/jira-create-release-notes.png" alt="jira create release notes" width="400px"></a>
-</div>
-</div>
-<div class="paragraph">
-<p>&lt;img src="resources/jira-create-release-notes.png" width="400px"&gt;&lt;/img&gt;</p>
-</div>
-<div class="paragraph">
-<p>If any of the tickets closed are tasks/subtasks, then please edit the contents of the file to associate them back together again.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_mark_the_jira_versions_as_released">Mark the JIRA versions as released</h3>
-<div class="paragraph">
-<p>In JIRA, go to the administration section for the Apache Isis project and update the versions as released.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_update_isis_website">Update ISIS website</h3>
-<div class="paragraph">
-<p>Update the Apache Isis CMS website:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Using the JIRA-generated release notes as a guide, update the relevant page of the Apache Isis site.<br></p>
-<div class="paragraph">
-<p>Use this regex to convert links.  From:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">&lt;li&gt;\[&lt;a href='(.+)?'&gt;(.+?)&lt;\/a&gt;\].*-[\s]*(.*)$</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>to:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">* link:$1[$2] - $3</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>and use this regex to convert headings.  From:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">&lt;h2&gt;\s+(\S+)\n&lt;/h2&gt;</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>to:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">=== $1</code></pre>
-</div>
-</div>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>Typically this be will a new page in the core section or for one of the components. Make a note of the URL of this new page (for use in the mailing list announcement).</p>
-</div>
-<div class="paragraph">
-<p>For example, a new release of Apache Isis Core would require:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Do a search for <code>x.y.0-SNAPSHOT</code> and replace with <code>x.y.0</code></p>
-</li>
-<li>
-<p>Update the version number on the <a href="./index.html">home (index)</a> pages.</p>
-</li>
-<li>
-<p>Update the version number on the <a href="./simpleapp-archetype.html">simpleapp archetype</a> pages.</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>In addition:</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>Update the <a href="./download.html">download page</a> with a link to the source release zip file (under <a href="https://dist.apache.org/repos/dist/release/isis">https://dist.apache.org/repos/dist/release/isis</a>)</p>
-</li>
-<li>
-<p>The <a href="./doap_isis.rdf">DOAP RDF</a> file (which provides a machine-parseable description of the project) should also be updated with details of the new release. Validate using the <a href="http://www.w3.org/RDF/Validator/">W3C RDF Validator</a> service.</p>
-</li>
-</ul>
-</div>
-<div class="paragraph">
-<p>For more information on DOAP files, see these <a href="http://projects.apache.org/doap.html">Apache policy docs</a>.</p>
-</div>
-<div class="ulist">
-<ul>
-<li>
-<p>The <code>STATUS</code> file (in root of Apache Isis' source) should be updated with details of the new release.</p>
-</li>
-</ul>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_announce_the_release">Announce the release</h2>
-<div class="sectionbody">
-<div class="paragraph">
-<p>Announce the release to <a href="mailto:users@isis.apache.org">users mailing list</a>.</p>
-</div>
-<div class="paragraph">
-<p>For example, for a release of Apache Isis Core, use the following subject:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">[ANN] Apache Isis version 1.9.0 Released</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>And use the following body (summarizing the main points as required):</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code>The Apache Isis team is pleased to announce the release of:
-* Apache Isis Core version 1.9.0
-* SimpleApp Archetype 1.9.0
-
-New features in this release include:
-- ...
-
-Full release notes are available on the Apache Isis website at [1].
-
-Note that:
-* ...
-
-You can access this release directly from the Maven central repo [2],
-or download the release and build it from source [3].
-
-Enjoy!
-
---The Apache Isis team
-
-[1] http://isis.apache.org/core/release-notes/isis-1.9.0.html
-[2] http://search.maven.org
-[3] http://isis.apache.org/download.html</code></pre>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_blog_post">Blog post</h3>
-<div class="paragraph">
-<p>Finally, <a href="https://blogs.apache.org/roller-ui/login.rol">log onto</a> the <a href="http://blogs.apache.org/isis/">Apache blog</a> and create a new post. Copy-n-paste the above mailing list announcement should suffice.</p>
-</div>
-</div>
-</div>
-</div>
-<div class="sect1">
-<h2 id="_prepare_for_next_iteration">Prepare for next iteration</h2>
-<div class="sectionbody">
-<div class="sect2">
-<h3 id="_merge_changes_from_branch_back_into_code_master_code_branch">Merge changes from branch back into <code>master</code> branch</h3>
-<div class="paragraph">
-<p>Because we release from a branch, the changes made in the branch (changes to <code>pom.xml</code> made by the <code>maven-release-plugin</code>, or any manual edits) should be merged back from the release branch back into the <code>master</code> branch:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git checkout master                   # update master with latest
-git pull
-git merge isis-1.9.0                  # merge branch onto master
-git branch -d isis-1.9.0              # branch no longer needed
-git push origin --delete isis-1.9.0   # remote branch no longer needed</code></pre>
-</div>
-</div>
-<div class="paragraph">
-<p>If the core was updated, then you&#8217;ll most likely need to update other POMs to the new <code>-SNAPSHOT</code>.</p>
-</div>
-<div class="paragraph">
-<p>Next, do a sanity check that everything builds ok:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">rm -rf ~/.m2/repository/org/apache/isis
-mvn clean install</code></pre>
-</div>
-</div>
-<div class="olist lowerroman">
-<ol class="lowerroman" type="i">
-<li>
-<p>and run up an Isis application.</p>
-</li>
-</ol>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_update_code_status_code_file">Update <code>STATUS</code> file</h3>
-<div class="paragraph">
-<p>The trunk holds a <a href="https://git-wip-us.apache.org/repos/asf/isis/repo?p=isis.git;a=blob_plain;f=STATUS;hb=HEAD">STATUS</a> file which is a brief summary of the current status of the project. Update this file with details of the release.</p>
-</div>
-</div>
-<div class="sect2">
-<h3 id="_push_changes_2">Push changes</h3>
-<div class="paragraph">
-<p>Finally, push the changes up to origin:</p>
-</div>
-<div class="listingblock">
-<div class="content">
-<pre class="CodeRay highlight"><code data-lang="bash">git fetch    # check no new commits on origin/master
-git push</code></pre>
-</div>
-</div>
-</div>
-</div>
-</div>
-        </div>
-
-        <footer>
-          <hr>
-          <p class="small">
-          Copyright &copy; 2010~2015 The Apache&nbsp;Software&nbsp;Foundation, licensed under the Apache&nbsp;License,&nbsp;v2.0.
-          <br/>
-          Apache, the Apache feather logo, Apache&nbsp;Isis, and the Apache&nbsp;Isis project logo are all trademarks of The&nbsp;Apache&nbsp;Software&nbsp;Foundation.
-          </p>
-        </footer>
-
-    </div>
-
-    <div id="doc-content-right" class="large-3 medium-3 xcolumns">
-        <div id="toc" class="toc2">
-            <div class="fallback-toc">
-                <ul class="sectlevel1">
-<li><a href="#_intro">Intro</a></li>
-<li><a href="#_process_prerequisites">Process Prerequisites</a>
-<ul class="sectlevel2">
-<li><a href="#_set_up_local_environment">Set up local environment</a>
-<ul class="sectlevel3">
-<li><a href="#_public_private_key">Public/private key</a></li>
-<li><a href="#_maven_code_settings_xml_code">Maven <code>settings.xml</code></a></li>
-<li><a href="#_pull_down_code_to_release">Pull down code to release</a></li>
-</ul>
-</li>
-</ul>
-</li>
-<li><a href="#_set_environment_variables">Set Environment Variables</a></li>
-<li><a href="#_code_prerequisites">Code Prerequisites</a>
-<ul class="sectlevel2">
-<li><a href="#_update_the_version_number">Update the version number</a></li>
-<li><a href="#_update_parent_apache_isis_core">Update parent (Apache Isis Core)</a></li>
-<li><a href="#_check_no_snapshot_dependencies">Check no SNAPSHOT dependencies</a></li>
-<li><a href="#_update_plugin_versions">Update plugin versions</a></li>
-<li><a href="#_update_dependency_versions">Update dependency versions</a></li>
-<li><a href="#_code_cleanup_formatting">Code cleanup / formatting</a></li>
-<li><a href="#_license_header_notices_rat_tool">License header notices (RAT tool)</a></li>
-<li><a href="#_missing_license_check">Missing License Check</a></li>
-</ul>
-</li>
-<li><a href="#_sanity_check">Sanity check</a>
-<ul class="sectlevel2">
-<li><a href="#_sanity_check_for_code_core_code">Sanity check for <code>core</code></a></li>
-<li><a href="#_sanity_check_for_non_code_core_code_components">Sanity check for non-<code>core</code> components</a></li>
-</ul>
-</li>
-<li><a href="#_commit_changes">Commit changes</a></li>
-<li><a href="#_preparing_a_release_code_mvn_release_prepare_code">Preparing a Release (<code>mvn release:prepare</code>)</a>
-<ul class="sectlevel2">
-<li><a href="#_dry_run">Dry-run</a></li>
-<li><a href="#_post_prepare_sanity_check">Post-prepare sanity check</a></li>
-</ul>
-</li>
-<li><a href="#_upload_release_for_voting">Upload Release for Voting</a>
-<ul class="sectlevel2">
-<li><a href="#_perform_the_release">Perform the Release</a></li>
-<li><a href="#_check_the_repository">Check the Repository</a></li>
-<li><a href="#_close_the_repository">Close the Repository</a></li>
-<li><a href="#_push_changes">Push changes</a></li>
-</ul>
-</li>
-<li><a href="#_voting">Voting</a>
-<ul class="sectlevel2">
-<li><a href="#_start_voting_thread_on_a_href_mailto_e_p_e_g_e_p_e_g_a">Start voting thread on <a href="mailto:&#100;e&#118;&#x40;&#x69;&#x73;&#x69;&#115;&#x2e;&#x61;p&#97;&#x63;&#104;e&#46;&#111;&#114;g">&#100;e&#118;&#x40;&#x69;&#x73;&#x69;&#115;&#x2e;&#x61;p&#97;&#x63;&#104;e&#46;&#111;&#114;g</a></a></li>
-</ul>
-</li>
-<li><a href="#_after_the_vote">After the vote</a>
-<ul class="sectlevel2">
-<li><a href="#_for_a_successful_vote">For a successful vote</a></li>
-<li><a href="#_for_an_unsuccessful_vote">For an unsuccessful vote</a></li>
-</ul>
-</li>
-<li><a href="#_promoting_release_to_distribution">Promoting Release to Distribution</a>
-<ul class="sectlevel2">
-<li><a href="#_release_binaries_to_maven_central_repo">Release Binaries to Maven Central Repo</a></li>
-<li><a href="#_release_source_zip">Release Source Zip</a></li>
-</ul>
-</li>
-<li><a href="#_update_jira_and_generate_release_notes">Update JIRA and generate Release notes</a>
-<ul class="sectlevel2">
-<li><a href="#_close_all_jira_tickets_for_the_release">Close All JIRA tickets for the release</a></li>
-<li><a href="#_generate_release_notes_in_jira">Generate Release Notes in JIRA</a></li>
-<li><a href="#_mark_the_jira_versions_as_released">Mark the JIRA versions as released</a></li>
-<li><a href="#_update_isis_website">Update ISIS website</a></li>
-</ul>
-</li>
-<li><a href="#_announce_the_release">Announce the release</a>
-<ul class="sectlevel2">
-<li><a href="#_blog_post">Blog post</a></li>
-</ul>
-</li>
-<li><a href="#_prepare_for_next_iteration">Prepare for next iteration</a>
-<ul class="sectlevel2">
-<li><a href="#_merge_changes_from_branch_back_into_code_master_code_branch">Merge changes from branch back into <code>master</code> branch</a></li>
-<li><a href="#_update_code_status_code_file">Update <code>STATUS</code> file</a></li>
-<li><a href="#_push_changes_2">Push changes</a></li>
-</ul>
-</li>
-</ul>
-            </div>
-        </div>
-    </div>
-
-</div>
-
-
-<script src="./js/foundation/5.5.1/vendor/jquery.js"></script>
-<script src="./js/foundation/5.5.1/foundation.min.js"></script>
-
-
-<link href="./css/jquery.tocify/1.9.0/jquery.tocify.css" rel="stylesheet">
-<script src="./js/jqueryui/1.11.4/jquery-ui.min.js"></script>
-<script src="./js/jquery.tocify/1.9.0/jquery.tocify.js"></script>
-
-
-
-<script type="text/javascript">
-    $(function () {
-        $("#toc").tocify({
-            scrollTo: 50,
-            extendPage: true,
-            context: "#doc-content",
-            highlightOnScroll: true,
-            hashGenerator: "pretty",
-            hideEffect: "slideUp",
-            selectors: "h2,h3,h4,h5"
-        });
-        $(".fallback-toc").hide();
-    });
-</script>
-
-<script type="text/javascript">
-
-  /****
-
-      $(document).foundation();
-
-      $(document).ready(function(){
-        // Cache selectors
-        var lastId,
-            topMenu = $("div#toc ul"),
-            topMenuHeight = 100,
-
-            menuItems = topMenu.find("a"),
-            menuItemsHrefs = menuItems.map(function(){
-              var item = $($(this).attr("href"));
-              if (item.length) { return item; }
-            });
-
-        // Bind click handler to menu items to scroll animation
-        menuItems.click(function(e){
-          var href = $(this).attr("href"),
-              offsetTop = href === "#" ? 0 : $(href).offset().top-topMenuHeight+1;
-          $('html, body').stop().animate({
-              scrollTop: offsetTop
-          }, 300);
-
-          e.preventDefault();
-        });
-
-        // Bind to scroll of window
-        $(  window ).scroll(function(){
-
-           // Get container scroll position
-           var fromTop = $(this).scrollTop()+topMenuHeight;
-
-           var cur = menuItemsHrefs.map(function(){
-             if ($(this).offset().top < fromTop)
-               return this;
-           });
-
-           // Get the id of the current element
-           cur = cur[cur.length-1];
-
-           var id = cur && cur.length ? cur[0].id : "";
-
-           if (lastId !== id && id) {
-               scrollTo(id);
-           }
-
-           window.history.pushState({}, "", window.location.origin + window.location.pathname + "#" + id);
-        });
-
-        scrollTo = function(id) {
-              lastId = id;
-
-              menuItems
-                .removeClass("active");
-
-              menuItems
-                .parents()
-                .removeClass("active-region");
-
-              menuItems
-                .parents("ul").hide();
-
-              menuItems
-                .filter("[href=#"+id+"]")
-                .addClass("active");
-
-              menuItems
-                .filter("[href=#"+id+"]")
-                .parents("ul").show();
-
-              menuItems
-                .filter("[href=#"+id+"]")
-                .parent().children("ul").show();
-
-              menuItems
-                .filter("[href=#"+id+"]")
-                .parents("li").addClass("active-region");
-
-        }
-      menuItems
-        .removeClass("active");
-
-      menuItems
-        .parents()
-        .removeClass("active-region");
-
-        var syncMenuItem;
-        if(window.location.hash!=="") {
-            var menuItemFor = $.grep(menuItems, function(e) {
-                return e.hash === window.location.hash;
-            });
-            console.log(menuItemFor);
-            if(menuItemFor.length === 1) {
-                syncMenuItem = menuItemFor[0];
-            }
-        }
-
-        if(!syncMenuItem){
-            syncMenuItem = menuItems[0];
-        }
-
-        $(syncMenuItem).click();
-
-      });
-
-    ***/
-
-</script>
-
-<script type="text/javascript">
-
-$(document).ready(function(){
-    if("Documentation" === "Formal Release Process") {
-        console.log( "processing 'Documentation'" );
-
-        $("#doc-content-left").removeClass("large-9").removeClass("medium-9").addClass("large-12").addClass("medium-12");
-        $("#doc-content-right").removeClass("large-3").removeClass("medium-3").hide();
-    }
-
-});
-
-</script>
-
-
-<script>
-
-$( document ).ready(function() {
-
-    (function() {
-      $(function() {
-        return $("#doc-content h2, #doc-content h3, #doc-content h4, #doc-content h5, #doc-content h6").each(function(i, el) {
-          var $el, icon, id;
-          $el = $(el);
-          id = $el.attr('id');
-          icon = '<i class="fa fa-link"></i>';
-          if (id) {
-            return $el.prepend($("<a />").addClass("header-link").attr("href", "#" + id).html(icon));
-          }
-        });
-      });
-    }).call(this);
-
-
-
-	/*
-        http://osvaldas.info/auto-hide-sticky-header
-        MIT license
-	*/
-	;( function( $, window, document, undefined )
-	{
-		'use strict';
-
-		var elSelector		= '.header',
-			elClassHidden	= 'header--hidden',
-			throttleTimeout	= 500,
-			$element		= $( elSelector );
-
-		if( !$element.length ) return true;
-
-		var $window			= $( window ),
-			wHeight			= 0,
-			wScrollCurrent	= 0,
-			wScrollBefore	= 0,
-			wScrollDiff		= 0,
-			$document		= $( document ),
-			dHeight			= 0,
-
-			throttle = function( delay, fn )
-			{
-				var last, deferTimer;
-				return function()
-				{
-					var context = this, args = arguments, now = +new Date;
-					if( last && now < last + delay )
-					{
-						clearTimeout( deferTimer );
-						deferTimer = setTimeout( function(){ last = now; fn.apply( context, args ); }, delay );
-					}
-					else
-					{
-						last = now;
-						fn.apply( context, args );
-					}
-				};
-			};
-
-		$window.on( 'scroll', throttle( throttleTimeout, function()
-		{
-			dHeight			= $document.height();
-			wHeight			= $window.height();
-			wScrollCurrent	= $window.scrollTop();
-			wScrollDiff		= wScrollBefore - wScrollCurrent;
-
-			if( wScrollCurrent <= 0 ) // scrolled to the very top; element sticks to the top
-				$element.removeClass( elClassHidden );
-
-			else if( wScrollDiff > 0 && $element.hasClass( elClassHidden ) ) // scrolled up; element slides in
-				$element.removeClass( elClassHidden );
-
-			else if( wScrollDiff < 0 ) // scrolled down
-			{
-				if( wScrollCurrent + wHeight >= dHeight && $element.hasClass( elClassHidden ) ) // scrolled to the very bottom; element slides in
-					$element.removeClass( elClassHidden );
-
-				else // scrolled down; element slides out
-					$element.addClass( elClassHidden );
-			}
-
-			wScrollBefore = wScrollCurrent;
-		}));
-
-	})( jQuery, window, document );
-
-
-});
-</script>
-
-</body>
-</html>

http://git-wip-us.apache.org/repos/asf/isis-site/blob/e6efa093/content/screencasts.html
----------------------------------------------------------------------
diff --git a/content/screencasts.html b/content/screencasts.html
index 9b55964..3be9fb2 100644
--- a/content/screencasts.html
+++ b/content/screencasts.html
@@ -556,7 +556,7 @@ table.CodeRay td.code>pre{padding:0}
 <p>NB: when configuring DataNucleus for the <strong>dom</strong> project, make sure you are in the 'Java perspective', not the 'Java EE perspective').<br></p>
 </div>
 <div class="paragraph">
-<p>Learn more <a href="./guides/dg.html#_dg_eclipse">here</a></p>
+<p>Learn more <a href="./guides/cg.html#_cg_ide_eclipse">here</a></p>
 </div></div></td>
 <td class="tableblock halign-left valign-top"><div><div class="videoblock">
 <div class="content">
@@ -572,7 +572,7 @@ table.CodeRay td.code>pre{padding:0}
 <p><em>How to import an Apache Isis maven-based application into IntelliJ and run the app.</em><br></p>
 </div>
 <div class="paragraph">
-<p>Learn more <a href="./guides/dg.html#_dg_intellij">here</a></p>
+<p>Learn more <a href="./guides/cg.html#_cg_ide_intellij">here</a></p>
 </div></div></td>
 <td class="tableblock halign-left valign-top"><div><div class="videoblock">
 <div class="content">