blob: 3fea3b85bd6504dd595c4ed3aaa80b7a3509b1cc [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
.. KIND, either express or implied. See the License for the
.. specific language governing permissions and limitations
.. under the License.
.. _contributing:
***********************
Contribution Guidelines
***********************
There are many ways to contribute to Apache Arrow:
* Contributing code (we call them "patches")
* Writing documentation (another form of code, in a way)
* Participating in discussions on `JIRA <https://issues.apache.org/jira/projects/ARROW/issues>`_ or the `mailing list <https://lists.apache.org/list.html?dev@arrow.apache.org>`_
* Helping users of the libraries
* Reporting bugs and asking questions
Mailing List
============
Projects in The Apache Software Foundation ("the ASF") use public, archived
mailing lists to create a public record of each project's development
activities and decision-making process. As such, all contributors generally
must be subscribed to the dev@arrow.apache.org mailing list to participate in
the community.
Note that you must be subscribed to the mailing list in order to post to it. To
subscribe, send a blank email to dev-subscribe@arrow.apache.org.
Mailing list archives can be found `here <https://lists.apache.org/list.html?dev@arrow.apache.org>`_.
Issue Tracking
==============
We use the `ASF JIRA <https://issues.apache.org/jira/projects/ARROW/issues>`_
to manage our development "todo" list and to maintain changelogs for releases.
In addition, the project's `Confluence site <https://cwiki.apache.org/confluence/display/ARROW>`_
has some useful higher-level views of the JIRA issues.
To create a JIRA issue, you'll need to have an account on the ASF JIRA, which
you can `sign yourself up for <https://issues.apache.org/jira/secure/Signup!default.jspa>`_.
The JIRA server hosts bugs and issues for multiple Apache projects. The JIRA
project name for Arrow is "ARROW".
Before you create a new bug entry, we recommend you first
`search <https://issues.apache.org/jira/projects/ARROW/issues/ARROW-5140?filter=allopenissues>`_
among existing Arrow issues.
When reporting a new issue, follow these conventions to help make sure the
right people see it:
* Enter the component your issue pertains to (for example "Python" or "C++").
* Also prefix the issue title with the component name in brackets, for example
``[Python] issue name`` ; this helps when navigating lists of open issues.
* If you're reporting something that used to work in a previous version
but doesn't work in the current release, you can add the "Affects version"
field. For feature requests and other proposals, "Affects version" isn't
appropriate.
Project maintainers may later tweak formatting and labels to help improve their
visibility. They may add a "Fix version" to indicate that they're considering
it for inclusion in the next release, though adding that tag is not a
commitment that it will be done in the next release.
Advanced use
------------
Once you are involved in the project and want to do more on JIRA, such as
assign yourself an issue, you will need "Contributor" permissions on the
Apache Arrow JIRA. To get this role, ask on the mailing list for a project
maintainer's help.
GitHub issues
-------------
We support `GitHub issues <https://github.com/apache/arrow/issues>`_ as a
lightweight way to ask questions and engage with
the Arrow developer community. We use JIRA for maintaining a queue of
development work and as the public record for work on the project. So, feel
free to open GitHub issues, but bugs and feature requests will eventually need
to end up in JIRA, either before or after completing a pull request. Don't be
surprised if you are immediately asked by a project maintainer to open a JIRA
issue.
How to contribute patches
=========================
We prefer to receive contributions in the form of GitHub pull requests. Please
send pull requests against the `github.com/apache/arrow
<https://github.com/apache/arrow>`_ repository following the procedure below.
If you are looking for some ideas on what to contribute, check out the JIRA
issues for the Apache Arrow project. Comment on the issue and/or contact
dev@arrow.apache.org with your questions and ideas.
If you’d like to report a bug but don’t have time to fix it, you can still post
it on JIRA, or email the mailing list dev@arrow.apache.org.
To contribute a patch:
* Break your work into small, single-purpose patches if possible. It’s much
harder to merge in a large change with a lot of disjoint features.
* If one doesn't already exist, create a JIRA for your patch on the
`Arrow Project JIRA <https://issues.apache.org/jira/projects/ARROW/issues>`_.
* Submit the patch as a GitHub pull request against the master branch. For a
tutorial, see the GitHub guides on `forking a repo <https://help.github.com/en/articles/fork-a-repo>`_
and `sending a pull request <https://help.github.com/en/articles/creating-a-pull-request-from-a-fork>`_.
So that your pull request syncs with the JIRA issue, prefix your pull request
name with the JIRA issue id (ex:
`ARROW-767: [C++] Filesystem abstraction <https://github.com/apache/arrow/pull/4225>`_).
* Make sure that your code passes the unit tests. You can find instructions how
to run the unit tests for each Arrow component in its respective README file.
* Add new unit tests for your code.
Thank you in advance for your contributions!