---
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>