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

<!--
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>
<meta charset="utf-8">

<link rel="canonical" href="https://ignite.apache.org/community/contribute.html" />
    <!--#include virtual="/includes/scriptshead.html" -->

    <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 <a href="/docs/latest">technical documentation</a> 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.
            </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>
                    Get to know our <a href="https://cwiki.apache.org/confluence/display/IGNITE/How+to+Document" target="_blank">
                    documentation contribution process</a>.
                </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> or fix an issue you came across.
                </li>
                <li>
                    <a href="https://issues.apache.org/jira/projects/IGNITE" target="_blank">Report</a> any documentation issue setting <i>documentation</i> as a ticket's
                    <i>component</i> type.
                </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>
