---
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">Introduction</li>
            <li><a href="/docs.html">Overview</a></li>
            <li><a href="/installation.html">Installation</a></li>
            <li><a href="/getting-started.html">Getting Started</a></li>
        </ul>
    </div>
    <div class="col-md-8 second-column">
        <section id="start">
            <h2 class="section-title">Start Contributing</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 JIRA 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>
            <h3 class="section-sub-title">Dev List</h3>
            <p>
                This list is the primary and the default communication channel: <a href="mailto:dev@nlpcraft.apache.org">dev@nlpcraft.apache.org</a>
            </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, Gitter, 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>
            <h3 class="section-sub-title">Contribution Process</h3>
            <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="http://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>
            <h3 class="section-sub-title">JIRA Tickets</h3>
            <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>
            <h3 class="section-sub-title">Git Workflow</h3>
            <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 latest released version (i.e. the latest release).
                    <ul>
                        <li>
                            Each release has corresponding Git tag.
                        </li>
                    </ul>
                </li>
                <li>
                    <code>release</code> branch represent a root branch for the current release that is under development.
                    <ul>
                        <li>
                            During release the <code>release</code> branch gets merged to <code>master</code>, Git tag
                            is created and work on the next release continues with <code>release</code> branch.
                        </li>
                        <li>
                            <code>master</code> branch gets updated <b>only</b> during release process.
                        </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>release</code> branch.
                </li>
                <li>
                    Merging should use Git <code>squashing</code> to minimize number of intermittent commits.
                </li>
            </ul>
            <h3 class="section-sub-title">Creating GitHub Pull-Request</h3>
            <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: plain">
                                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: plain">
                                git pull upstream
                                git checkout release
                            </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>release</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>release</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>
            <h3 class="section-sub-title">Become A Committer And PMC Member</h3>
            <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 <amp>&amp;</amp> PMC</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="http://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><center><i class="fas fa-check"></i></center></td>
                    </tr>
                    <tr>
                        <td>Konstantin Boudnik</td>
                        <td>Apache Software Foundation</td>
                        <td><center><i class="fas fa-check-double"></i></center></td>
                    </tr>
                    <tr>
                        <td>Dmitriy Monakhov</td>
                        <td></td>
                        <td></td>
                    </tr>
                    <tr>
                        <td>Furkan Kamaci</td>
                        <td></td>
                        <td><center><i class="fas fa-check"></i></center></td>
                    </tr>
                    <tr>
                        <td>Nikita Ivanov</td>
                        <td>GridGain Systems, Apache Ignite</td>
                        <td><center><i class="fas fa-check"></i></center></td>
                    </tr>
                    <tr>
                        <td>Paul King</td>
                        <td></td>
                        <td><center><i class="fas fa-check"></i></center></td>
                    </tr>
                    <tr>
                        <td>Roman Shaposhnik</td>
                        <td>Pivotal</td>
                        <td><center><i class="fas fa-check"></i></center></td>
                    </tr>
                    <tr>
                        <td>Sergey Kamov</td>
                        <td>DataLingvo</td>
                        <td></td>
                    </tr>
                    <tr>
                        <td>Sergey Makov</td>
                        <td></td>
                        <td></td>
                    </tr>
                    <tr>
                        <td>Dave Fisher</td>
                        <td></td>
                        <td><center><i class="fas fa-check"></i></center></td>
                    </tr>
                </tbody>
            </table>
        </section>
        <section id="resources">
            <h2 class="section-title">Resources</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>
            <h3 class="section-title">Stack Overflow</h3>
            <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>
            <h3 class="section-title">Mailing Lists</h3>
            <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>
            <h3 class="section-title">Git</h3>
            <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>
            <h3 class="section-title">JIRA Issue Tracking</h3>
            <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 <amp>&amp;</amp> PMC</a></li>
            <li><a href="#resources">Resources</a></li>
            {% include quick-links.html %}
        </ul>
    </div>
</div>