blob: b0395334614797902265d08f0e2e7b33b48cf845 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Making a release - Apache OpenNLP</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="color-scheme" content="dark light">
<meta name="description" content="Apache OpenNLP is a machine learning based toolkit for the processing of natural language text." />
<meta name="author" content="The Apache OpenNLP Team" />
<meta name="keywords" content="java, natural language processing, nlp, apache, open source, web site" />
<meta name="generator" content="JBake"/>
<!-- RSS Feed -->
<link rel="alternate" type="application/rss+xml" title="RSS" href="/feed.xml" />
<!-- Favicon -->
<link rel="apple-touch-icon" sizes="57x57" href="/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
<link rel="manifest" href="/manifest.json">
<meta name="msapplication-TileColor" content="#ffffff">
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
<meta name="theme-color" content="#ffffff">
<!-- The styles -->
<link href="/css/bootstrap.min.css" rel="stylesheet">
<link href="/css/font-awesome.min.css" rel="stylesheet">
<link href="/css/asciidoctor.css" rel="stylesheet">
<link href="/css/prettify.css" rel="stylesheet">
<link href="/css/custom-style.css" rel="stylesheet">
<link href="/css/scheme-light.css" rel="stylesheet">
<link href="/css/scheme-dark.css" rel="stylesheet">
<!-- HTML5 shim, for IE6-8 support of HTML5 elements -->
<!--[if lt IE 9]>
<script src="/js/html5shiv.js"></script>
<![endif]-->
</head>
<body onload="prettyPrint()">
<span class="visible-lg">
<a href="https://github.com/apache/opennlp"><img style="z-index: 9999; position: absolute; top: 0; right: 0; border: 0;" src="/img/fork-me-on-github.png" alt="Fork me on GitHub" data-canonical-src="https://s3.amazonaws.com/github/ribbons/forkme_right_darkblue_121621.png"></a>
</span>
<nav class="navbar navbar-default">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-items" aria-expanded="false">
<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="/">
<img alt="Brand" src="/img/opennlp-navbar-logo.png" class="img-responsive" width="100px" style="position: relative; top: -3px;">
</a>
</div>
<div class="collapse navbar-collapse" id="navbar-items">
<ul class="nav navbar-nav">
<li>
<a href="/"><span class="glyphicon glyphicon-home"></span> Home</a>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-download-alt"></span> Download <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/download.html">OpenNLP Releases</a></li>
<li><a href="/models.html">OpenNLP Models</a></li>
<li><a href="/maven-dependency.html">Maven Integration</a></li>
<li><a href="/gradle-dependency.html">Gradle Integration</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-flag"></span> General <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/news/">News</a></li>
<li><a href="https://blogsarchive.apache.org/#opennlp" target="_blank">Blog</a></li>
<li><a href="/mailing-lists.html">Mailing Lists</a></li>
<li><a href="https://issues.apache.org/jira/browse/OPENNLP" target="_blank">Issue tracker</a></li>
<li><a href="/books-tutorials-and-talks.html">Books, Tutorials and Talks</a></li>
<li><a href="/powered-by-opennlp.html">Powered by Apache OpenNLP</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-book"></span> Documentation <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/docs/">Manual and Javadocs</a></li>
<li><a href="/faq.html">FAQ</a></li>
<li><a href="https://cwiki.apache.org/OPENNLP" target="_blank">Wiki</a></li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-console"></span> Development <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="/get-involved.html">Get Involved</a></li>
<li><a href="/source-code.html">Source Code</a></li>
<li><a href="/using-git.html">Using Git</a></li>
<li><a href="/building.html">Building</a></li>
<li><a href="/code-conventions.html">Code Conventions</a></li>
<li><a href="/release.html">Release</a></li>
<li><a href="/release-model.html">Release Models</a></li>
<li><a href="/team.html">Project Team</a></li>
</ul>
</li>
</ul>
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-leaf"></span> ASF <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><a href="https://www.apache.org/">The Apache Software Foundation</a></li>
<li><a href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
<li><a href="https://www.apache.org/security/">Security</a></li>
<li><a href="https://www.apache.org/foundation/sponsorship.html">Become a Sponsor</a></li>
</ul>
</li>
</ul>
</div><!-- /.navbar-collapse -->
</div><!-- /.container-fluid -->
</nav>
<div class="container">
<h1 class="title">Making a release</h1>
<div class="sect1">
<h2 id="release_preparation">Release Preparation</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>Elect a release manager.</p>
</li>
<li>
<p>Create a ticket for a new release in <a href="https://issues.apache.org/jira/browse/OPENNLP">JIRA</a>. If you do not have permission to do so just ask to be given permissions on the mailing list.</p>
</li>
<li>
<p>Review all of the <a href="https://issues.apache.org/jira/browse/OPENNLP">JIRA</a> issues associated with the release. All issues should be resolved and closed.</p>
</li>
<li>
<p>Any issues assigned to the release that are not complete should be assigned to the next release. Any critical or blocker issues should be resolved on the mailing list. Discuss any issues that you are unsure of on the mailing list.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="steps_for_the_release_manager">Steps for the Release Manager</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The following steps need only to be performed once.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Make sure you have your PGP fingerprint added into <a href="https://id.apache.org/" class="bare">https://id.apache.org/</a></p>
</li>
<li>
<p>Make sure you have your PGP keys password.</p>
</li>
<li>
<p>Add your PGP key to the KEYS file</p>
<div class="listingblock">
<div class="content">
<pre>Examples of adding your key to this file:
pgp -kxa &lt;your name&gt; and append it to this file.
(pgpk -ll &lt;your name&gt; &amp;&amp; pgpk -xa &lt;your name&gt;) &gt;&gt; this file.
(gpg --list-sigs &lt;your name&gt;
&amp;&amp; gpg --armor --export &lt;your name&gt;) &gt;&gt; this file.</pre>
</div>
</div>
</li>
<li>
<p>In a local temp folder, svn checkout the OpenNLP artifacts and update the KEYS file</p>
</li>
<li>
<p>Note: This can only be done by a PMC member. If you are a committer acting as a release manager, ask a PMC member to add your key.</p>
<div class="listingblock">
<div class="content">
<pre>svn co https://dist.apache.org/repos/dist/release/opennlp/
svn commit -m "Added Key for &lt;name&gt;" KEYS</pre>
</div>
</div>
</li>
<li>
<p>Create a maven <code>settings.xml</code> to publish to <code>repository.apache.org</code>. An example configuration:</p>
<div class="listingblock">
<div class="content">
<pre>&lt;?xml version="1.0" encoding="UTF-8"?&gt;
&lt;settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd"
xmlns="http://maven.apache.org/SETTINGS/1.1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
&lt;servers&gt;
&lt;server&gt;
&lt;id&gt;apache.snapshots.https&lt;/id&gt;
&lt;username&gt;your-asf-ldap&lt;/username&gt;
&lt;password&gt;your-asf-ldap-password&lt;/password&gt;
&lt;/server&gt;
&lt;server&gt;
&lt;id&gt;apache.releases.https&lt;/id&gt;
&lt;username&gt;your-asf-ldap&lt;/username&gt;
&lt;password&gt;your-asf-ldap-password&lt;/password&gt;
&lt;/server&gt;
&lt;server&gt;
&lt;id&gt;apache.dist.https&lt;/id&gt;
&lt;username&gt;your-asf-ldap&lt;/username&gt;
&lt;password&gt;your-asf-ldap-password&lt;/password&gt;
&lt;/server&gt;
&lt;/servers&gt;
&lt;profiles&gt;
&lt;profile&gt;
&lt;id&gt;apache-gpg&lt;/id&gt;
&lt;properties&gt;
&lt;gpg.keyname&gt;your-gpg-code-signing-key-fingerprint&lt;/gpg.keyname&gt;
&lt;/properties&gt;
&lt;repositories&gt;
&lt;repository&gt;
&lt;id&gt;apache.dist.https&lt;/id&gt;
&lt;url&gt;https://dist.apache.org/repos/dist&lt;/url&gt;
&lt;/repository&gt;
&lt;/repositories&gt;
&lt;/profile&gt;
&lt;/profiles&gt;
&lt;/settings&gt;</pre>
</div>
</div>
</li>
<li>
<p>In case you are running on a headless system, it might be necessary to set the following export before starting with the release preparation.</p>
<div class="listingblock">
<div class="content">
<pre>export GPG_TTY=$(tty)</pre>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="release_steps">Release Steps</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>Checkout the Apache OpenNLP main branch: <code>git clone <a href="mailto:git@github.com">git@github.com</a>:apache/opennlp.git</code></p>
</li>
<li>
<p>(Optional) Execute a complete test (it can take several hours): <code>mvn test -DOPENNLP_DATA_DIR=/path/to/opennlp-test-data/ -Peval-tests</code></p>
</li>
<li>
<p>Check the current results of the eval build on the ASF Jenkins CI: <a href="https://ci-builds.apache.org/job/OpenNLP/job/eval-tests/" class="bare">https://ci-builds.apache.org/job/OpenNLP/job/eval-tests/</a></p>
</li>
<li>
<p>Do a trial build: <code>mvn package -Papache-release,apache-gpg</code></p>
</li>
<li>
<p>Switch to a new branch with a format like <strong>rel-opennlp-x.y.z.</strong>.</p>
</li>
<li>
<p>Prepare the release: <code>mvn release:prepare -Papache-gpg</code> Answer the questions appropriately. The tag name format should be <strong>opennlp-x.y.z</strong>.
This command creates and pushes two new commits to the repository to reflect the version changes. It also tags the release and pushes the branch.</p>
</li>
<li>
<p>Start an eval build for the tag via <a href="https://ci-builds.apache.org/job/OpenNLP/job/eval-tests-releases/" class="bare">https://ci-builds.apache.org/job/OpenNLP/job/eval-tests-releases/</a> (build can take several hours)</p>
</li>
</ul>
</div>
<div class="sect2">
<h3 id="successful_maven_release_preparation">Successful Maven Release Preparation</h3>
<div class="sect3">
<h4 id="perform_the_release">Perform the Release</h4>
<div class="ulist">
<ul>
<li>
<p>Perform the release: <code>mvn release:perform -Papache-gpg</code></p>
</li>
<li>
<p>This creates a staged repository at <a href="https://repository.apache.org/#stagingRepositories" class="bare">https://repository.apache.org/#stagingRepositories</a></p>
</li>
<li>
<p>Check the staged repository and if all looks well, close the staging repository but do <strong>not</strong> promote or release it at this time.</p>
</li>
<li>
<p>The build results are in <code>opennlp/target/checkout/target</code>. Do not modify or delete these files.</p>
</li>
</ul>
</div>
<div class="sect4">
<h5 id="put_the_artifacts_to_distdev">Put the artifacts to dist/dev</h5>
<div class="ulist">
<ul>
<li>
<p>Next, checkout the svn dist dev space from <a href="https://dist.apache.org/repos/dist/dev/opennlp/" class="bare">https://dist.apache.org/repos/dist/dev/opennlp/</a></p>
</li>
<li>
<p>Create a new folder <code>opennlp-x.y.z</code>.</p>
</li>
<li>
<p>Add the files from <code>opennlp/target/checkout/target</code> to this folder.</p>
</li>
<li>
<p>Commit the change set to the dist area. Check that the files are present in <a href="https://dist.apache.org/repos/dist/dev/opennlp/opennlp-x.y.z" class="bare">https://dist.apache.org/repos/dist/dev/opennlp/opennlp-x.y.z</a></p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect3">
<h4 id="check_the_release_artifacts">Check the Release Artifacts</h4>
<div class="paragraph">
<p>Perform basic checks against the release binary:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Check signature of generated artifacts. This can be done like that:</p>
<div class="listingblock">
<div class="content">
<pre>#!/bin/bash
mkdir /tmp/test
cd /tmp/test
curl -s -O https://dist.apache.org/repos/dist/release/opennlp/KEYS
curl -s -O https://dist.apache.org/repos/dist/dev/opennlp/opennlp-x.y.z/apache-opennlp-x.y.z-src.tar.gz
curl -s -O https://dist.apache.org/repos/dist/dev/opennlp/opennlp-x.y.z/apache-opennlp-x.y.z-src.tar.gz.asc
echo "
list keys
"
gpg --homedir . --list-keys
echo "
import KEYS file
"
gpg --homedir . --import KEYS
echo "
verify signature
"
gpg --homedir . --output apache-opennlp-x.y.z-src.tar.gz --decrypt apache-opennlp-x.y.z-src.tar.gz.asc</pre>
</div>
</div>
</li>
<li>
<p>Check presence and appropriateness of <code>LICENSE</code>, <code>NOTICE</code>, and <code>README</code> files.</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="create_a_vote_thread">Create a VOTE Thread</h4>
<div class="ulist">
<ul>
<li>
<p>Notify the developer mailing list of a new version vote. Be sure to replace all values in <code>[]</code> with the appropriate values.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Message Subject: [VOTE] Apache OpenNLP [version] Release Candidate</p>
</div>
<div class="listingblock">
<div class="content">
<pre>Hi folks,
I have posted a [Nth] release candidate for the Apache OpenNLP [version] release and it is ready for testing.
&lt;Add a summary to highlight notable changes&gt;
Thank you to everyone who contributed to this release, including all of our users and the people who submitted bug reports, c
ontributed code or documentation enhancements.
The release was made using the OpenNLP release process, documented on the website:
https://opennlp.apache.org/release.html
Maven Repo:
https://repository.apache.org/content/repositories/orgapacheopennlp-XXXX
&lt;repositories&gt;
&lt;repository&gt;
&lt;id&gt;opennlp-y.x.z-rc1&lt;/id&gt;
&lt;name&gt;Testing OpenNLP x.y.z release candidate&lt;/name&gt;
&lt;url&gt;
https://repository.apache.org/content/repositories/orgapacheopennlp-XXXX
&lt;/url&gt;
&lt;/repository&gt;
&lt;/repositories&gt;
Binaries &amp; Source:
https://dist.apache.org/repos/dist/dev/opennlp/opennlp-x.y.z
Tag:
https://github.com/apache/opennlp/releases/tag/opennlp-x.y.z
Release notes:
&lt;Add link to the Jira release notes&gt;
The results of the eval tests for the aforementioned tag can be found
here: https://ci-builds.apache.org/job/OpenNLP/job/eval-tests-releases/&lt;add-link-to-build&gt;
Reminder: The up-2-date KEYS file for signature verification can be
found here: https://dist.apache.org/repos/dist/release/opennlp/KEYS
Please vote on releasing these packages as Apache OpenNLP x.y.z The
vote is open for at least the next 72 hours.
Only votes from OpenNLP PMC are binding, but everyone is welcome to
check the release candidate and vote.
The vote passes if at least three binding +1 votes are cast.
Please VOTE
[+1] go ship it
[+0] meh, don't care
[-1] stop, there is a ${showstopper}
Thanks!
&lt;Your-Name&gt;</pre>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="after_a_successful_vote">After a Successful Vote</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The vote is successful if at least 3 <em>+1</em> votes are received from OpenNLP PMC members after a minimum of 72 hours of sending the vote email.
Acknowledge the voting results on the mailing list in the VOTE thread by sending a mail.</p>
</div>
<div class="paragraph">
<p>Message Subject: [RESULT] [VOTE] Apache OpenNLP [version]</p>
</div>
<div class="listingblock">
<div class="content">
<pre>Hi folks,
this vote passes with the following +1 being cast:
- PMC Name Y (binding)
- PMC Name X (binding)
- User Name Z
- PMC Name YY (binding)
- User Name ZZ
Thanks to all voters. I'll proceed with the steps.
&lt;Your-Name&gt;</pre>
</div>
</div>
<div class="sect2">
<h3 id="release_nexus_staging_repository">Release Nexus Staging Repository</h3>
<div class="paragraph">
<p>Release the staging repository. This will make the artifacts available in the Maven Central repository.
To do this go to the <a href="https://repository.apache.org">repository server</a>, log in, go to the staging area and release the staging repository linked to this release</p>
</div>
</div>
<div class="sect2">
<h3 id="merge_the_release_branch">Merge the Release Branch</h3>
<div class="paragraph">
<p>Merge the release branch into <code>main</code>.</p>
</div>
</div>
<div class="sect2">
<h3 id="commit_distribution_to_svn">Commit Distribution to SVN</h3>
<div class="paragraph">
<p>Move the distribution from dist/dev to dist/release via SVN</p>
</div>
<div class="listingblock">
<div class="content">
<pre>svn mv https://dist.apache.org/repos/dist/dev/opennlp/opennlp-x.y.z https://dist.apache.org/repos/dist/release/opennlp/opennlp-x.y.z -m "Release OpenNLP x.y.z"</pre>
</div>
</div>
<div class="paragraph">
<p>This will make the release artifacts available on dist.apache.org and the artifacts will start replicating.</p>
</div>
</div>
<div class="sect2">
<h3 id="delete_old_releases">Delete Old Release(s)</h3>
<div class="paragraph">
<p>To reduce the load on the ASF mirrors, projects are required to delete old releases (see <a href="https://www.apache.org/legal/release-policy.html#when-to-archive" class="bare">https://www.apache.org/legal/release-policy.html#when-to-archive</a>).</p>
</div>
<div class="paragraph">
<p>Remove the old releases from SVN under <a href="https://dist.apache.org/repos/dist/release/opennlp/" class="bare">https://dist.apache.org/repos/dist/release/opennlp/</a>.</p>
</div>
</div>
<div class="sect2">
<h3 id="update_the_website">Update the Website</h3>
<div class="paragraph">
<p>Update the website once the new version appears in the Apache download mirrors (keep checking <a href="https://www.apache.org/dyn/closer.cgi/opennlp" class="bare">https://www.apache.org/dyn/closer.cgi/opennlp</a> until you see something):</p>
</div>
<div class="sect3">
<h4 id="update_jbake_properties">Update jbake.properties</h4>
<div class="paragraph">
<p>Update the <code>jbake.properties</code> file to include the new version numbers:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code>opennlp.version=
opennlp.next.version=</code></pre>
</div>
</div>
</div>
<div class="sect3">
<h4 id="add_new_artifact_item">Add New Artifact Item</h4>
<div class="paragraph">
<p>Add a new artifactItem in the pom.xml for the new OpenNLP release. (This automatically pulls in the details and javadocs for the new version when the site is built.):</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="prettyprint highlight"><code data-lang="xml">&lt;artifactItem&gt;
&lt;groupId&gt;org.apache.opennlp&lt;/groupId&gt;
&lt;artifactId&gt;opennlp-distr&lt;/artifactId&gt;
[version]${project.version}&lt;/version&gt;
&lt;overWrite&gt;false&lt;/overWrite&gt;
&lt;type&gt;zip&lt;/type&gt;
&lt;classifier&gt;bin&lt;/classifier&gt;
&lt;outputDirectory&gt;${project.build.directory}/distr/1.8.1&lt;/outputDirectory&gt;
&lt;/artifactItem&gt;</code></pre>
</div>
</div>
</div>
<div class="sect3">
<h4 id="update_documentation_links">Update Documentation Links</h4>
<div class="paragraph">
<p>Move the last version&#8217;s links to the documentation to the Legacy Documentation (<a href="https://opennlp.apache.org/docs/legacy.html" class="bare">https://opennlp.apache.org/docs/legacy.html</a>) page. Add the following lines at the beginning of <code>docs/legacy.ad</code>:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>### Apache OpenNLP ${previous.release} documentation
* link:/docs/${previous.release}/manual/opennlp.html[Apache OpenNLP Manual]
* link:/docs/${previous.release}/apidocs/opennlp-tools/index.html[Apache OpenNLP Tools Javadoc]
* link:/docs/${previous.release}/apidocs/opennlp-uima/index.html[Apache OpenNLP UIMA Javadoc]
* link:/docs/${previous.release}/apidocs/opennlp-brat-annotator/index.html[Apache OpenNLP BRAT Annotator Javadoc]
* link:/docs/${previous.release}/apidocs/opennlp-morfologik-addon/index.html[Apache OpenNLP Morfologik Addon Javadoc]</pre>
</div>
</div>
</div>
<div class="sect3">
<h4 id="update_main_yml">Update main.yml</h4>
<div class="ulist">
<ul>
<li>
<p>Update the <code>main.yml</code> in <code>.github</code> to force a check on the docs for this new version.</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="update_doap_opennlp_rdf">Update doap_opennlp.rdf</h4>
<div class="ulist">
<ul>
<li>
<p>Update the <code>doap_opennlp.rdf</code> file to reflect the new version number and release date.</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="add_news_item">Add News Item</h4>
<div class="ulist">
<ul>
<li>
<p>Add a news item in <code>news/release-{xyz}.ad</code> by copying the content from OpenNLP project <code>opennlp-distr/src/README</code>.</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="commit_website_changes">Commit Website Changes.</h4>
<div class="ulist">
<ul>
<li>
<p>Commit the website changes.</p>
</li>
<li>
<p>Rebuild opennlp-site and redeploy the site (if Automatic Buildbot doesn&#8217;t kick in)</p>
</li>
<li>
<p>Test and review the website. Test that all download links are working. Test that the documentation is updated and can be viewed</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect2">
<h3 id="post_release_steps">Post-Release Steps</h3>
<div class="ulist">
<ul>
<li>
<p>Log the new version at <a href="https://reporter.apache.org/addrelease.html?opennlp" class="bare">https://reporter.apache.org/addrelease.html?opennlp</a>.</p>
</li>
<li>
<p>Announce the new version on the OpenNLP Twitter.</p>
</li>
<li>
<p>Announce the new version on the Apache OpenNLP blog at <a href="https://blogs.apache.org/opennlp/" class="bare">https://blogs.apache.org/opennlp/</a>.</p>
</li>
<li>
<p>Close the present release ticket in <a href="https://issues.apache.org/jira/browse/OPENNLP">JIRA</a>.</p>
</li>
<li>
<p>Send announcement email to <a href="mailto:announce@apache.org">announce@apache.org</a>, <a href="mailto:dev@opennlp.apache.org">dev@opennlp.apache.org</a>, <a href="mailto:users@opennlp.apache.org">users@opennlp.apache.org</a>. This needs to be done from your @apache.org email address or the email will bounce from the announce list. Gmail forwarding can help here and is a snap to set up (<a href="https://gmailblog.blogspot.com/2009/07/send-mail-from-another-address-without.html" class="bare">https://gmailblog.blogspot.com/2009/07/send-mail-from-another-address-without.html</a>). It&#8217;s even easier than the instructions there as it will recognize your email address and default to Apache settings. It is important to include a description of what OpenNLP is as well as a link to the updated DOAP within the release announcement, this is so others know what OpenNLP is.</p>
</li>
</ul>
</div>
<div class="listingblock">
<div class="content">
<pre>Title: [ANNOUNCE] OpenNLP &lt;version&gt; released
TO: announce@apache.org, users@opennlp.apache.org, dev@opennlp.apache.org</pre>
</div>
</div>
<div class="paragraph">
<p>Message body:</p>
</div>
<div class="listingblock">
<div class="content">
<pre>The Apache OpenNLP team is pleased to announce the release of version &lt;version&gt; of Apache OpenNLP. The Apache OpenNLP library is a machine learning based toolkit for the processing of natural language text. It supports the most common NLP tasks, such as tokenization, sentence segmentation, part-of-speech tagging, named entity extraction, chunking, and parsing.
The OpenNLP &lt;version&gt; binary and source distributions are available for download from our download page: https://opennlp.apache.org/download.html
The OpenNLP library is distributed by Maven Central as well. See the Maven Dependency page for more details: https://opennlp.apache.org/maven-dependency.html
Changes in this version:
** TODO UPDATE THIS &gt;&gt;
- change 1
- change 2
&lt;&lt; TODO UPDATE THIS **
For a complete list of fixed bugs and improvements please see the RELEASE_NOTES file included in the distribution.
The Apache OpenNLP Team</pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="after_an_unsuccessful_vote">After an Unsuccessful Vote</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The release vote may fail due to an issue discovered in the release candidate. If the vote fails the release should be canceled by:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Sending an email to <a href="mailto:dev@opennlp.apache.org">dev@opennlp.apache.org</a> on the VOTE thread notifying of the vote&#8217;s cancellation.</p>
</li>
<li>
<p>Dropping the staging repository at <a href="https://repository.apache.org/" class="bare">https://repository.apache.org/</a>.</p>
</li>
<li>
<p>Renaming the <code>opennlp-x.y.x</code> tag to <code>opennlp-x.y.z-RC1</code>.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>A new release candidate can now be prepared. When complete, a new VOTE thread can be started as described in the steps above.</p>
</div>
</div>
</div>
</div>
<footer class='footer'>
<div class="container">
<p class="text-muted">Copyright &copy; 2023 The Apache Software Foundation, Licensed under the
<a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a> <br>
Apache OpenNLP, OpenNLP, Apache, the Apache feather logo, and the Apache OpenNLP project logo are
trademarks of The Apache Software Foundation. -
<a href="/privacy-policy.html">Privacy Policy</a></p>
</div>
</footer>
<!-- Le javascript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://www.apachecon.com/event-images/snippet.js"></script>
<script src="/js/jquery-3.2.1.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
<script src="/js/prettify.js"></script>
<script type="text/javascript">
var link = $('a[href="' + this.location.pathname + '"]');
if (link != undefined)
link.parents('li,ul').addClass('active');
</script>
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/* We explicitly disable cookie tracking to avoid privacy issues */
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="//analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '33']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
</body>
</html>