<!--
 ▄▄▄       ██▓███   ▄▄▄       ▄████▄   ██░ ██ ▓█████     ██▓  ▄████  ███▄    █  ██▓▄▄▄█████▓▓█████
▒████▄    ▓██░  ██▒▒████▄    ▒██▀ ▀█  ▓██░ ██▒▓█   ▀    ▓██▒ ██▒ ▀█▒ ██ ▀█   █ ▓██▒▓  ██▒ ▓▒▓█   ▀
▒██  ▀█▄  ▓██░ ██▓▒▒██  ▀█▄  ▒▓█    ▄ ▒██▀▀██░▒███      ▒██▒▒██░▄▄▄░▓██  ▀█ ██▒▒██▒▒ ▓██░ ▒░▒███
░██▄▄▄▄██ ▒██▄█▓▒ ▒░██▄▄▄▄██ ▒▓▓▄ ▄██▒░▓█ ░██ ▒▓█  ▄    ░██░░▓█  ██▓▓██▒  ▐▌██▒░██░░ ▓██▓ ░ ▒▓█  ▄
 ▓█   ▓██▒▒██▒ ░  ░ ▓█   ▓██▒▒ ▓███▀ ░░▓█▒░██▓░▒████▒   ░██░░▒▓███▀▒▒██░   ▓██░░██░  ▒██▒ ░ ░▒████▒
 ▒▒   ▓▒█░▒▓▒░ ░  ░ ▒▒   ▓▒█░░ ░▒ ▒  ░ ▒ ░░▒░▒░░ ▒░ ░   ░▓   ░▒   ▒ ░ ▒░   ▒ ▒ ░▓    ▒ ░░   ░░ ▒░ ░
  ▒   ▒▒ ░░▒ ░       ▒   ▒▒ ░  ░  ▒    ▒ ░▒░ ░ ░ ░  ░    ▒ ░  ░   ░ ░ ░░   ░ ▒░ ▒ ░    ░     ░ ░  ░
  ░   ▒   ░░         ░   ▒   ░         ░  ░░ ░   ░       ▒ ░░ ░   ░    ░   ░ ░  ▒ ░  ░         ░
      ░  ░               ░  ░░ ░       ░  ░  ░   ░  ░    ░        ░          ░  ░              ░  ░
-->

<!--
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
"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.
-->

<!DOCTYPE html>
<html lang="en">
<head>
<link rel="canonical" href="https://ignite.apache.org/community/contribute.html" />
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Expires" content="0" />
    <title>Contribute - Apache Ignite</title>
    <!--#include virtual="/includes/styles.html" -->

    
</head>
<body>
    <!--#include virtual="/includes/header.html" -->
