blob: 89e6adb0e749f7d79155821595c5050a7d937409 [file] [log] [blame]
<!--
▄▄▄ ██▓███ ▄▄▄ ▄████▄ ██░ ██ ▓█████ ██▓ ▄████ ███▄ █ ██▓▄▄▄█████▓▓█████
▒████▄ ▓██░ ██▒▒████▄ ▒██▀ ▀█ ▓██░ ██▒▓█ ▀ ▓██▒ ██▒ ▀█▒ ██ ▀█ █ ▓██▒▓ ██▒ ▓▒▓█ ▀
▒██ ▀█▄ ▓██░ ██▓▒▒██ ▀█▄ ▒▓█ ▄ ▒██▀▀██░▒███ ▒██▒▒██░▄▄▄░▓██ ▀█ ██▒▒██▒▒ ▓██░ ▒░▒███
░██▄▄▄▄██ ▒██▄█▓▒ ▒░██▄▄▄▄██ ▒▓▓▄ ▄██▒░▓█ ░██ ▒▓█ ▄ ░██░░▓█ ██▓▓██▒ ▐▌██▒░██░░ ▓██▓ ░ ▒▓█ ▄
▓█ ▓██▒▒██▒ ░ ░ ▓█ ▓██▒▒ ▓███▀ ░░▓█▒░██▓░▒████▒ ░██░░▒▓███▀▒▒██░ ▓██░░██░ ▒██▒ ░ ░▒████▒
▒▒ ▓▒█░▒▓▒░ ░ ░ ▒▒ ▓▒█░░ ░▒ ▒ ░ ▒ ░░▒░▒░░ ▒░ ░ ░▓ ░▒ ▒ ░ ▒░ ▒ ▒ ░▓ ▒ ░░ ░░ ▒░ ░
▒ ▒▒ ░░▒ ░ ▒ ▒▒ ░ ░ ▒ ▒ ░▒░ ░ ░ ░ ░ ▒ ░ ░ ░ ░ ░░ ░ ▒░ ▒ ░ ░ ░ ░ ░
░ ▒ ░░ ░ ▒ ░ ░ ░░ ░ ░ ▒ ░░ ░ ░ ░ ░ ░ ▒ ░ ░ ░
░ ░ ░ ░░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░ ░
-->
<!--
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>