blob: ff85d4fe2dc8b06500018a97f54c93e4b748d6d7 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en" data-content_root="" >
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" />
<title>New Contributor’s Guide &#8212; Apache Arrow v17.0.0.dev59</title>
<script data-cfasync="false">
document.documentElement.dataset.mode = localStorage.getItem("mode") || "";
document.documentElement.dataset.theme = localStorage.getItem("theme") || "light";
</script>
<!-- Loaded before other Sphinx assets -->
<link href="../../_static/styles/theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../../_static/styles/bootstrap.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../../_static/styles/pydata-sphinx-theme.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link href="../../_static/vendor/fontawesome/6.5.1/css/all.min.css?digest=8d27b9dea8ad943066ae" rel="stylesheet" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-solid-900.woff2" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-brands-400.woff2" />
<link rel="preload" as="font" type="font/woff2" crossorigin href="../../_static/vendor/fontawesome/6.5.1/webfonts/fa-regular-400.woff2" />
<link rel="stylesheet" type="text/css" href="../../_static/pygments.css" />
<link rel="stylesheet" type="text/css" href="../../_static/copybutton.css" />
<link rel="stylesheet" type="text/css" href="../../_static/design-style.1e8bd061cd6da7fc9cf755528e8ffc24.min.css" />
<link rel="stylesheet" type="text/css" href="../../_static/theme_overrides.css" />
<!-- Pre-loaded scripts that we'll load fully later -->
<link rel="preload" as="script" href="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae" />
<link rel="preload" as="script" href="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae" />
<script src="../../_static/vendor/fontawesome/6.5.1/js/all.min.js?digest=8d27b9dea8ad943066ae"></script>
<script data-url_root="../../" id="documentation_options" src="../../_static/documentation_options.js"></script>
<script src="../../_static/doctools.js"></script>
<script src="../../_static/sphinx_highlight.js"></script>
<script src="../../_static/clipboard.min.js"></script>
<script src="../../_static/copybutton.js"></script>
<script src="../../_static/design-tabs.js"></script>
<script>DOCUMENTATION_OPTIONS.pagename = 'developers/guide/index';</script>
<script>
DOCUMENTATION_OPTIONS.theme_version = '0.15.2';
DOCUMENTATION_OPTIONS.theme_switcher_json_url = '/docs/_static/versions.json';
DOCUMENTATION_OPTIONS.theme_switcher_version_match = 'dev/';
DOCUMENTATION_OPTIONS.show_version_warning_banner = true;
</script>
<link rel="canonical" href="https://arrow.apache.org/docs/developers/guide/index.html" />
<link rel="icon" href="../../_static/favicon.ico"/>
<link rel="index" title="Index" href="../../genindex.html" />
<link rel="search" title="Search" href="../../search.html" />
<link rel="next" title="Architectural Overview" href="architectural_overview.html" />
<link rel="prev" title="Bug reports and feature requests" href="../bug_reports.html" />
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<meta name="docsearch:language" content="en"/>
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/* We explicitly disable cookie tracking to avoid privacy issues */
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '20']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
</head>
<body data-bs-spy="scroll" data-bs-target=".bd-toc-nav" data-offset="180" data-bs-root-margin="0px 0px -60%" data-default-mode="">
<a id="pst-skip-link" class="skip-link" href="#main-content">Skip to main content</a>
<div id="pst-scroll-pixel-helper"></div>
<button type="button" class="btn rounded-pill" id="pst-back-to-top">
<i class="fa-solid fa-arrow-up"></i>
Back to top
</button>
<input type="checkbox"
class="sidebar-toggle"
name="__primary"
id="__primary"/>
<label class="overlay overlay-primary" for="__primary"></label>
<input type="checkbox"
class="sidebar-toggle"
name="__secondary"
id="__secondary"/>
<label class="overlay overlay-secondary" for="__secondary"></label>
<div class="search-button__wrapper">
<div class="search-button__overlay"></div>
<div class="search-button__search-container">
<form class="bd-search d-flex align-items-center"
action="../../search.html"
method="get">
<i class="fa-solid fa-magnifying-glass"></i>
<input type="search"
class="form-control"
name="q"
id="search-input"
placeholder="Search the docs ..."
aria-label="Search the docs ..."
autocomplete="off"
autocorrect="off"
autocapitalize="off"
spellcheck="false"/>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
</form></div>
</div>
<header class="bd-header navbar navbar-expand-lg bd-navbar">
<div class="bd-header__inner bd-page-width">
<label class="sidebar-toggle primary-toggle" for="__primary">
<span class="fa-solid fa-bars"></span>
</label>
<div class="col-lg-3 navbar-header-items__start">
<div class="navbar-item">
<a class="navbar-brand logo" href="../../index.html">
<img src="../../_static/arrow.png" class="logo__image only-light" alt="Apache Arrow v17.0.0.dev59 - Home"/>
<script>document.write(`<img src="../../_static/arrow-dark.png" class="logo__image only-dark" alt="Apache Arrow v17.0.0.dev59 - Home"/>`);</script>
</a></div>
</div>
<div class="col-lg-9 navbar-header-items">
<div class="me-auto navbar-header-items__center">
<div class="navbar-item">
<nav class="navbar-nav">
<ul class="bd-navbar-elements navbar-nav">
<li class="nav-item">
<a class="nav-link nav-internal" href="../../format/index.html">
Specifications
</a>
</li>
<li class="nav-item current active">
<a class="nav-link nav-internal" href="../index.html">
Development
</a>
</li>
<li class="nav-item dropdown">
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links">
Implementations
</button>
<ul id="pst-nav-more-links" class="dropdown-menu">
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../c_glib/index.html">
C/GLib
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../cpp/index.html">
C++
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/csharp/README.md">
C#
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://pkg.go.dev/github.com/apache/arrow/go/v17">
Go
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../java/index.html">
Java
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../js/index.html">
JavaScript
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/julia/">
Julia
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/matlab/README.md">
MATLAB
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/nanoarrow/">
nanoarrow
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../python/index.html">
Python
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../r/index.html">
R
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/ruby/README.md">
Ruby
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://docs.rs/crate/arrow/">
Rust
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../status.html">
Implementation Status
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/cpp/">
C++ cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/java/">
Java cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/py/">
Python cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/r/">
R cookbook
</a>
</li>
</ul>
</li>
</ul>
</nav></div>
</div>
<div class="navbar-header-items__end">
<div class="navbar-item navbar-persistent--container">
<script>
document.write(`
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
<span class="search-button__default-text">Search</span>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
</button>
`);
</script>
</div>
<div class="navbar-item">
<script>
document.write(`
<div class="version-switcher__container dropdown">
<button id="pst-version-switcher-button-2"
type="button"
class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle"
data-bs-toggle="dropdown"
aria-haspopup="listbox"
aria-controls="pst-version-switcher-list-2"
aria-label="Version switcher list"
>
Choose version <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div id="pst-version-switcher-list-2"
class="version-switcher__menu dropdown-menu list-group-flush py-0"
role="listbox" aria-labelledby="pst-version-switcher-button-2">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
`);
</script></div>
<div class="navbar-item">
<script>
document.write(`
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
</button>
`);
</script></div>
<div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
aria-label="Icon Links">
<li class="nav-item">
<a href="https://github.com/apache/arrow" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">GitHub</span></a>
</li>
<li class="nav-item">
<a href="https://twitter.com/ApacheArrow" title="X" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-x-twitter fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">X</span></a>
</li>
</ul></div>
</div>
</div>
<div class="navbar-persistent--mobile">
<script>
document.write(`
<button class="btn navbar-btn search-button-field search-button__button" title="Search" aria-label="Search" data-bs-placement="bottom" data-bs-toggle="tooltip">
<i class="fa-solid fa-magnifying-glass"></i>
<span class="search-button__default-text">Search</span>
<span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd class="kbd-shortcut__modifier">K</kbd></span>
</button>
`);
</script>
</div>
<label class="sidebar-toggle secondary-toggle" for="__secondary" tabindex="0">
<span class="fa-solid fa-outdent"></span>
</label>
</div>
</header>
<div class="bd-container">
<div class="bd-container__inner bd-page-width">
<div class="bd-sidebar-primary bd-sidebar">
<div class="sidebar-header-items sidebar-primary__section">
<div class="sidebar-header-items__center">
<div class="navbar-item">
<nav class="navbar-nav">
<ul class="bd-navbar-elements navbar-nav">
<li class="nav-item">
<a class="nav-link nav-internal" href="../../format/index.html">
Specifications
</a>
</li>
<li class="nav-item current active">
<a class="nav-link nav-internal" href="../index.html">
Development
</a>
</li>
<li class="nav-item dropdown">
<button class="btn dropdown-toggle nav-item" type="button" data-bs-toggle="dropdown" aria-expanded="false" aria-controls="pst-nav-more-links-2">
Implementations
</button>
<ul id="pst-nav-more-links-2" class="dropdown-menu">
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../c_glib/index.html">
C/GLib
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../cpp/index.html">
C++
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/csharp/README.md">
C#
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://pkg.go.dev/github.com/apache/arrow/go/v17">
Go
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../java/index.html">
Java
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../js/index.html">
JavaScript
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/julia/">
Julia
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/matlab/README.md">
MATLAB
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/nanoarrow/">
nanoarrow
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../python/index.html">
Python
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../r/index.html">
R
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://github.com/apache/arrow/blob/main/ruby/README.md">
Ruby
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://docs.rs/crate/arrow/">
Rust
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-internal" href="../../status.html">
Implementation Status
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/cpp/">
C++ cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/java/">
Java cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/py/">
Python cookbook
</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-item nav-external" href="https://arrow.apache.org/cookbook/r/">
R cookbook
</a>
</li>
</ul>
</li>
</ul>
</nav></div>
</div>
<div class="sidebar-header-items__end">
<div class="navbar-item">
<script>
document.write(`
<div class="version-switcher__container dropdown">
<button id="pst-version-switcher-button-3"
type="button"
class="version-switcher__button btn btn-sm navbar-btn dropdown-toggle"
data-bs-toggle="dropdown"
aria-haspopup="listbox"
aria-controls="pst-version-switcher-list-3"
aria-label="Version switcher list"
>
Choose version <!-- this text may get changed later by javascript -->
<span class="caret"></span>
</button>
<div id="pst-version-switcher-list-3"
class="version-switcher__menu dropdown-menu list-group-flush py-0"
role="listbox" aria-labelledby="pst-version-switcher-button-3">
<!-- dropdown will be populated by javascript on page load -->
</div>
</div>
`);
</script></div>
<div class="navbar-item">
<script>
document.write(`
<button class="btn btn-sm navbar-btn theme-switch-button" title="light/dark" aria-label="light/dark" data-bs-placement="bottom" data-bs-toggle="tooltip">
<span class="theme-switch nav-link" data-mode="light"><i class="fa-solid fa-sun fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="dark"><i class="fa-solid fa-moon fa-lg"></i></span>
<span class="theme-switch nav-link" data-mode="auto"><i class="fa-solid fa-circle-half-stroke fa-lg"></i></span>
</button>
`);
</script></div>
<div class="navbar-item"><ul class="navbar-icon-links navbar-nav"
aria-label="Icon Links">
<li class="nav-item">
<a href="https://github.com/apache/arrow" title="GitHub" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-github fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">GitHub</span></a>
</li>
<li class="nav-item">
<a href="https://twitter.com/ApacheArrow" title="X" class="nav-link" rel="noopener" target="_blank" data-bs-toggle="tooltip" data-bs-placement="bottom"><span><i class="fa-brands fa-square-x-twitter fa-lg" aria-hidden="true"></i></span>
<span class="sr-only">X</span></a>
</li>
</ul></div>
</div>
</div>
<div class="sidebar-primary-items__start sidebar-primary__section">
<div class="sidebar-primary-item">
<nav class="bd-docs-nav bd-links"
aria-label="Section Navigation">
<p class="bd-links__title" role="heading" aria-level="1">Section Navigation</p>
<div class="bd-toc-item navbar-nav"><ul class="current nav bd-sidenav">
<li class="toctree-l1"><a class="reference internal" href="../bug_reports.html">Bug reports and feature requests</a></li>
<li class="toctree-l1 current active has-children"><a class="current reference internal" href="#">New Contributor’s Guide</a><input checked="" class="toctree-checkbox" id="toctree-checkbox-1" name="toctree-checkbox-1" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-1"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="architectural_overview.html">Architectural Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="communication.html">Communication</a></li>
<li class="toctree-l2 has-children"><a class="reference internal" href="step_by_step/index.html">Steps in making your first PR</a><input class="toctree-checkbox" id="toctree-checkbox-2" name="toctree-checkbox-2" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-2"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="step_by_step/set_up.html">Set up</a></li>
<li class="toctree-l3"><a class="reference internal" href="step_by_step/building.html">Building the Arrow libraries 🏋🏿‍♀️</a></li>
<li class="toctree-l3"><a class="reference internal" href="step_by_step/finding_issues.html">Finding good first issues 🔎</a></li>
<li class="toctree-l3"><a class="reference internal" href="step_by_step/arrow_codebase.html">Working on the Arrow codebase 🧐</a></li>
<li class="toctree-l3"><a class="reference internal" href="step_by_step/testing.html">Testing 🧪</a></li>
<li class="toctree-l3"><a class="reference internal" href="step_by_step/styling.html">Styling 😎</a></li>
<li class="toctree-l3"><a class="reference internal" href="step_by_step/pr_lifecycle.html">Lifecycle of a pull request</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="documentation.html">Helping with documentation</a></li>
<li class="toctree-l2 has-children"><a class="reference internal" href="tutorials/index.html">Tutorials</a><input class="toctree-checkbox" id="toctree-checkbox-3" name="toctree-checkbox-3" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-3"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l3"><a class="reference internal" href="tutorials/python_tutorial.html">Python tutorial</a></li>
<li class="toctree-l3"><a class="reference internal" href="tutorials/r_tutorial.html">R tutorials</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="resources.html">Additional information and resources</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../overview.html">Contributing Overview</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reviewing.html">Reviewing contributions</a></li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../cpp/index.html">C++ Development</a><input class="toctree-checkbox" id="toctree-checkbox-4" name="toctree-checkbox-4" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-4"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../cpp/building.html">Building Arrow C++</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cpp/development.html">Development Guidelines</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cpp/windows.html">Developing on Windows</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cpp/emscripten.html">Cross compiling for WebAssembly with Emscripten</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cpp/conventions.html">Conventions</a></li>
<li class="toctree-l2"><a class="reference internal" href="../cpp/fuzzing.html">Fuzzing Arrow C++</a></li>
</ul>
</li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../java/index.html">Java Development</a><input class="toctree-checkbox" id="toctree-checkbox-5" name="toctree-checkbox-5" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-5"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../java/building.html">Building Arrow Java</a></li>
<li class="toctree-l2"><a class="reference internal" href="../java/development.html">Development Guidelines</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../python.html">Python Development</a></li>
<li class="toctree-l1 has-children"><a class="reference internal" href="../continuous_integration/index.html">Continuous Integration</a><input class="toctree-checkbox" id="toctree-checkbox-6" name="toctree-checkbox-6" type="checkbox"/><label class="toctree-toggle" for="toctree-checkbox-6"><i class="fa-solid fa-chevron-down"></i></label><ul>
<li class="toctree-l2"><a class="reference internal" href="../continuous_integration/overview.html">Continuous Integration</a></li>
<li class="toctree-l2"><a class="reference internal" href="../continuous_integration/docker.html">Running Docker Builds</a></li>
<li class="toctree-l2"><a class="reference internal" href="../continuous_integration/archery.html">Daily Development using Archery</a></li>
<li class="toctree-l2"><a class="reference internal" href="../continuous_integration/crossbow.html">Packaging and Testing with Crossbow</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../benchmarks.html">Benchmarks</a></li>
<li class="toctree-l1"><a class="reference internal" href="../documentation.html">Building the Documentation</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release.html">Release Management Guide</a></li>
<li class="toctree-l1"><a class="reference internal" href="../release_verification.html">Release Verification Process</a></li>
</ul>
</div>
</nav></div>
</div>
<div class="sidebar-primary-items__end sidebar-primary__section">
</div>
<div id="rtd-footer-container"></div>
</div>
<main id="main-content" class="bd-main">
<div class="bd-content">
<div class="bd-article-container">
<div class="bd-header-article">
<div class="header-article-items header-article__inner">
<div class="header-article-items__start">
<div class="header-article-item">
<nav aria-label="Breadcrumb">
<ul class="bd-breadcrumbs">
<li class="breadcrumb-item breadcrumb-home">
<a href="../../index.html" class="nav-link" aria-label="Home">
<i class="fa-solid fa-home"></i>
</a>
</li>
<li class="breadcrumb-item"><a href="../index.html" class="nav-link">Development</a></li>
<li class="breadcrumb-item active" aria-current="page">New...</li>
</ul>
</nav>
</div>
</div>
</div>
</div>
<div id="searchbox"></div>
<article class="bd-article">
<section id="new-contributor-s-guide">
<span id="guide-introduction"></span><h1>New Contributor’s Guide<a class="headerlink" href="#new-contributor-s-guide" title="Permalink to this heading">#</a></h1>
<p>This guide is a resource for contributing to
Apache Arrow for new contributors.</p>
<p>No matter what your current skills are, you can try and make
your first time contribution to Arrow.</p>
<p>Starting to contribute to a project like Apache Arrow can be
intimidating. Taking small steps will make this task
easier.</p>
<section id="why-contribute-to-arrow">
<h2>Why contribute to Arrow?<a class="headerlink" href="#why-contribute-to-arrow" title="Permalink to this heading">#</a></h2>
<p>There can be various reasons why you might want to contribute
to Arrow:</p>
<ul class="simple">
<li><p>You find the project interesting and would like to try making
a contribution to learn more about the library and grow your skills.</p></li>
<li><p>You use Arrow in a project you are working on and you would like
to implement a new feature or fix a bug you encountered.</p></li>
</ul>
<p>Read more about the project in the <a class="reference internal" href="architectural_overview.html#architectural-overview"><span class="std std-ref">Architectural Overview</span></a> section.</p>
<div class="admonition note">
<p class="admonition-title">Note</p>
<p>Contributors at Apache Arrow are following ASF’s
<a class="reference external" href="https://www.apache.org/foundation/policies/conduct.html">Code of Conduct</a>.</p>
</div>
</section>
<section id="quick-reference">
<span id="quick-ref-guide"></span><h2>Quick Reference<a class="headerlink" href="#quick-reference" title="Permalink to this heading">#</a></h2>
<p>Here are the basic steps needed to get set up and contribute to Arrow.
This is meant both as a checklist and also to provide an overall picture of the process.</p>
<p>For complete instructions please follow <a class="reference internal" href="step_by_step/index.html#step-by-step"><span class="std std-ref">Steps in making your first PR</span></a> (a
step-by-step guide) or R and Python <a class="reference internal" href="tutorials/index.html#tutorial-index"><span class="std std-ref">Tutorials</span></a> for an example
of adding a basic feature.</p>
<ol class="arabic">
<li><p><strong>Install and set up Git, and fork the Arrow repository</strong></p>
<p>See detailed instructions on how to <a class="reference internal" href="step_by_step/set_up.html#set-up"><span class="std std-ref">Set up</span></a> Git and fork the
Arrow repository.</p>
</li>
<li><p><strong>Build Arrow</strong></p>
<p>Arrow libraries include a wide range of functionalities and may require
the installation of third-party packages, depending on which build
options and components you enable. The C++ build guide
has suggestions for commonly encountered issues - you can find it
<a class="reference internal" href="../cpp/index.html#cpp-development"><span class="std std-ref">here</span></a>.
Anytime you are stuck, feel free to reach out via
appropriate <a class="reference internal" href="communication.html#communication"><span class="std std-ref">Communication</span></a> channel.</p>
<p>See a short description about the building process of
<a class="reference internal" href="step_by_step/building.html#build-arrow-guide"><span class="std std-ref">PyArrow or the R package</span></a> or go straight to detailed
instructions on how to build one of Arrow libraries in the
<a class="reference external" href="https://arrow.apache.org/docs/">documentation</a> .</p>
</li>
<li><p><strong>Run the tests</strong></p>
<p>We should run the tests to check if everything is working correctly. For example,
you can run the tests from a terminal for Python</p>
<div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>pytest<span class="w"> </span>pyarrow
</pre></div>
</div>
<p>or in R console for R</p>
<div class="highlight-R notranslate"><div class="highlight"><pre><span></span><span class="n">devtools</span><span class="o">::</span><span class="nf">test</span><span class="p">()</span>
</pre></div>
</div>
<p>See also the section on <a class="reference internal" href="step_by_step/testing.html#testing"><span class="std std-ref">Testing 🧪</span></a>.</p>
</li>
<li><p><strong>Find an issue (if needed), create a new branch and work on the problem</strong></p>
<p><strong>Finding an issue</strong></p>
<p>You might already have a bug to fix in mind, or a new feature that you want to
implement. But if you don’t and you need an issue to work on, then you may need
help finding it. Read through the <a class="reference internal" href="step_by_step/finding_issues.html#finding-issues"><span class="std std-ref">Finding good first issues 🔎</span></a> section to get some ideas.</p>
<p><strong>Finding your way through the project</strong></p>
<p>The first step when starting a new project is the hardest and so we’ve
wrote some guides to help you with this.</p>
<p>You can start by reading through <a class="reference internal" href="step_by_step/arrow_codebase.html#arrow-codebase"><span class="std std-ref">Working on the Arrow codebase 🧐</span></a> section.</p>
<p><strong>Communication</strong></p>
<p>Communication is very important. You may need some help solving problems
you encounter on the way (this happens to developers all the time). Also,
if you have a GitHub issue you want to solve, then it is advisable to let the team
know you are working on it and may need some help.</p>
<p>See possible channels of <a class="reference internal" href="communication.html#communication"><span class="std std-ref">Communication</span></a>.</p>
</li>
<li><p><strong>Once you implemented the planned fix or feature, write and run tests for it</strong></p>
<p>See detailed instructions on how to <a class="reference internal" href="step_by_step/testing.html#testing"><span class="std std-ref">test</span></a>. Also run the linter
to make sure the code is <a class="reference internal" href="step_by_step/styling.html#styling"><span class="std std-ref">styled</span></a> correctly before proceeding
to the next step!</p>
</li>
<li><p><strong>Push the branch on your fork and create a Pull Request</strong></p>
<p>See detailed instructions on <a class="reference internal" href="step_by_step/pr_lifecycle.html#create-pr"><span class="std std-ref">Creating a pull request</span></a></p>
</li>
</ol>
<p>If you are ready you can start with building Arrow or choose to follow
one of the <a class="reference internal" href="tutorials/index.html#tutorial-index"><span class="std std-ref">Tutorials</span></a> on writing an R binding or Python feature.</p>
</section>
<section id="different-ways-to-contribute">
<h2>Different ways to contribute<a class="headerlink" href="#different-ways-to-contribute" title="Permalink to this heading">#</a></h2>
<p>There are lots of ways to contribute to the project besides writing code!</p>
<ul class="simple">
<li><p>Improving the <strong>documentation</strong> is a great way to start contributing!
For more information visit <a class="reference internal" href="documentation.html#documentation"><span class="std std-ref">Helping with documentation</span></a> section of the guide.</p></li>
<li><p><strong>Apache Arrow Cookbooks</strong> are a collection of recipes for solving various problems
and completing different tasks using Apache Arrow. They are also a great way to start
contributing. For more information visit
<a class="reference external" href="https://github.com/apache/arrow-cookbook/blob/main/CONTRIBUTING.md">How to contribute to Apache Arrow Cookbook</a>
located in the Apache Arrow Cookbook repository.</p></li>
</ul>
<p>You are also welcome to take a look at <a class="reference internal" href="resources.html#other-resources"><span class="std std-ref">Additional information and resources</span></a> section.</p>
<p><strong>We want to encourage everyone to contribute to Arrow!</strong></p>
</section>
<section id="full-table-of-contents">
<h2>Full Table of Contents<a class="headerlink" href="#full-table-of-contents" title="Permalink to this heading">#</a></h2>
<div class="toctree-wrapper compound">
<ul>
<li class="toctree-l1"><a class="reference internal" href="architectural_overview.html">Architectural Overview</a><ul>
<li class="toctree-l2"><a class="reference internal" href="architectural_overview.html#r-package-architectural-overview">R package Architectural Overview</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="communication.html">Communication</a><ul>
<li class="toctree-l2"><a class="reference internal" href="communication.html#where-to-get-help">Where to get help 👋</a><ul>
<li class="toctree-l3"><a class="reference internal" href="communication.html#github">GitHub</a></li>
<li class="toctree-l3"><a class="reference internal" href="communication.html#mailing-lists">Mailing Lists</a></li>
<li class="toctree-l3"><a class="reference internal" href="communication.html#recommended-learning-resources">Recommended learning resources</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="step_by_step/index.html">Steps in making your first PR</a><ul>
<li class="toctree-l2"><a class="reference internal" href="step_by_step/set_up.html">Set up</a><ul>
<li class="toctree-l3"><a class="reference internal" href="step_by_step/set_up.html#install-and-set-up-git">Install and set up Git</a></li>
<li class="toctree-l3"><a class="reference internal" href="step_by_step/set_up.html#get-the-source-code">Get the source code</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="step_by_step/building.html">Building the Arrow libraries 🏋🏿‍♀️</a><ul>
<li class="toctree-l3"><a class="reference internal" href="step_by_step/building.html#building-arrow-c">Building Arrow C++</a></li>
<li class="toctree-l3"><a class="reference internal" href="step_by_step/building.html#building-other-arrow-libraries">Building other Arrow libraries</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="step_by_step/finding_issues.html">Finding good first issues 🔎</a><ul>
<li class="toctree-l3"><a class="reference internal" href="step_by_step/finding_issues.html#github-labels">GitHub labels</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="step_by_step/arrow_codebase.html">Working on the Arrow codebase 🧐</a><ul>
<li class="toctree-l3"><a class="reference internal" href="step_by_step/arrow_codebase.html#finding-your-way-around-arrow">Finding your way around Arrow</a></li>
<li class="toctree-l3"><a class="reference internal" href="step_by_step/arrow_codebase.html#bindings-features-fixes-and-tests">Bindings, features, fixes and tests</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="step_by_step/testing.html">Testing 🧪</a></li>
<li class="toctree-l2"><a class="reference internal" href="step_by_step/styling.html">Styling 😎</a><ul>
<li class="toctree-l3"><a class="reference internal" href="step_by_step/styling.html#pre-commit">Pre-commit</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="step_by_step/pr_lifecycle.html">Lifecycle of a pull request</a><ul>
<li class="toctree-l3"><a class="reference internal" href="step_by_step/pr_lifecycle.html#creating-a-pull-request">Creating a pull request</a></li>
<li class="toctree-l3"><a class="reference internal" href="step_by_step/pr_lifecycle.html#reviews-and-merge-of-the-pull-request">Reviews and merge of the pull request</a></li>
<li class="toctree-l3"><a class="reference internal" href="step_by_step/pr_lifecycle.html#congratulations">Congratulations! 🎉</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="documentation.html">Helping with documentation</a><ul>
<li class="toctree-l2"><a class="reference internal" href="documentation.html#where-to-find-the-correct-file-to-change">Where to find the correct file to change?</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="tutorials/index.html">Tutorials</a><ul>
<li class="toctree-l2"><a class="reference internal" href="tutorials/python_tutorial.html">Python tutorial</a><ul>
<li class="toctree-l3"><a class="reference internal" href="tutorials/python_tutorial.html#set-up">Set up</a></li>
<li class="toctree-l3"><a class="reference internal" href="tutorials/python_tutorial.html#building-pyarrow">Building PyArrow</a></li>
<li class="toctree-l3"><a class="reference internal" href="tutorials/python_tutorial.html#create-a-github-issue-for-the-new-feature">Create a GitHub issue for the new feature</a></li>
<li class="toctree-l3"><a class="reference internal" href="tutorials/python_tutorial.html#start-the-work-on-a-new-branch">Start the work on a new branch</a></li>
<li class="toctree-l3"><a class="reference internal" href="tutorials/python_tutorial.html#adding-a-test">Adding a test</a></li>
<li class="toctree-l3"><a class="reference internal" href="tutorials/python_tutorial.html#check-styling">Check styling</a></li>
<li class="toctree-l3"><a class="reference internal" href="tutorials/python_tutorial.html#creating-a-pull-request">Creating a Pull Request</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="tutorials/r_tutorial.html">R tutorials</a><ul>
<li class="toctree-l3"><a class="reference internal" href="tutorials/r_tutorial.html#writing-bindings-walkthrough">Writing Bindings Walkthrough</a></li>
<li class="toctree-l3"><a class="reference internal" href="tutorials/r_tutorial.html#r-tutorial-on-adding-a-lubridate-binding">R tutorial on adding a lubridate binding</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="resources.html">Additional information and resources</a><ul>
<li class="toctree-l2"><a class="reference internal" href="resources.html#glossary">Glossary</a></li>
<li class="toctree-l2"><a class="reference internal" href="resources.html#additional-information">Additional information</a></li>
<li class="toctree-l2"><a class="reference internal" href="resources.html#id1">Other resources</a></li>
<li class="toctree-l2"><a class="reference internal" href="resources.html#recommended-references">Recommended references</a></li>
</ul>
</li>
</ul>
</div>
</section>
</section>
</article>
<footer class="prev-next-footer">
<div class="prev-next-area">
<a class="left-prev"
href="../bug_reports.html"
title="previous page">
<i class="fa-solid fa-angle-left"></i>
<div class="prev-next-info">
<p class="prev-next-subtitle">previous</p>
<p class="prev-next-title">Bug reports and feature requests</p>
</div>
</a>
<a class="right-next"
href="architectural_overview.html"
title="next page">
<div class="prev-next-info">
<p class="prev-next-subtitle">next</p>
<p class="prev-next-title">Architectural Overview</p>
</div>
<i class="fa-solid fa-angle-right"></i>
</a>
</div>
</footer>
</div>
<div class="bd-sidebar-secondary bd-toc"><div class="sidebar-secondary-items sidebar-secondary__inner">
<div class="sidebar-secondary-item">
<div
id="pst-page-navigation-heading-2"
class="page-toc tocsection onthispage">
<i class="fa-solid fa-list"></i> On this page
</div>
<nav class="bd-toc-nav page-toc" aria-labelledby="pst-page-navigation-heading-2">
<ul class="visible nav section-nav flex-column">
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#why-contribute-to-arrow">Why contribute to Arrow?</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#quick-reference">Quick Reference</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#different-ways-to-contribute">Different ways to contribute</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#full-table-of-contents">Full Table of Contents</a></li>
</ul>
</nav></div>
<div class="sidebar-secondary-item">
<div class="tocsection editthispage">
<a href="https://github.com/apache/arrow/edit/main/docs/source/developers/guide/index.rst">
<i class="fa-solid fa-pencil"></i>
Edit on GitHub
</a>
</div>
</div>
</div></div>
</div>
<footer class="bd-footer-content">
</footer>
</main>
</div>
</div>
<!-- Scripts loaded after <body> so the DOM is not blocked -->
<script src="../../_static/scripts/bootstrap.js?digest=8d27b9dea8ad943066ae"></script>
<script src="../../_static/scripts/pydata-sphinx-theme.js?digest=8d27b9dea8ad943066ae"></script>
<footer class="bd-footer">
<div class="bd-footer__inner bd-page-width">
<div class="footer-items__start">
<div class="footer-item">
<p class="copyright">
© Copyright 2016-2024 Apache Software Foundation.
Apache Arrow, Arrow, Apache, the Apache feather logo, and the Apache Arrow project logo are either registered trademarks or trademarks of The Apache Software Foundation in the United States and other countries.
<br/>
</p>
</div>
<div class="footer-item">
<p class="sphinx-version">
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 6.2.0.
<br/>
</p>
</div>
</div>
<div class="footer-items__end">
<div class="footer-item">
<p class="theme-version">
Built with the <a href="https://pydata-sphinx-theme.readthedocs.io/en/stable/index.html">PyData Sphinx Theme</a> 0.15.2.
</p></div>
</div>
</div>
</footer>
</body>
</html>