blob: a8d8b9599a5bd33735e41226de35093e132feed6 [file] [log] [blame]
---
active_crumb: Community
layout: interior
---
<!--
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.
-->
<h1 class="page-title">
<span><i class="fas fa-fw fa-users"></i> {{ page.active_crumb }}</span>
</h1>
<div id="community" class="three-cols-container">
<div class="col-md-2 first-column">
<ul class="side-nav">
<li class="side-nav-title"><!--suppress CheckImageSize -->
<img src="/images/asf_logo-h36.png" alt=""></li>
<li><a target="asf" href="https://www.apache.org/">Foundation</a></li>
<li><a target="asf" href="https://www.apache.org/licenses/">License</a></li>
<li><a target="asf" href="https://www.apache.org/security">Security</a></li>
<li><a target="asf" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a target="asf" href="https://www.apache.org/foundation/thanks.html">Thanks</a></li>
</ul>
{% include left-side-menu.html %}
</div>
<div class="col-md-8 second-column">
<section id="start">
<h2 class="section-title">Start Contributing <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
<p>
Before you get involved in Apache NLPCraft development, please sign up to the
dev mailing list by sending an empty email to <a href="mailto:dev-subscribe@nlpcraft.apache.org">dev-subscribe@nlpcraft.apache.org</a>
and follow simple instructions in the reply. Once subscribed, say "Hello" to everyone in the community.
Tell us as much as you can about your areas of expertise mentioning how exactly you would like to
contribute. We are a friendly and inclusive community and will try to simplify your "onboarding"
considering your strengths or areas of interest.
</p>
<p>
Also, make sure to share your <a target="jira" href="https://issues.apache.org/jira/secure/Dashboard.jspa">ASF JIRA</a> ID in the same email (create
a <a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT">new one</a> if you don't have an ASF JIRA account yet).
One of our community members will add you to the contributors' list and you will be able to
go ahead and book NLPCraft tasks you would like to work on.
</p>
<h2 class="section-sub-title">Dev List <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
<p>
<a target="gitter" href="https://gitter.im/apache-nlpcraft/community">Gitter channel</a> and the <a href="mailto:dev@nlpcraft.apache.org">dev@nlpcraft.apache.org</a>
list is the primary and the default communication channel.
</p>
<p>
Send an email to <a href="mailto:dev-subscribe@nlpcraft.apache.org">dev-subscribe@nlpcraft.apache.org</a>
to subscribe to the list. If you are an ASF committer, then it's better to use your <code>@apache.org</code>
address for NLPCraft communications.
</p>
<p>
All the discussions related to contributions, changes, new ideas have to be started on the dev list
first. Remember the mantra - <b>"If it's not on the dev list, it didn't happen".</b> The project is
being developed and moved forward by individuals living across the globe and speaking different
languages. Thus, <a target="asf" href="https://www.apache.org/foundation/how-it-works.html#communication">asynchronous written communication</a>
is a preferred way of engagement at ASF as well as within the NLPCraft community.
</p>
<p>
For the sake of openness, speed and transparency, the community members are free to use Slack,
<a target="gitter" href="https://gitter.im/apache-nlpcraft/community">Gitter</a>, Skype or
meet via the tools like Google Meeting. But, as mentioned above, if any conversation took place between
contributors using channels like Slack, a summary of the discussion/decision has to be shared via the
dev list letting other contributors share their opinions. As a summary, final decisions are made only
on the dev list.
</p>
<h2 class="section-sub-title">Contribution Process <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
<p>
Before you start contributing, spend some time to get to know how <a target="asf" href="https://apache.org/foundation/how-it-works.html">Apache Software Foundation</a>
works and <a target="asf" href="https://www.apache.org/theapacheway/index.html">The Apache Way</a> that helps
us, as a group of professionals, drive the project forward in a respectful and inclusive way.
</p>
<h2 class="section-sub-title">JIRA Tickets <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
<p>
<a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT/issues">NLPCraft JIRA</a>
drives all activities in the project. Any tasks, of any complexity, for any component
in the main project or satellite projects has corresponding ticket in JIRA.
</p>
<p>
Before you can start contributing you need to pick an unassigned ticket and assign to yourself. Look
through all tickets paying attention to
<a target="jira" href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20NLPCRAFT%20AND%20status%20%3D%20Open%20AND%20labels%20%3D%20newbie%20AND%20assignee%20in%20(EMPTY)">unassigned tickets with label <code>newbie</code></a>
suited for the quick start.
Still haven't found anything suitable? As always, check the latest discussions on <a target="asf" href="https://mail-archives.apache.org/mod_mbox/nlpcraft-dev/">dev@nlpcraft.apache.org</a>
</p>
<h2 class="section-sub-title">Git Workflow <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
<p>
NLPCraft project uses Git as its version control system. The same Git workflow rules apply to all
sub-projects.
</p>
<p>ASF GitBox repos (committers only):</p>
<ul>
<li><a target="asf" href="https://git.apache.org/repos/asf/incubator-nlpcraft">https://git.apache.org/repos/asf/incubator-nlpcraft</a></li>
<li><a target="asf" href="https://git.apache.org/repos/asf/incubator-nlpcraft-java-client">https://git.apache.org/repos/asf/incubator-nlpcraft-java-client</a></li>
<li><a target="asf" href="https://git.apache.org/repos/asf/incubator-nlpcraft-ui">https://git.apache.org/repos/asf/incubator-nlpcraft-ui</a></li>
</ul>
<p>
GitHub mirrors (contributors pull-requests):
</p>
<ul>
<li><a target="github" href="https://github.com/apache/incubator-nlpcraft">https://github.com/apache/incubator-nlpcraft</a></li>
<li><a target="github" href="https://github.com/apache/incubator-nlpcraft-java-client">https://github.com/apache/incubator-nlpcraft-java-client</a></li>
<li><a target="github" href="https://github.com/apache/incubator-nlpcraft-ui">https://github.com/apache/incubator-nlpcraft-ui</a></li>
</ul>
<p>General Git workflow rules:</p>
<ul>
<li>
<code>master</code> branch represents current work-in-progress and is generally
maintained so that all tests are passing in <code>master</code>.
<ul>
<li>Nightly builds can be cut from the master.</li>
</ul>
</li>
<li>
Once all tickets for the current sprint are fixed and merged to <code>master</code>, the tagged
branch (<code>v0.7.4, v0.7.5</code>) is created for the release.
<ul>
<li>Each release has a Git tag associated with it.</li>
</ul>
</li>
<li>
Committers use feature branches for their work, while contributors use pull-requests from GitHub mirror.
<ul>
<li>
Feature branches should be named after their JIRA tickets, i.e. for ticket <code>NLPCRAFT-012</code>
the branch should be named <code>NLPCRAFT-012</code>.
</li>
</ul>
</li>
<li>
Committers create feature branches off the <code>master</code> branch.
</li>
<li>
Merging should use Git <code>squashing</code> to minimize number of intermittent commits.
</li>
</ul>
<h2 class="section-sub-title">Creating GitHub Pull-Request <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
<pre>
+------------+ +---------------+ +-----------------+
| | replica | | fork | |
| Apache Git | ==========> | GitHub Mirror | ---------> | John Doe's Fork |
| | | | | |
+------------+ +---------------+ +-----------------+
^ ^ ^
| | |
| +------------------------+ | origin
| upstream | |
| | |
| +-----------------+
| *Apache Git remote handle for committers* | |
+------------------------------------------------| Local clone |
| |
+-----------------+
</pre>
<p>To start:</p>
<ul>
<li>
Create a local fork of Apache NLPCraft mirror on GitHub.
<ul>
<li>
Your remote origin will refer to
<code>https://github.com/&lt;your_github_username&gt;/incubator-nlpcraft.git</code> (assuming the main project).
</li>
</ul>
</li>
<li>
You will need to regularly update local <code>master</code> to merge up upstream changes:
<ul>
<li>
Add remote for Apache NLPCraft mirror as a remote (you need to do it <b>once</b>):
<pre class="brush: bash">
git remote add upstream https://github.com/apache/incubator-nlpcraft.git
</pre>
</li>
<li>
Each time when you want to update your local <code>master</code> do the following:
<pre class="brush: bash">
git pull upstream
git checkout master
</pre>
</li>
</ul>
<div class="bq info">
<p><b>Branch Naming in Forks</b></p>
<p>
Note that you can use any naming scheme for the branches in your local forks (i.e. you can work
in <code>master</code> branch in your local fork). However, when you up-merge from the GitHub
mirror you need to make sure to use <code>master</code> branch to get the latest work-in-progress
from the upstream.
</p>
</div>
</li>
</ul>
<p>To make the contribution:</p>
<ul>
<li>
Fix or implement JIRA ticket in your fork. Provide JavaDocs or ScalaDocs whenever required. If you
add a new package make sure that <code>package-info.java</code> file in it is in place with a
description. Double-check all publicly visible JavaDoc.
</li>
<li>
Commit branch to your local fork.
</li>
<li>
Create pull request from the new remote branch in your fork to <code>master</code> of
Apache NLPCraft mirror. Please, start a title of the pull request from <code>NLPCRAFT-xxx</code>
referring to the JIRA ticket this pull-request is related to. An email about the pull request
will be send to dev-list and the same JIRA comment will be added to the NLPCRAFT-xxx ticket.
</li>
<li>
Move a corresponding JIRA ticket to <code>Patch Available</code> state by clicking on
<b>"Submit Patch"</b> button and let the community know that you're ready for review.
</li>
</ul>
<div class="bq info">
<p><b>Existing Pull-Requests</b></p>
<p>
Existing pull request should be updated instead of creation of new one. Do not create more
than one pull request for one issue.
</p>
</div>
<h2 class="section-sub-title">Become A Committer And PMC Member <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
<p>
We love contributions and gladly promote active contributors to committers and PMC members!
If you are new to Apache Software Foundation then NLPCraft will be an excellent starting point.
</p>
<p>
The most important point of becoming a committer for Apache projects is active participation
within the community. Being an active community member means participating in mailing list
discussions, helping to answer questions, being respectful towards others, and following the
meritocratic principles of community management.
</p>
<p>
Of course, code contributions are also important. Once you make a few code contributions, you will
become eligible to join NLPCraft committers, and possibly NLPCraft PMC. Candidates for new committers
or PMC members are suggested by the current committers, mentors, or PMC members, and then must be
approved by the PMC voting process.
</p>
</section>
<section id="pmc">
<h2 class="section-title">Committers <span class="amp">&</span> PMC <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
<p>
Visit the <a target="github" href="https://github.com/apache/incubator-nlpcraft/graphs/contributors">Apache NLPCraft Contributors</a> page to
see a list of top contributors and committers for the main project.
The table below summarizes <a target="asf" href="https://people.apache.org/phonebook.html?podling=nlpcraft">committers and PMC members</a>
of Apache NLPCraft:
</p>
<table class="gradient-table checks">
<thead>
<tr>
<th>Name</th>
<th>Organization</th>
<th>PMC Member?</th>
</tr>
</thead>
<tbody>
<tr>
<td>Aaron Radzinski</td>
<td>DataLingvo</td>
<td></td>
</tr>
<tr>
<td>Dmitriy Monakhov</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Evans Ye</td>
<td>Trend Micro</td>
<td style="text-align: center;"><i class="fas fa-check"></i></td>
</tr>
<tr>
<td>Konstantin Boudnik</td>
<td>Apache Software Foundation</td>
<td style="text-align: center;"><i class="fas fa-check-double"></i></td>
</tr>
<tr>
<td>Furkan Kamaci</td>
<td></td>
<td style="text-align: center;"><i class="fas fa-check"></i></td>
</tr>
<tr>
<td>Nikita Ivanov</td>
<td>GridGain Systems, Apache Ignite</td>
<td style="text-align: center;"><i class="fas fa-check"></i></td>
</tr>
<tr>
<td>Paul King</td>
<td></td>
<td style="text-align: center;"><i class="fas fa-check"></i></td>
</tr>
<tr>
<td>Sergey Makov</td>
<td></td>
<td></td>
</tr>
<tr>
<td>Roman Shaposhnik</td>
<td>Pivotal</td>
<td style="text-align: center;"><i class="fas fa-check"></i></td>
</tr>
<tr>
<td>Sergey Kamov</td>
<td>DataLingvo</td>
<td></td>
</tr>
<tr>
<td>Dave Fisher</td>
<td></td>
<td style="text-align: center;"><i class="fas fa-check"></i></td>
</tr>
<tr>
<td>Gleb Ifropc</td>
<td></td>
<td></td>
</tr>
</tbody>
</table>
</section>
<section id="resources">
<h2 class="section-title">Resources <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
<p>
There are many ways you can get help from Apache NLPCraft community. The mailing lists are the easiest
way to get answers or to get involved with the project.
</p>
<h2 class="section-title">Stack Overflow <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
<p>
NLPCraft community members watch Stack Overflow for the tag <code>nlpcraft</code> or "apachenlpcraft",
so you can post your questions there as well.
</p>
<h2 class="section-title">Mailing Lists <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
<ul>
<li>
<a href="mailto:dev@nlpcraft.apache.org">dev@nlpcraft.apache.org</a> for contributor discussions
(<a href="mailto:dev-subscribe@nlpcraft.apache.org">subscribe</a>,
<a href="mailto:dev-unsubscribe@nlpcraft.apache.org">unsubscribe</a>,
<a href="https://lists.apache.org/list.html?dev@nlpcraft.apache.org">archive</a>)
</li>
<li>
<a href="mailto:commits@nlpcraft.apache.org">commits@nlpcraft.apache.org</a> for Git commits
(<a href="mailto:commits-subscribe@nlpcraft.apache.org">subscribe</a>,
<a href="mailto:commits-unsubscribe@nlpcraft.apache.org">unsubscribe</a>,
<a href="https://lists.apache.org/list.html?commits@nlpcraft.apache.org">archive</a>)
</li>
</ul>
<h2 class="section-title">Git <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
<p>ASF GitBox repos (committers only):</p>
<ul>
<li><a target="asf" href="https://git.apache.org/repos/asf/incubator-nlpcraft">https://git.apache.org/repos/asf/incubator-nlpcraft</a></li>
<li><a target="asf" href="https://git.apache.org/repos/asf/incubator-nlpcraft-java-client">https://git.apache.org/repos/asf/incubator-nlpcraft-java-client</a></li>
<li><a target="asf" href="https://git.apache.org/repos/asf/incubator-nlpcraft-ui">https://git.apache.org/repos/asf/incubator-nlpcraft-ui</a></li>
</ul>
<p>
GitHub mirrors (contributors pull-requests):
</p>
<ul>
<li><a target="github" href="https://github.com/apache/incubator-nlpcraft">https://github.com/apache/incubator-nlpcraft</a></li>
<li><a target="github" href="https://github.com/apache/incubator-nlpcraft-java-client">https://github.com/apache/incubator-nlpcraft-java-client</a></li>
<li><a target="github" href="https://github.com/apache/incubator-nlpcraft-ui">https://github.com/apache/incubator-nlpcraft-ui</a></li>
</ul>
<h2 class="section-title">JIRA Issue Tracking <a href="#"><i class="top-link fas fa-fw fa-angle-double-up"></i></a></h2>
<p>
Visit <a target="jira" href="https://issues.apache.org/jira/projects/NLPCRAFT/issues">NLPCraft Jira</a> if you would like to file a new issue or view existing
issues. If you would like to assign an issue to yourself and start contributing, please send an
email to the <a href="mailto:dev@nlpcraft.apache.org">dev list</a>, so you can be granted proper Jira permissions.
</p>
</section>
</div>
<div class="col-md-2 third-column">
<ul class="side-nav">
<li class="side-nav-title">On This Page</li>
<li><a href="#start">Start Contributing</a></li>
<li><a href="#pmc">Committers <span class="amp">&</span> PMC</a></li>
<li><a href="#resources">Resources</a></li>
{% include quick-links.html %}
</ul>
</div>
</div>