<article>
    <header>
        <div class="container">
            <h1 >Contribute to <strong>Apache Ignite</strong></h1>
        </div>
    </header>
    <div class="container">
			
			<p>
                This guide discusses various types of contribution to Apache Ignite extending generic ideas
                of the <a href="https://community.apache.org/gettingStarted/101.html" target="_blank">ASF Getting
                Started</a>. Contributing to Ignite doesn’t just mean writing code. Helping new users on the mailing
                list and improving documentation are also important. In fact, proposing significant code changes
                usually requires first gaining experience and credibility within the community by helping in other ways.
            </p>
            <p>
                The guide organizes contributions in an order that should be considered by new contributors
                who intend to get involved long-term. Build some track record of helping others, become more
                experienced with Ignite rather than solely focusing on code pull-requests.
            </p>
            <p>
                Also, our communication and collaboration are based on
                <a href="http://www.apache.org/theapacheway/index.html" target="_blank">The Apache Way</a> that helps
                us, as a group of professionals, drive the project forward in a respectful and inclusive way.
            </p>
			
				<h2>Getting Started</h2>
            	<p>
                The first thing to do is to join our <a href="mailto:dev@ignite.apache.org">dev mailing
                list</a> and say "Hello" to everyone in the community. Tell us something 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 and areas of interest.

                Also, make sure to share your JIRA ID in the same email
                (<a href="https://issues.apache.org/jira/projects/IGNITE"target="_blank">create a 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.
            </p>
            <p>
                Next, check the <a href="https://cwiki.apache.org/confluence/display/IGNITE/How+to+Collaborate" target="_blank">
                How to Collaborate</a> page for more details on various communication channels used by the community
                members. Even though most of the discussions take place on the dev list, we hang out on Slack.
            </p>
		
			<h2>Contribute by Helping Others</h2>

            <p>
                A great way to contribute to Ignite and get more practical experience is by helping answer
                user questions on the user@ignite.apache.org mailing list or on StackOverflow. Ignite users ask dozens
                of questions daily; taking a few minutes to help answer a question or troubleshoot an issue is a very
                valuable contribution to the project and community success.
            </p>
            <p>
                Subscribe to the <a href="/community/resources.html">user list and set up StackOverflow notifications</a>
                to stay up to date on what’s happening in Ignite. Answering questions is an excellent and visible way
                to help the community, which also demonstrates your expertise.
            </p>

            <h2>Contribute Documentation Changes</h2>
            <p>
                Contributing to technical documentation and API references such as JavaDocs are as valuable as contributing to bug
                fixes or features. Ignite documentation is an integral part of the project, which educates Ignite users
                about Ignite capabilities, configuration techniques, optimization aspects and many other areas they need
                to understand to deploy Ignite successfully in production. Documentation and APIs are the faces of the
                project and the community puts a lot of effort in maintaining them properly and professionally.
            </p>
            <p>
                Code changes contribution is not the only way to become an Ignite committer. Help the community to
                produce and maintain the documentation pages or API references, edit and correct existing content, stay
                active on the user and dev mailing lists, and you'll become a committer in due course.
            </p>
		
			<ul class="page-list">
                <li>
                    Came across a misprint or unclear documentation section? Use "Suggest Edits" feature of
                    our <a href="https://apacheignite.readme.io/docs" target="_blank"> main documentation portal</a> to
                    propose a change.
                </li>
                <li>
                    Select any <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20IGNITE%20AND%20resolution%20%3D%20Unresolved%20AND%20status%20not%20in%20(closed%2C%20resolved)%20and%20component%20%3D%20documentation%20%20ORDER%20BY%20priority%20DESC%2C%20updated%20DESC" target="_blank">
                    open documentation ticket</a> and start working on it. Use "Suggest Edits" to submit improvements.
                </li>
                <li>
                    To propose a change to <a href="/docs-and-apis.html#apis">API references</a> such as JavaDocs,
                    follow the process similar to the code contribution described below -- update the docs and send a
                    pull-request.
                </li>
            </ul>
            
    
        <h2>Code Contributions</h2>
            <p>
                Before you start with code contributions, get to know our
                <a href="https://cwiki.apache.org/confluence/display/IGNITE/How+to+Contribute" target="_blank">Contribution and
                    Development</a> process.
            </p>

            <div class="page-heading">Extensions and Integrations Contribution</div>
            <p>
                Ignite is used together with a huge selection of libraries and
                frameworks, and some of them are officially supported by the community. While some of the
                existing integrations such as with Spark, Spring Data, or Hibernate still reside in the primary Ignite
                repository, they all will eventually be moved to the Ignite Extensions repository. New integrations are
                accepted to the Extensions repository only.
            </p>
            <p>
                Feel free to contribute a new extension to Ignite or select an open ticket to help improve existing
                integrations:
            </p>
            <ul>
                <li>
                    <a href="https://issues.apache.org/jira/browse/IGNITE-8382?jql=project%20%3D%20Ignite%20and%20summary%20~%20%22spring%22%20and%20status%20not%20in%20(Resolved%2C%20Closed)" target="_blank">
                        Spring Framework</a> integrations.
                </li>
                <li>
                    <a href="https://issues.apache.org/jira/browse/IGNITE-12054?jql=project%20%3D%20Ignite%20and%20summary%20~%20%22spark%22%20and%20status%20not%20in%20(Resolved%2C%20Closed)" target="_blank">
                        Apache Spark</a> integration.
                </li>
                <li>
                    <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20IGNITE%20AND%20component%20in%20(Integrations)%20and%20status%20%3D%20OPEN"
                       target="_blank">All other</a> integrations.
                </li>
            </ul>
            
            <h2>Contribute to Ignite core</h2>
            <p>
                If you want to contribute to the core components of Ignite, then consider one of the tickets
                below. These tickets are of easy and moderate complexity, which can simplify your start:
            </p>
            <ul class="page-list">
                <li>
                    All the current
                    <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20IGNITE%20AND%20labels%20in%20(newbie)%20and%20status%20%3D%20OPEN" target="_blank">
                        easy and moderate tickets</a> suited for a quick start.
                </li>
                <li>
                    Machine Learning
                    <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20IGNITE%20AND%20labels%20in%20(newbie)%20and%20component%20in%20(ML)%20and%20status%20%3D%20OPEN" target="_blank">
                        tickets for beginners</a>.
                </li>
                <li>
                    Or <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20IGNITE%20AND%20labels%20in%20(newbie)%20and%20component%20in%20(sql)%20and%20status%20%3D%20OPEN" target="_blank">
                    SQL tasks</a> to start with.
                </li>
                <li>
                    If you are more interested in .NET, Python, Node.JS, or other programming languages different from
                    Java, then use <a
                        href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20IGNITE%20AND%20labels%20in%20(newbie)%20and%20component%20in%20(platforms)%20and%20status%20%3D%20OPEN" target="_blank">
                    this filter</a> to select your first task.
                </li>
                <li>
                    Curious in distributed data structures?
                    <a
                            href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20IGNITE%20AND%20component%20in%20(%22data%20structures%22)%20and%20status%20%3D%20OPEN" target="_blank">
                        Help to improve</a> the existing ones or contribute a brand new.
                </li>
            </ul>
            <p>
                Still haven't found anything gripping? Search through all the tickets in
                <a href="https://issues.apache.org/jira/browse/IGNITE/">Ignite Jira</a>, check the latest Ignite
                discussions on the dev list, or simply email us.
            </p>
            
            
			<h2>Become a Committer and PMC Member</h2>
            <p>
                We love contributions and gladly promote active contributors to committers and PMC members! If you
                are new to Apache Software Foundation then Ignite will be an excellent choice to start your journey.
            </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 and documentation contributions are also important. Once you make a few of them,
                you will become eligible to join Ignite committers, and possibly Ignite 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.
                <a href="https://cwiki.apache.org/confluence/display/IGNITE/Committership+Bar+Guidance" target="_blank">
                    This page</a> explains how and when Ignite community members decide to propose contributors to
                the roles of committers or PMC members.
            </p>
            
            
            <h2>Start Coding</h2>
            <p>
                Apache Ignite uses GIT for its VCS system. The "master" branch contains the last released version.
                The "ignite-{version}" branch contains the latest code for the latest or upcoming release.

                Refer to the <a href="https://cwiki.apache.org/confluence/display/IGNITE/How+to+Contribute" target="_blank">Contribution and
                Development</a> page which explains the process in detail including reviews, pull-requests, etc. --
                everything you need to know and do before a contribution can be accepted.
                While below you can find more detailed instructions, here is how you can checkout the Ignite repo and explore
                its code:
            </p>
            <h5>GIT checkout</h5>
            <pre class="line-numbers"><code class="language-bash">
                # Master branch.
                $ git clone https://github.com/apache/ignite.git
            </code></pre>
            <h5>Build Project</h5>
            <pre class="line-numbers"><code class="language-bash">
                # Build project.
                $ mvn clean install -Pall-java,all-scala,licenses -DskipTests
            </code></pre>
            <p>
                See more detailed build instructions in the
                <a href="https://github.com/apache/ignite/blob/master/DEVNOTES.txt" target="_blank" rel="noopener">DEVNOTES.txt</a> file.
            </p>
			
</div>
</article>
<!--#include virtual="/includes/footer.html" -->

<!--#include virtual="/includes/scripts.html" -->
</body>
</html>
