blob: 434d6aaac6be511442460107e4fa7fc77195e2f7 [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>Release Management Guide &#8212; Apache Arrow v17.0.0.dev52</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/release';</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/release.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="Release Verification Process" href="release_verification.html" />
<link rel="prev" title="Building the Documentation" href="documentation.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.dev52 - Home"/>
<script>document.write(`<img src="../_static/arrow-dark.png" class="logo__image only-dark" alt="Apache Arrow v17.0.0.dev52 - 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 has-children"><a class="reference internal" href="guide/index.html">New Contributor’s Guide</a><input 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="guide/architectural_overview.html">Architectural Overview</a></li>
<li class="toctree-l2"><a class="reference internal" href="guide/communication.html">Communication</a></li>
<li class="toctree-l2 has-children"><a class="reference internal" href="guide/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="guide/step_by_step/set_up.html">Set up</a></li>
<li class="toctree-l3"><a class="reference internal" href="guide/step_by_step/building.html">Building the Arrow libraries 🏋🏿‍♀️</a></li>
<li class="toctree-l3"><a class="reference internal" href="guide/step_by_step/finding_issues.html">Finding good first issues 🔎</a></li>
<li class="toctree-l3"><a class="reference internal" href="guide/step_by_step/arrow_codebase.html">Working on the Arrow codebase 🧐</a></li>
<li class="toctree-l3"><a class="reference internal" href="guide/step_by_step/testing.html">Testing 🧪</a></li>
<li class="toctree-l3"><a class="reference internal" href="guide/step_by_step/styling.html">Styling 😎</a></li>
<li class="toctree-l3"><a class="reference internal" href="guide/step_by_step/pr_lifecycle.html">Lifecycle of a pull request</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="guide/documentation.html">Helping with documentation</a></li>
<li class="toctree-l2 has-children"><a class="reference internal" href="guide/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="guide/tutorials/python_tutorial.html">Python tutorial</a></li>
<li class="toctree-l3"><a class="reference internal" href="guide/tutorials/r_tutorial.html">R tutorials</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="guide/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 current active"><a class="current reference internal" href="#">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">Release...</li>
</ul>
</nav>
</div>
</div>
</div>
</div>
<div id="searchbox"></div>
<article class="bd-article">
<section id="release-management-guide">
<span id="release"></span><h1>Release Management Guide<a class="headerlink" href="#release-management-guide" title="Permalink to this heading">#</a></h1>
<p>This page provides detailed information on the steps followed to perform
a release. It can be used both as a guide to learn the Apache Arrow release
process and as a comprehensive checklist for the Release Manager when
performing a release.</p>
<section id="principles">
<h2>Principles<a class="headerlink" href="#principles" title="Permalink to this heading">#</a></h2>
<p>The Apache Arrow Release follows the guidelines defined at the
<a class="reference external" href="https://www.apache.org/legal/release-policy.html">Apache Software Foundation Release Policy</a>.</p>
</section>
<section id="preparing-for-the-release">
<h2>Preparing for the release<a class="headerlink" href="#preparing-for-the-release" title="Permalink to this heading">#</a></h2>
<p>Before creating a source release, the Release Manager must ensure that any
resolved JIRAs have the appropriate Fix Version set so that the changelog is
generated properly.</p>
<details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Requirements<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<blockquote>
<div><p class="sd-card-text">Some steps of the release require being a committer or a PMC member.</p>
<ul class="simple">
<li><p class="sd-card-text">Install the <a class="reference internal" href="continuous_integration/archery.html#archery"><span class="std std-ref">Archery</span></a> utility which is required for the release.</p></li>
<li><p class="sd-card-text">You must not have any arrow-cpp or parquet-cpp environment variables defined except CC or CXX if you want to build with something other than GCC by default (e.g. clang).</p></li>
<li><p class="sd-card-text">A GPG key in the Apache Web of Trust to sign artifacts. This will have to be cross signed by other Apache committers/PMC members. If you have multiple GPG keys, you must set the correct GPG key ID in <code class="docutils literal notranslate"><span class="pre">~/.gnupg/gpg.conf</span></code> by adding:</p></li>
</ul>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span>default-key ${YOUR_GPG_KEY_ID}
</pre></div>
</div>
<ul class="simple">
<li><p class="sd-card-text">The GPG key needs to be added to this <a class="reference external" href="https://dist.apache.org/repos/dist/dev/arrow/">SVN repo</a> and <a class="reference external" href="https://dist.apache.org/repos/dist/release/arrow/">this one</a>.</p></li>
<li><p class="sd-card-text">Configure Maven to <a class="reference external" href="http://www.apache.org/dev/publishing-maven-artifacts.html">publish artifacts to Apache repositories</a>. You will need to <a class="reference external" href="https://maven.apache.org/guides/mini/guide-encryption.html">setup a master password</a> at <code class="docutils literal notranslate"><span class="pre">~/.m2/settings-security.xml</span></code> and <code class="docutils literal notranslate"><span class="pre">settings.xml</span></code> as specified on the <a class="reference external" href="http://www.apache.org/dev/publishing-maven-artifacts.html#dev-env">Apache guide</a>. It can be tested with the following command:</p></li>
</ul>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># You might need to export GPG_TTY=$(tty) to properly prompt for a passphrase</span>
<span class="n">mvn</span> <span class="n">clean</span> <span class="n">install</span> <span class="o">-</span><span class="n">Papache</span><span class="o">-</span><span class="n">release</span>
</pre></div>
</div>
<ul class="simple">
<li><p class="sd-card-text">Have the build requirements for cpp and c_glib installed.</p></li>
<li><p class="sd-card-text">Set the <code class="docutils literal notranslate"><span class="pre">CROSSBOW_GITHUB_TOKEN</span></code> environment variable to automatically create the verify release Pull Request.</p></li>
<li><p class="sd-card-text">Install <code class="docutils literal notranslate"><span class="pre">en_US.UTF-8</span></code> locale. You can confirm available locales by <code class="docutils literal notranslate"><span class="pre">locale</span> <span class="pre">-a</span></code>.</p></li>
<li><p class="sd-card-text">Install Python 3 as python</p></li>
<li><p class="sd-card-text">Create dev/release/.env from dev/release/.env.example. See the comments in dev/release/.env.example how to set each variable.</p></li>
<li><p class="sd-card-text">Setup <a class="reference internal" href="continuous_integration/crossbow.html#crossbow"><span class="std std-ref">Crossbow</span></a> as defined.</p></li>
<li><p class="sd-card-text">Have Docker and docker-compose installed.</p></li>
</ul>
</div></blockquote>
</div>
</details></section>
<section id="before-creating-a-release-candidate">
<h2>Before creating a Release Candidate<a class="headerlink" href="#before-creating-a-release-candidate" title="Permalink to this heading">#</a></h2>
<p>Ensure local tags are removed, gpg-agent is set and JIRA tickets are correctly assigned.</p>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Delete the local tag for RC1 or later</span>
<span class="n">git</span> <span class="n">tag</span> <span class="o">-</span><span class="n">d</span> <span class="n">apache</span><span class="o">-</span><span class="n">arrow</span><span class="o">-&lt;</span><span class="n">version</span><span class="o">&gt;</span>
<span class="c1"># Setup gpg agent for signing artifacts</span>
<span class="n">source</span> <span class="n">dev</span><span class="o">/</span><span class="n">release</span><span class="o">/</span><span class="n">setup</span><span class="o">-</span><span class="n">gpg</span><span class="o">-</span><span class="n">agent</span><span class="o">.</span><span class="n">sh</span>
<span class="c1"># Curate the release</span>
<span class="c1"># The end of the generated report shows the JIRA tickets with wrong version number assigned.</span>
<span class="n">archery</span> <span class="n">release</span> <span class="n">curate</span> <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span>
</pre></div>
</div>
<p>Ensure a major version milestone for a follow up release is created on GitHub. This will
automatically be used by our merge script as the new version for issues closed when
the maintenance branch is created.</p>
</section>
<section id="patch-releases">
<h2>Patch Releases<a class="headerlink" href="#patch-releases" title="Permalink to this heading">#</a></h2>
<p>We usually create patch releases once a major breaking issue has been identified.
Issues that are identified as major breaking issues can be security fixes, broken packages
for specific builds and others.</p>
<p>Any developer can ask for a patch release to be generated sending an email to the
<a class="reference external" href="https://arrow.apache.org/community/">Arrow development mailing-list</a> with the reason
of why a new release is necessary.
If there is consensus and there is a Release Manager willing to take the effort to create
the release a patch release can be created.</p>
<p>Committers can tag issues that should be included on the next patch release using the
<cite>backport-candidate</cite> label. Is the responsability of the author or the committer to add the
label to the issue to help the Release Manager identify the issues that should be backported.</p>
<p>If a specific issue is identified as the reason to create a patch release the Release Manager
should validate that, at least, this issue is correctly tagged and included in the patch release.</p>
<p>Be sure to go through on the following checklist:</p>
<ol class="arabic simple">
<li><p>Create milestone</p></li>
<li><p>Create maintenance branch</p></li>
<li><p>Include issue that was requested as requiring new patch release</p></li>
<li><p>Add new milestone to issues with <cite>backport-candidate</cite> label</p></li>
<li><p>cherry-pick issues into maintenance branch</p></li>
</ol>
</section>
<section id="creating-a-release-candidate">
<h2>Creating a Release Candidate<a class="headerlink" href="#creating-a-release-candidate" title="Permalink to this heading">#</a></h2>
<p>These are the different steps that are required to create a Release Candidate.</p>
<p>For the initial Release Candidate on a major release, we will create a maintenance
branch from main.</p>
<p>Follow up Release Candidates will update the maintenance branch by cherry-picking
specific commits.</p>
<p>For the initial Release Candidate for a minor or a patch release we will create
a maintenance branch from the previous corresponding release. For example,
for a 15.0.1 patch we will create a maint-15.0.1 branch from maint-15.0.0 and for
a maint-15.0.2 we will create it from maint-15.0.1. Once the maintenance branch is
created we will update the created maintenance branch by cherry-picking specific
commits.</p>
<p>We have implemented a Feature Freeze policy between Release Candidates.
This means that, in general, we should only add bug fixes between Release Candidates.
In rare cases, critical features can be added between Release Candidates, if
there is community consensus.</p>
<section id="create-or-update-the-corresponding-maintenance-branch">
<h3>Create or update the corresponding maintenance branch<a class="headerlink" href="#create-or-update-the-corresponding-maintenance-branch" title="Permalink to this heading">#</a></h3>
<div class="sd-tab-set docutils">
<input checked="checked" id="sd-tab-item-0" name="sd-tab-set-0" type="radio">
</input><label class="sd-tab-label" for="sd-tab-item-0">
Initial Release Candidate</label><div class="sd-tab-content docutils">
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Execute the following from an up to date main branch.</span>
<span class="c1"># This will create a branch locally called maint-X.Y.Z.</span>
<span class="c1"># X.Y.Z corresponds with the Major, Minor and Patch version number</span>
<span class="c1"># of the release respectively. As an example 9.0.0</span>
<span class="n">archery</span> <span class="n">release</span> <span class="o">--</span><span class="n">jira</span><span class="o">-</span><span class="n">cache</span> <span class="o">/</span><span class="n">tmp</span><span class="o">/</span><span class="n">jiracache</span> <span class="n">cherry</span><span class="o">-</span><span class="n">pick</span> <span class="n">X</span><span class="o">.</span><span class="n">Y</span><span class="o">.</span><span class="n">Z</span> <span class="o">--</span><span class="n">execute</span>
<span class="c1"># Push the maintenance branch to the remote repository</span>
<span class="n">git</span> <span class="n">push</span> <span class="o">-</span><span class="n">u</span> <span class="n">apache</span> <span class="n">maint</span><span class="o">-</span><span class="n">X</span><span class="o">.</span><span class="n">Y</span><span class="o">.</span><span class="n">Z</span>
</pre></div>
</div>
</div>
<input id="sd-tab-item-1" name="sd-tab-set-0" type="radio">
</input><label class="sd-tab-label" for="sd-tab-item-1">
Follow up Release Candidates</label><div class="sd-tab-content docutils">
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># First run in dry-mode to see which commits will be cherry-picked.</span>
<span class="c1"># If there are commits that we don&#39;t want to get applied ensure the version on</span>
<span class="c1"># JIRA is set to the following release.</span>
<span class="n">archery</span> <span class="n">release</span> <span class="o">--</span><span class="n">jira</span><span class="o">-</span><span class="n">cache</span> <span class="o">/</span><span class="n">tmp</span><span class="o">/</span><span class="n">jiracache</span> <span class="n">cherry</span><span class="o">-</span><span class="n">pick</span> <span class="n">X</span><span class="o">.</span><span class="n">Y</span><span class="o">.</span><span class="n">Z</span> <span class="o">--</span><span class="k">continue</span>
<span class="c1"># Update the maintenance branch with the previous commits</span>
<span class="n">archery</span> <span class="n">release</span> <span class="o">--</span><span class="n">jira</span><span class="o">-</span><span class="n">cache</span> <span class="o">/</span><span class="n">tmp</span><span class="o">/</span><span class="n">jiracache</span> <span class="n">cherry</span><span class="o">-</span><span class="n">pick</span> <span class="n">X</span><span class="o">.</span><span class="n">Y</span><span class="o">.</span><span class="n">Z</span> <span class="o">--</span><span class="k">continue</span> <span class="o">--</span><span class="n">execute</span>
<span class="c1"># Push the updated maintenance branch to the remote repository</span>
<span class="n">git</span> <span class="n">push</span> <span class="o">-</span><span class="n">u</span> <span class="n">apache</span> <span class="n">maint</span><span class="o">-</span><span class="n">X</span><span class="o">.</span><span class="n">Y</span><span class="o">.</span><span class="n">Z</span>
</pre></div>
</div>
</div>
</div>
</section>
<section id="create-the-release-candidate-branch-from-the-updated-maintenance-branch">
<h3>Create the Release Candidate branch from the updated maintenance branch<a class="headerlink" href="#create-the-release-candidate-branch-from-the-updated-maintenance-branch" title="Permalink to this heading">#</a></h3>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Start from the updated maintenance branch.</span>
<span class="n">git</span> <span class="n">checkout</span> <span class="n">maint</span><span class="o">-</span><span class="n">X</span><span class="o">.</span><span class="n">Y</span><span class="o">.</span><span class="n">Z</span>
<span class="c1"># The following script will create a branch for the Release Candidate,</span>
<span class="c1"># place the necessary commits updating the version number and then create a git tag</span>
<span class="c1"># on OSX use gnu-sed with homebrew: brew install gnu-sed (and export to $PATH)</span>
<span class="c1">#</span>
<span class="c1"># &lt;rc-number&gt; starts at 0 and increments every time the Release Candidate is burned</span>
<span class="c1"># so for the first RC this would be: dev/release/01-prepare.sh 4.0.0 5.0.0 0</span>
<span class="n">dev</span><span class="o">/</span><span class="n">release</span><span class="o">/</span><span class="mi">01</span><span class="o">-</span><span class="n">prepare</span><span class="o">.</span><span class="n">sh</span> <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="nb">next</span><span class="o">-</span><span class="n">version</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">rc</span><span class="o">-</span><span class="n">number</span><span class="o">&gt;</span>
<span class="c1"># Push the release tag (for RC1 or later the --force flag is required)</span>
<span class="n">git</span> <span class="n">push</span> <span class="o">-</span><span class="n">u</span> <span class="n">apache</span> <span class="n">apache</span><span class="o">-</span><span class="n">arrow</span><span class="o">-&lt;</span><span class="n">version</span><span class="o">&gt;</span>
<span class="c1"># Push the release candidate branch in order to trigger verification jobs later</span>
<span class="n">git</span> <span class="n">push</span> <span class="o">-</span><span class="n">u</span> <span class="n">apache</span> <span class="n">release</span><span class="o">-&lt;</span><span class="n">version</span><span class="o">&gt;-</span><span class="n">rc</span><span class="o">&lt;</span><span class="n">rc</span><span class="o">-</span><span class="n">number</span><span class="o">&gt;</span>
</pre></div>
</div>
</section>
<section id="build-source-and-binaries-and-submit-them">
<h3>Build source and binaries and submit them<a class="headerlink" href="#build-source-and-binaries-and-submit-them" title="Permalink to this heading">#</a></h3>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Build the source release tarball and create Pull Request with verification tasks</span>
<span class="n">dev</span><span class="o">/</span><span class="n">release</span><span class="o">/</span><span class="mi">02</span><span class="o">-</span><span class="n">source</span><span class="o">.</span><span class="n">sh</span> <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">rc</span><span class="o">-</span><span class="n">number</span><span class="o">&gt;</span>
<span class="c1"># Submit binary tasks using crossbow, the command will output the crossbow build id</span>
<span class="n">dev</span><span class="o">/</span><span class="n">release</span><span class="o">/</span><span class="mi">03</span><span class="o">-</span><span class="n">binary</span><span class="o">-</span><span class="n">submit</span><span class="o">.</span><span class="n">sh</span> <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">rc</span><span class="o">-</span><span class="n">number</span><span class="o">&gt;</span>
<span class="c1"># Wait for the crossbow jobs to finish</span>
<span class="n">archery</span> <span class="n">crossbow</span> <span class="n">status</span> <span class="o">&lt;</span><span class="n">crossbow</span><span class="o">-</span><span class="n">build</span><span class="o">-</span><span class="nb">id</span><span class="o">&gt;</span>
<span class="c1"># Download the produced binaries</span>
<span class="c1"># This will download packages to a directory called packages/release-&lt;version&gt;-rc&lt;rc-number&gt;</span>
<span class="n">dev</span><span class="o">/</span><span class="n">release</span><span class="o">/</span><span class="mi">04</span><span class="o">-</span><span class="n">binary</span><span class="o">-</span><span class="n">download</span><span class="o">.</span><span class="n">sh</span> <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">rc</span><span class="o">-</span><span class="n">number</span><span class="o">&gt;</span>
<span class="c1"># Sign and upload the binaries</span>
<span class="c1">#</span>
<span class="c1"># On macOS the only way I could get this to work was running &quot;echo &quot;UPDATESTARTUPTTY&quot; | gpg-connect-agent&quot; before running this comment</span>
<span class="c1"># otherwise I got errors referencing &quot;ioctl&quot; errors.</span>
<span class="n">dev</span><span class="o">/</span><span class="n">release</span><span class="o">/</span><span class="mi">05</span><span class="o">-</span><span class="n">binary</span><span class="o">-</span><span class="n">upload</span><span class="o">.</span><span class="n">sh</span> <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">rc</span><span class="o">-</span><span class="n">number</span><span class="o">&gt;</span>
<span class="c1"># Sign and upload the Java artifacts</span>
<span class="c1">#</span>
<span class="c1"># Note that you need to press the &quot;Close&quot; button manually by Web interface</span>
<span class="c1"># after you complete the script:</span>
<span class="c1"># https://repository.apache.org/#stagingRepositories</span>
<span class="n">dev</span><span class="o">/</span><span class="n">release</span><span class="o">/</span><span class="mi">06</span><span class="o">-</span><span class="n">java</span><span class="o">-</span><span class="n">upload</span><span class="o">.</span><span class="n">sh</span> <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">rc</span><span class="o">-</span><span class="n">number</span><span class="o">&gt;</span>
<span class="c1"># Start verifications for binaries and wheels</span>
<span class="n">dev</span><span class="o">/</span><span class="n">release</span><span class="o">/</span><span class="mi">07</span><span class="o">-</span><span class="n">binary</span><span class="o">-</span><span class="n">verify</span><span class="o">.</span><span class="n">sh</span> <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">rc</span><span class="o">-</span><span class="n">number</span><span class="o">&gt;</span>
</pre></div>
</div>
</section>
<section id="verify-the-release">
<h3>Verify the Release<a class="headerlink" href="#verify-the-release" title="Permalink to this heading">#</a></h3>
<div class="highlight-default notranslate"><div class="highlight"><pre><span></span><span class="c1"># Once the automatic verification has passed start the vote thread</span>
<span class="c1"># on dev@arrow.apache.org. To regenerate the email template use</span>
<span class="n">SOURCE_DEFAULT</span><span class="o">=</span><span class="mi">0</span> <span class="n">SOURCE_VOTE</span><span class="o">=</span><span class="mi">1</span> <span class="n">dev</span><span class="o">/</span><span class="n">release</span><span class="o">/</span><span class="mi">02</span><span class="o">-</span><span class="n">source</span><span class="o">.</span><span class="n">sh</span> <span class="o">&lt;</span><span class="n">version</span><span class="o">&gt;</span> <span class="o">&lt;</span><span class="n">rc</span><span class="o">-</span><span class="n">number</span><span class="o">&gt;</span>
</pre></div>
</div>
<p>See <a class="reference internal" href="release_verification.html#release-verification"><span class="std std-ref">Release Verification Process</span></a> for details.</p>
</section>
</section>
<section id="voting-and-approval">
<h2>Voting and approval<a class="headerlink" href="#voting-and-approval" title="Permalink to this heading">#</a></h2>
<p>Start the vote thread on <a class="reference external" href="mailto:dev&#37;&#52;&#48;arrow&#46;apache&#46;org">dev<span>&#64;</span>arrow<span>&#46;</span>apache<span>&#46;</span>org</a> and supply instructions for verifying the integrity of the release.
Approval requires a net of 3 +1 votes from PMC members. A release cannot be vetoed.</p>
</section>
<section id="post-release-tasks">
<h2>Post-release tasks<a class="headerlink" href="#post-release-tasks" title="Permalink to this heading">#</a></h2>
<p>After the release vote, we must undertake many tasks to update source artifacts, binary builds, and the Arrow website.</p>
<p>Be sure to go through on the following checklist:</p>
<ol class="arabic simple">
<li><p>Update the released milestone Date and set to “Closed” on GitHub</p></li>
<li><p>Make the CPP PARQUET related version as “RELEASED” on JIRA</p></li>
<li><p>Start the new version on JIRA for the related CPP PARQUET version</p></li>
<li><p>Merge changes on release branch to maintenance branch for patch releases</p></li>
<li><p>Add the new release to the Apache Reporter System</p></li>
<li><p>Upload source</p></li>
<li><p>Upload binaries</p></li>
<li><p>Update website</p></li>
<li><p>Update Homebrew packages</p></li>
<li><p>Update MSYS2 package</p></li>
<li><p>Upload RubyGems</p></li>
<li><p>Upload JavaScript packages</p></li>
<li><p>Upload C# packages</p></li>
<li><p>Update conda recipes</p></li>
<li><p>Upload wheels/sdist to pypi</p></li>
<li><p>Publish Maven artifacts</p></li>
<li><p>Update R packages</p></li>
<li><p>Update vcpkg port</p></li>
<li><p>Update Conan recipe</p></li>
<li><p>Bump versions</p></li>
<li><p>Update tags for Go modules</p></li>
<li><p>Update docs</p></li>
<li><p>Update version in Apache Arrow Cookbook</p></li>
<li><p>Announce the new release</p></li>
<li><p>Publish release blog posts</p></li>
<li><p>Announce the release on Twitter</p></li>
<li><p>Remove old artifacts</p></li>
</ol>
<details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Mark the released version as “RELEASED” on JIRA<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<ul class="simple">
<li><p class="sd-card-text">Open <a class="reference external" href="https://issues.apache.org/jira/plugins/servlet/project-config/ARROW/administer-versions">https://issues.apache.org/jira/plugins/servlet/project-config/ARROW/administer-versions</a></p></li>
<li><p class="sd-card-text">Click “…” for the release version in “Actions” column</p></li>
<li><p class="sd-card-text">Select “Release”</p></li>
<li><p class="sd-card-text">Set “Release date”</p></li>
<li><p class="sd-card-text">Click “Release” button</p></li>
</ul>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Start the new version on JIRA<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<ul class="simple">
<li><p class="sd-card-text">Open <a class="reference external" href="https://issues.apache.org/jira/plugins/servlet/project-config/ARROW/administer-versions">https://issues.apache.org/jira/plugins/servlet/project-config/ARROW/administer-versions</a></p></li>
<li><p class="sd-card-text">Click “…” for the next version in “Actions” column</p></li>
<li><p class="sd-card-text">Select “Edit”</p></li>
<li><p class="sd-card-text">Set “Start date”</p></li>
<li><p class="sd-card-text">Click “Save” button</p></li>
</ul>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Merge changes on release branch to maintenance branch for patch releases<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">Merge <code class="docutils literal notranslate"><span class="pre">release-X.Y.Z-rcN</span></code> to <code class="docutils literal notranslate"><span class="pre">maint-X.Y.Z</span></code>:</p>
<div class="highlight-Bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># git checkout maint-10.0.0</span>
git<span class="w"> </span>checkout<span class="w"> </span>maint-X.Y.Z
<span class="c1"># git merge release-10.0.0-rc0</span>
git<span class="w"> </span>merge<span class="w"> </span>release-X.Y.Z-rcN
<span class="c1"># git push -u apache maint-10.0.0</span>
git<span class="w"> </span>push<span class="w"> </span>-u<span class="w"> </span>apache<span class="w"> </span>maint-X.Y.Z
</pre></div>
</div>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Add the new release to the Apache Reporter System<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">Add relevant release data for Arrow to <a class="reference external" href="https://reporter.apache.org/addrelease.html?arrow">Apache reporter</a>.</p>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Upload source release artifacts to Subversion<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">A PMC member must commit the source release artifacts to Subversion:</p>
<div class="highlight-Bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># dev/release/post-01-upload.sh 0.1.0 0</span>
dev/release/post-01-upload.sh<span class="w"> </span>&lt;version&gt;<span class="w"> </span>&lt;rc&gt;
</pre></div>
</div>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Upload binary release artifacts to Artifactory<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">A committer must upload the binary release artifacts to Artifactory:</p>
<div class="highlight-Bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># dev/release/post-02-binary.sh 0.1.0 0</span>
dev/release/post-02-binary.sh<span class="w"> </span>&lt;version&gt;<span class="w"> </span>&lt;rc<span class="w"> </span>number&gt;
</pre></div>
</div>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Update website<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">Add a release note for the new version to our website and update the latest release information:</p>
<div class="highlight-Bash notranslate"><div class="highlight"><pre><span></span><span class="c1">## Prepare your fork of https://github.com/apache/arrow-site .</span>
<span class="c1">## You need to do this only once.</span>
<span class="c1"># git clone git@github.com:kou/arrow-site.git ../</span>
git<span class="w"> </span>clone<span class="w"> </span>git@github.com:&lt;YOUR_GITHUB_ID&gt;/arrow-site.git<span class="w"> </span>../
<span class="nb">cd</span><span class="w"> </span>../arrow-site
<span class="c1">## Add git@github.com:apache/arrow-site.git as &quot;apache&quot; remote.</span>
git<span class="w"> </span>remote<span class="w"> </span>add<span class="w"> </span>apache<span class="w"> </span>git@github.com:apache/arrow-site.git
<span class="nb">cd</span><span class="w"> </span>-
<span class="c1">## Generate a release note for the new version, update the</span>
<span class="c1">## latest release information automatically.</span>
<span class="c1"># dev/release/post-03-website.sh 9.0.0 10.0.0</span>
dev/release/post-03-website.sh<span class="w"> </span>OLD_X.OLD_Y.OLD_Z<span class="w"> </span>X.Y.Z
</pre></div>
</div>
<p class="sd-card-text">This script pushes a <code class="docutils literal notranslate"><span class="pre">release-note-X.Y.Z</span></code> branch to your <code class="docutils literal notranslate"><span class="pre">apache/arrow-site</span></code> fork. You need to open a pull request from the <code class="docutils literal notranslate"><span class="pre">release-note-X.Y.Z</span></code> branch on your Web browser.</p>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Update Homebrew packages<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">Open a pull request to Homebrew:</p>
<div class="highlight-Bash notranslate"><div class="highlight"><pre><span></span><span class="c1">## You need to run this on macOS or Linux that Homebrew is installed.</span>
<span class="c1">## Fork https://github.com/Homebrew/homebrew-core on GitHub.</span>
<span class="c1">## You need to do this only once.</span>
<span class="c1">##</span>
<span class="c1">## Prepare your fork of https://github.com/Homebrew/homebrew-core .</span>
<span class="c1">## You need to do this only once.</span>
<span class="nb">cd</span><span class="w"> </span><span class="s2">&quot;</span><span class="k">$(</span>brew<span class="w"> </span>--repository<span class="w"> </span>homebrew/core<span class="k">)</span><span class="s2">&quot;</span>
<span class="c1"># git remote add kou git@github.com:kou/homebrew-core.git</span>
git<span class="w"> </span>remote<span class="w"> </span>add<span class="w"> </span>&lt;YOUR_GITHUB_ID&gt;<span class="w"> </span>git@github.com:&lt;YOUR_GITHUB_ID&gt;/homebrew-core.git
<span class="nb">cd</span><span class="w"> </span>-
<span class="c1"># dev/release/post-13-homebrew.sh 10.0.0 kou</span>
dev/release/post-13-homebrew.sh<span class="w"> </span>X.Y.Z<span class="w"> </span>&lt;YOUR_GITHUB_ID&gt;
</pre></div>
</div>
<p class="sd-card-text">This script pushes a <code class="docutils literal notranslate"><span class="pre">apache-arrow-X.Y.Z</span></code> branch to your <code class="docutils literal notranslate"><span class="pre">Homebrew/homebrew-core</span></code> fork. You need to create a pull request from the <code class="docutils literal notranslate"><span class="pre">apache-arrow-X.Y.Z</span></code> branch with <code class="docutils literal notranslate"><span class="pre">apache-arrow,</span> <span class="pre">apache-arrow-glib:</span> <span class="pre">X.Y.Z</span></code> title on your Web browser.</p>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Update MSYS2 packages<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">Open a pull request to MSYS2:</p>
<div class="highlight-Bash notranslate"><div class="highlight"><pre><span></span><span class="c1">## Fork https://github.com/msys2/MINGW-packages on GitHub.</span>
<span class="c1">## You need to do this only once.</span>
<span class="c1">##</span>
<span class="c1">## Prepare your fork of https://github.com/msys2/MINGW-packages .</span>
<span class="c1">## You need to do this only once.</span>
<span class="c1"># git clone git@github.com:kou/MINGW-packages.git ../</span>
git<span class="w"> </span>clone<span class="w"> </span>git@github.com:&lt;YOUR_GITHUB_ID&gt;/MINGW-packages.git<span class="w"> </span>../
<span class="nb">cd</span><span class="w"> </span>../MINGW-packages
<span class="c1">## Add https://github.com/msys2/MINGW-packages.git as &quot;upstream&quot; remote.</span>
git<span class="w"> </span>remote<span class="w"> </span>add<span class="w"> </span>upstream<span class="w"> </span>https://github.com/msys2/MINGW-packages.git
<span class="nb">cd</span><span class="w"> </span>-
<span class="c1"># dev/release/post-12-msys2.sh 10.0.0 ../MINGW-packages</span>
dev/release/post-12-msys2.sh<span class="w"> </span>X.Y.Z<span class="w"> </span>&lt;YOUR_MINGW_PACKAGES_FORK&gt;
</pre></div>
</div>
<p class="sd-card-text">This script pushes a <code class="docutils literal notranslate"><span class="pre">arrow-X.Y.Z</span></code> branch to your <code class="docutils literal notranslate"><span class="pre">msys2/MINGW-packages</span></code> fork. You need to create a pull request from the <code class="docutils literal notranslate"><span class="pre">arrow-X.Y.Z</span></code> branch with <code class="docutils literal notranslate"><span class="pre">arrow:</span> <span class="pre">Update</span> <span class="pre">to</span> <span class="pre">X.Y.Z</span></code> title on your Web browser.</p>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Update RubyGems<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">You need an account on <a class="reference external" href="https://rubygems.org/">https://rubygems.org/</a> to release Ruby packages.</p>
<p class="sd-card-text">If you have an account on <a class="reference external" href="https://rubygems.org/">https://rubygems.org/</a> , you need to join owners of our gems.</p>
<p class="sd-card-text">Existing owners can add a new account to the owners of them by the following command line:</p>
<div class="highlight-Bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># dev/release/account-ruby.sh raulcd</span>
dev/release/account-ruby.sh<span class="w"> </span>NEW_ACCOUNT
</pre></div>
</div>
<p class="sd-card-text">Update RubyGems after Homebrew packages and MSYS2 packages are updated:</p>
<div class="highlight-Bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># dev/release/post-04-ruby.sh 10.0.0</span>
dev/release/post-04-ruby.sh<span class="w"> </span>X.Y.Z
</pre></div>
</div>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Update JavaScript packages<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">In order to publish the binary build to npm, you will need to get access to the project by asking one of the current collaborators listed at <a class="reference external" href="https://www.npmjs.com/package/apache-arrow">https://www.npmjs.com/package/apache-arrow</a> packages.</p>
<p class="sd-card-text">The package upload requires npm and yarn to be installed and 2FA to be configured on your account.</p>
<p class="sd-card-text">When you have access, you can publish releases to npm by running the following script:</p>
<div class="highlight-Bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># Login to npmjs.com (You need to do this only for the first time)</span>
npm<span class="w"> </span>login<span class="w"> </span>--registry<span class="o">=</span>https://registry.yarnpkg.com/
<span class="c1"># dev/release/post-05-js.sh 10.0.0</span>
dev/release/post-05-js.sh<span class="w"> </span>X.Y.Z
</pre></div>
</div>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Update C# packages<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">You need an account on <a class="reference external" href="https://www.nuget.org/">https://www.nuget.org/</a>. You need to join owners of Apache.Arrow package. Existing owners can invite you to the owners at <a class="reference external" href="https://www.nuget.org/packages/Apache.Arrow/Manage">https://www.nuget.org/packages/Apache.Arrow/Manage</a> .</p>
<p class="sd-card-text">You need to create an API key at <a class="reference external" href="https://www.nuget.org/account/apikeys">https://www.nuget.org/account/apikeys</a> to upload from command line.</p>
<p class="sd-card-text">Install the latest .NET Core SDK from <a class="reference external" href="https://dotnet.microsoft.com/download">https://dotnet.microsoft.com/download</a> .</p>
<div class="highlight-Bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># NUGET_API_KEY=YOUR_NUGET_API_KEY dev/release/post-06-csharp.sh 10.0.0</span>
<span class="nv">NUGET_API_KEY</span><span class="o">=</span>&lt;your<span class="w"> </span>NuGet<span class="w"> </span>API<span class="w"> </span>key&gt;<span class="w"> </span>dev/release/post-06-csharp.sh<span class="w"> </span>X.Y.Z
</pre></div>
</div>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Upload wheels/sdist to PyPI<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">pip binary packages (called “wheels”) and source package (called “sdist”) are built using the crossbow tool that we used above during the release candidate creation process and then uploaded to PyPI (Python Package Index) under the pyarrow package.</p>
<p class="sd-card-text">We use the twine tool to upload wheels to PyPI:</p>
<div class="highlight-Bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># dev/release/post-09-python.sh 10.0.0</span>
dev/release/post-09-python.sh<span class="w"> </span>&lt;version&gt;
</pre></div>
</div>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Publish Maven packages<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<ul class="simple">
<li><p class="sd-card-text">Logon to the Apache repository: <a class="reference external" href="https://repository.apache.org/#stagingRepositories">https://repository.apache.org/#stagingRepositories</a></p></li>
<li><p class="sd-card-text">Select the Arrow staging repository you created for RC: <code class="docutils literal notranslate"><span class="pre">orgapachearrow-XXXX</span></code></p></li>
<li><p class="sd-card-text">Click the <code class="docutils literal notranslate"><span class="pre">release</span></code> button</p></li>
</ul>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Update R packages<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">To publish the R package on CRAN, there are a few steps we need to do first
in order to ensure that binaries for Windows and macOS are available to CRAN.
Jeroen Ooms &lt;<a class="reference external" href="mailto:jeroenooms&#37;&#52;&#48;gmail&#46;com">jeroenooms<span>&#64;</span>gmail<span>&#46;</span>com</a>&gt; maintains several projects that build C++
dependencies for R packages for macOS and Windows. We test copies of these
same build scripts in our CI, and at release time, we need to send any
changes we have and update the versions/hashes upstream.</p>
<p class="sd-card-text">When the release candidate is made, make draft pull requests to each
repository using the rc, updating the version and SHA, as well as any cmake
build changes from the corresponding files in apache/arrow. Jeroen may
merge these PRs before the release vote passes, build the binary artifacts,
and publish them in the right places so that we can do pre-submission checks
(see below). After the release candidate vote passes, update these PRs
to point to the official (non-rc) URL and mark them as ready for review.
Jeroen will merge, build the binary artifacts, and publish them in the
right places. See the
<a class="reference external" href="https://github.com/apache/arrow/blob/main/r/PACKAGING.md">packaging checklist</a>.
for a precise list of pull requests that must be made prior to submission
to CRAN.</p>
<p class="sd-card-text">Once these binary prerequisites have been satisfied, we can submit to CRAN.
Given the vagaries of the process, it is best if the R developers on the
project verify the CRAN-worthiness of the package before submitting.
Our CI systems give us some coverage for the things that CRAN checks, but
there are a couple of final tests we should do to confirm that the release
binaries will work and that everything runs on the same infrastructure that
CRAN has, which is difficult/impossible to emulate fully with Docker. For a
precise list of checks, see the
<a class="reference external" href="https://github.com/apache/arrow/blob/main/r/PACKAGING.md">packaging checklist</a>.</p>
<p class="sd-card-text">Once all checks are clean, we submit to CRAN, which has a web form for
uploading packages. The release process requires email confirmation
from the R package maintainer, currently Neal Richardson.</p>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Update vcpkg port<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">Open a pull request to vcpkg:</p>
<div class="highlight-Bash notranslate"><div class="highlight"><pre><span></span><span class="c1">## Fork https://github.com/microsoft/vcpkg on GitHub.</span>
<span class="c1">## You need to do this only once.</span>
<span class="c1">##</span>
<span class="c1">## Prepare your fork of https://github.com/microsoft/vcpkg .</span>
<span class="c1">## You need to do this only once.</span>
<span class="c1"># git clone git@github.com:kou/vcpkg.git ../</span>
git<span class="w"> </span>clone<span class="w"> </span>git@github.com:&lt;YOUR_GITHUB_ID&gt;/vcpkg.git<span class="w"> </span>../
<span class="nb">cd</span><span class="w"> </span>../vcpkg
./bootstrap-vcpkg.sh
<span class="c1">## Add https://github.com/microsoft/vcpkg.git as &quot;upstream&quot; remote.</span>
git<span class="w"> </span>remote<span class="w"> </span>add<span class="w"> </span>upstream<span class="w"> </span>https://github.com/microsoft/vcpkg.git
<span class="nb">cd</span><span class="w"> </span>-
<span class="c1"># dev/release/post-14-vcpkg.sh 10.0.0 ../vcpkg</span>
dev/release/post-14-vcpkg.sh<span class="w"> </span>X.Y.Z<span class="w"> </span>&lt;YOUR_VCPKG_FORK&gt;
</pre></div>
</div>
<p class="sd-card-text">This script pushes a <code class="docutils literal notranslate"><span class="pre">arrow-X.Y.Z</span></code> branch to your <code class="docutils literal notranslate"><span class="pre">microsoft/vcpkg</span></code> fork. You need to create a pull request from the <code class="docutils literal notranslate"><span class="pre">arrow-X.Y.Z</span></code> branch with <code class="docutils literal notranslate"><span class="pre">[arrow]</span> <span class="pre">Update</span> <span class="pre">to</span> <span class="pre">X.Y.Z</span></code> title on your Web browser.</p>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Update Conan port<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">Open a pull request to vcpkg:</p>
<div class="highlight-Bash notranslate"><div class="highlight"><pre><span></span><span class="c1">## Fork https://github.com/conan-io/conan-center-index on GitHub.</span>
<span class="c1">## You need to do this only once.</span>
<span class="c1">##</span>
<span class="c1">## Prepare your fork of https://github.com/conan-io/conan-center-index .</span>
<span class="c1">## You need to do this only once.</span>
<span class="c1"># git clone git@github.com:kou/conan-center-index.git ../</span>
git<span class="w"> </span>clone<span class="w"> </span>git@github.com:&lt;YOUR_GITHUB_ID&gt;/conan-center-index.git<span class="w"> </span>../
<span class="nb">cd</span><span class="w"> </span>../conan-center-index
<span class="c1">## Add https://github.com/conan-io/conan-center-index.git as &quot;upstream&quot; remote.</span>
git<span class="w"> </span>remote<span class="w"> </span>add<span class="w"> </span>upstream<span class="w"> </span>https://github.com/conan-io/conan-center-index.git
<span class="nb">cd</span><span class="w"> </span>-
<span class="c1"># dev/release/post-15-conan.sh 10.0.1 ../conan-center-index</span>
dev/release/post-15-conan.sh<span class="w"> </span>X.Y.Z<span class="w"> </span>&lt;YOUR_CONAN_CENTER_INDEX_FORK&gt;
</pre></div>
</div>
<p class="sd-card-text">This script pushes a <code class="docutils literal notranslate"><span class="pre">arrow-X.Y.Z</span></code> branch to your <code class="docutils literal notranslate"><span class="pre">conan-io/conan-center-index</span></code> fork. You need to create a pull request from the <code class="docutils literal notranslate"><span class="pre">arrow-X.Y.Z</span></code> branch on your Web browser.</p>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Bump versions<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<div class="highlight-Bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># You can run the script with BUMP_TAG=0 and BUMP_PUSH=0</span>
<span class="c1"># this will avoid default pushing to main and pushing the tag</span>
<span class="c1"># but you will require to push manually after reviewing the commits.</span>
<span class="c1"># dev/release/post-11-bump-versions.sh 10.0.0 11.0.0</span>
dev/release/post-11-bump-versions.sh<span class="w"> </span>X.Y.Z<span class="w"> </span>NEXT_X.NEXT_Y.NEXT_Z
</pre></div>
</div>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Update tags for Go modules<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<div class="highlight-Bash notranslate"><div class="highlight"><pre><span></span><span class="c1"># dev/release/post-10-go.sh 10.0.0</span>
dev/release/post-10-go.sh<span class="w"> </span>X.Y.Z
</pre></div>
</div>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Update docs<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">The documentations are generated in the release process. We just need to upload the generated documentations:</p>
<div class="highlight-Bash notranslate"><div class="highlight"><pre><span></span><span class="c1">## Prepare your fork of https://github.com/apache/arrow-site .</span>
<span class="c1">## You need to do this only once.</span>
<span class="c1"># git clone git@github.com:kou/arrow-site.git ../</span>
git<span class="w"> </span>clone<span class="w"> </span>git@github.com:&lt;YOUR_GITHUB_ID&gt;/arrow-site.git<span class="w"> </span>../
<span class="nb">cd</span><span class="w"> </span>../arrow-site
<span class="c1">## Add git@github.com:apache/arrow-site.git as &quot;apache&quot; remote.</span>
git<span class="w"> </span>remote<span class="w"> </span>add<span class="w"> </span>apache<span class="w"> </span>git@github.com:apache/arrow-site.git
<span class="nb">cd</span><span class="w"> </span>-
<span class="c1"># dev/release/post-08-docs.sh 10.0.0 9.0.0</span>
dev/release/post-08-docs.sh<span class="w"> </span>X.Y.Z<span class="w"> </span>PREVIOUS_X.PREVIOUS_Y.PREVIOUS_Z
</pre></div>
</div>
<p class="sd-card-text">This script pushes a <code class="docutils literal notranslate"><span class="pre">release-docs-X.Y.Z</span></code> branch to your <code class="docutils literal notranslate"><span class="pre">arrow-site</span></code> fork. You need to create a Pull Request and use the <code class="docutils literal notranslate"><span class="pre">asf-site</span></code> branch as base for it.</p>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Update version in Apache Arrow Cookbook<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">TODO</p>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Announce the new release<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">Write a release announcement (see <a class="reference external" href="https://lists.apache.org/thread/6rkjwvyjjfodrxffllh66pcqnp729n3k">example</a>) and send to <a class="reference external" href="mailto:announce&#37;&#52;&#48;apache&#46;org">announce<span>&#64;</span>apache<span>&#46;</span>org</a> and <a class="reference external" href="mailto:dev&#37;&#52;&#48;arrow&#46;apache&#46;org">dev<span>&#64;</span>arrow<span>&#46;</span>apache<span>&#46;</span>org</a>.</p>
<p class="sd-card-text">The announcement to <a class="reference external" href="mailto:announce&#37;&#52;&#48;apache&#46;org">announce<span>&#64;</span>apache<span>&#46;</span>org</a> must be sent from your apache.org e-mail address to be accepted.</p>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Publish release blog post<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">TODO</p>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Announce the release on Twitter<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">Post the release blog post on Twitter from the <a class="reference external" href="https://twitter.com/ApacheArrow">&#64;ApacheArrow</a> handle.</p>
<p class="sd-card-text">PMC members have access or can request access, after which they can post via <a class="reference external" href="https://tweetdeck.twitter.com">TweetDeck</a>.</p>
</div>
</details><details class="sd-sphinx-override sd-dropdown sd-card sd-mb-3 sd-shadow-md sd-fade-in-slide-down">
<summary class="sd-summary-title sd-card-header sd-fs-5">
Remove old artifacts<div class="sd-summary-down docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-down" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M5.22 8.72a.75.75 0 000 1.06l6.25 6.25a.75.75 0 001.06 0l6.25-6.25a.75.75 0 00-1.06-1.06L12 14.44 6.28 8.72a.75.75 0 00-1.06 0z"></path></svg></div>
<div class="sd-summary-up docutils">
<svg version="1.1" width="1.5em" height="1.5em" class="sd-octicon sd-octicon-chevron-up" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M18.78 15.28a.75.75 0 000-1.06l-6.25-6.25a.75.75 0 00-1.06 0l-6.25 6.25a.75.75 0 101.06 1.06L12 9.56l5.72 5.72a.75.75 0 001.06 0z"></path></svg></div>
</summary><div class="sd-summary-content sd-card-body docutils">
<p class="sd-card-text">Remove RC artifacts on <a class="reference external" href="https://dist.apache.org/repos/dist/dev/arrow/">https://dist.apache.org/repos/dist/dev/arrow/</a> and old release artifacts on <a class="reference external" href="https://dist.apache.org/repos/dist/release/arrow">https://dist.apache.org/repos/dist/release/arrow</a> to follow <a class="reference external" href="https://infra.apache.org/release-download-pages.html#current-and-older-releases">the ASF policy</a>:</p>
<div class="highlight-Bash notranslate"><div class="highlight"><pre><span></span>dev/release/post-07-remove-old-artifacts.sh
</pre></div>
</div>
</div>
</details></section>
</section>
</article>
<footer class="prev-next-footer">
<div class="prev-next-area">
<a class="left-prev"
href="documentation.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">Building the Documentation</p>
</div>
</a>
<a class="right-next"
href="release_verification.html"
title="next page">
<div class="prev-next-info">
<p class="prev-next-subtitle">next</p>
<p class="prev-next-title">Release Verification Process</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="#principles">Principles</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#preparing-for-the-release">Preparing for the release</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#before-creating-a-release-candidate">Before creating a Release Candidate</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#patch-releases">Patch Releases</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#creating-a-release-candidate">Creating a Release Candidate</a><ul class="visible nav section-nav flex-column">
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#create-or-update-the-corresponding-maintenance-branch">Create or update the corresponding maintenance branch</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#create-the-release-candidate-branch-from-the-updated-maintenance-branch">Create the Release Candidate branch from the updated maintenance branch</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#build-source-and-binaries-and-submit-them">Build source and binaries and submit them</a></li>
<li class="toc-h3 nav-item toc-entry"><a class="reference internal nav-link" href="#verify-the-release">Verify the Release</a></li>
</ul>
</li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#voting-and-approval">Voting and approval</a></li>
<li class="toc-h2 nav-item toc-entry"><a class="reference internal nav-link" href="#post-release-tasks">Post-release tasks</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/release.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>