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

<!--
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" />
    <!--#include virtual="/includes/scriptshead.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>
