<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Get Involved - 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">Get Involved</h1>

    <div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>The Apache OpenNLP project is developed by volunteers and is always looking for new contributors
to work on all parts of the project. Every contribution is welcome and needed to make it better.
A contribution can be anything from a small documentation typo fix to a new component. We especially welcome contributions from first-time users.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="mailing_lists">Mailing Lists</h2>
<div class="sectionbody">
<div class="paragraph">
<p>To get started, please first join the Apache OpenNLP mailing lists:</p>
</div>
<table class="tableblock frame-all grid-all stretch">
<colgroup>
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 20%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Mailing List</th>
<th class="tableblock halign-left valign-top">Purpose</th>
<th class="tableblock halign-left valign-top">Subscribe</th>
<th class="tableblock halign-left valign-top">Unsubscribe</th>
<th class="tableblock halign-left valign-top">Archives</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Users Mailing List</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">This list is the general users mailing list and is for posting most, if not all, relevant questions. If you are trying to decide which list, opennlp-dev or opennlp-users, post here first. Someone will kindly suggest you post to opennlp-dev if it is more appropriate there.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="mailto:users-subscribe@opennlp.apache.org">Subscribe</a></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="mailto:users-unsubscribe@opennlp.apache.org">Unsubscribe</a></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://lists.apache.org/list.html?users@opennlp.apache.org">Archives</a></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Developers Mailing List</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">This list is for development discussions, patch suggestions, and current issues posted
to the issue tracker for the project.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="mailto:dev-subscribe@opennlp.apache.org">Subscribe</a></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="mailto:dev-unsubscribe@opennlp.apache.org">Unsubscribe</a></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://lists.apache.org/list.html?dev@opennlp.apache.org">Archives</a></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Commits Mailing List</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">This list follows changes to the project. This list is <em>not</em> for questions. This list is used by svn to post changes to the project. If you have questions about any content here, post them to the opennlp-dev list above.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="mailto:commits-subscribe@opennlp.apache.org">Subscribe</a></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="mailto:commits-unsubscribe@opennlp.apache.org">Unsubscribe</a></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://lists.apache.org/list.html?commits@opennlp.apache.org">Archives</a></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Issues Mailing List</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">This list follows changes and posts to JIRA, the projects bug tracking system.  If you have any
issues please post them to the JIRA pages and not to this list. This list is mainly for developers to keep track of changes and issues to be resolved; however, any changes should be posted to the JIRA pages and <em>not</em> <em>directly</em> to this mailing list.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="mailto:issues-subscribe@opennlp.apache.org">Subscribe</a></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="mailto:issues-unsubscribe@opennlp.apache.org">Unsubscribe</a></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://lists.apache.org/list.html?issues@opennlp.apache.org">Archives</a></p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect1">
<h2 id="slack_channel">Slack Channel</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Another way of contacting OpenNLP committers and PMC members is the <em>#opennlp</em> Slack channel.
This is a great place to meet and get guidance on contributions.</p>
</div>
<div class="paragraph">
<p>Further details on using the ASF Slack channels and associated expectations can be found at the related <a href="https://infra.apache.org/slack.html">ASF infra page</a>.</p>
</div>
<div class="sect2">
<h3 id="note">Note</h3>
<div class="paragraph">
<p>The ASF Slack requires an <em>@apache.org</em> email address to join as a full member. Users without an <em>@apache.org</em> email address have to be invited.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="making_a_contribution">Making a Contribution</h2>
<div class="sectionbody">
<div class="ulist">
<ul>
<li>
<p>Create a new issue in the Apache OpenNLP <a href="https://issues.apache.org/jira/browse/OPENNLP" target="_blank" rel="noopener">JIRA</a>. Please describe the problem or improvement in the body of the issue. For larger issues, please first contact the developer mailing list and describe the problem.</p>
</li>
<li>
<p>Next, create a pull request in <a href="https://github.com/apache/opennlp/pulls" target="_blank" rel="noopener">GitHub</a>.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Bigger contributions can eventually only be accepted when an
<a href="https://apache.org/licenses/icla.pdf" target="_blank" rel="noopener">ICLA</a>, <a href="https://www.apache.org/licenses/cla-corporate.txt" target="_blank" rel="noopener">CCLA</a>
or <a href="https://www.apache.org/licenses/software-grant.txt" target="_blank" rel="noopener">software grant</a> is on file.</p>
</div>
<div class="paragraph">
<p>Contributors who have a history of successful participation are invited to join
the project as a committer from the <a href="https://incubator.apache.org/guides/ppmc.html">PPMC</a>.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="open_tasks">Open Tasks</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Please see the Apache OpenNLP <a href="https://issues.apache.org/jira/browse/OPENNLP" target="_blank" rel="noopener">JIRA</a> for a list of tasks. If you would like to work on a task, please email the developers mailing list and request to do so. You will then be assigned the issue in JIRA.</p>
</div>
</div>
</div>

</div>

    <footer class='footer'>
        <div class="container">
            <p class="text-muted">Copyright &copy; 2024  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>