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

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

    <!--#include virtual="/includes/sh.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="brush:bash">
                # Master branch.
                $ git clone https://github.com/apache/ignite.git
            </pre>
            <h5>Build Project</h5>
            <pre class="brush:bash">
                # Build project.
                $ mvn clean install -Pall-java,all-scala,licenses -DskipTests
            </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>
