CINXE.COM
Maintainer responsibilities — Ansible Community Documentation
<!DOCTYPE html> <html class="writer-html5" lang="en" data-content_root="../"> <head> <meta charset="utf-8" /><meta name="generator" content="Docutils 0.18.1: http://docutils.sourceforge.net/" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Maintainer responsibilities — Ansible Community Documentation</title> <link rel="stylesheet" type="text/css" href="../_static/pygments.css?v=41de9001" /> <link rel="stylesheet" type="text/css" href="../_static/css/ansible.css?v=c5b67dd2" /> <link rel="stylesheet" type="text/css" href="../_static/antsibull-minimal.css" /> <link rel="stylesheet" type="text/css" href="../_static/copybutton.css?v=76b2166b" /> <link rel="stylesheet" type="text/css" href="../_static/css/rtd-ethical-ads.css?v=289b023e" /> <link rel="shortcut icon" href="../_static/images/Ansible-Mark-RGB_Black.png"/> <link rel="canonical" href="https://docs.ansible.com/ansible/latest/community/maintainers_guidelines.html"/> <script src="../_static/jquery.js?v=5d32c60e"></script> <script src="../_static/_sphinx_javascript_frameworks_compat.js?v=2cd50e6c"></script> <script src="../_static/documentation_options.js?v=8ff10258"></script> <script src="../_static/doctools.js?v=888ff710"></script> <script src="../_static/sphinx_highlight.js?v=dc90522c"></script> <script src="../_static/clipboard.min.js?v=a7894cd8"></script> <script src="../_static/copybutton.js?v=f281be69"></script> <script src="../_static/js/theme.js"></script> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> <link rel="next" title="Backporting and Ansible inclusion" href="maintainers_workflow.html" /> <link rel="prev" title="Guidelines for collection maintainers" href="maintainers.html" /><!-- extra head elements for Ansible beyond RTD Sphinx Theme --> <script src="https://www.redhat.com/dtm.js"></script> <!-- Google Tag Manager Data Layer --> <script> dataLayer = []; </script> <!-- End Google Tag Manager Data Layer --> </head> <body class="wy-body-for-nav"><!-- extra body elements for Ansible beyond RTD Sphinx Theme --> <!-- Google Tag Manager --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-PSB293" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-PSB293');</script> <!-- End Google Tag Manager --> <div class="DocSite-globalNav ansibleNav"> <ul> <li><a href="https://www.ansible.com/blog" target="_blank">Blog</a></li> <li><a href="https://forum.ansible.com/" target="_blank">Ansible community forum</a></li> <li><a href="https://docs.ansible.com/" target="_blank">Documentation</a></li> </ul> </div> <a class="DocSite-nav" href="/" style="padding-bottom: 30px;"> <img class="DocSiteNav-logo" src="../_static/images/Ansible-Mark-RGB_White.png" alt="Ansible Logo"> <div class="DocSiteNav-title">Ansible Community Documentation</div> </a> <div class="wy-grid-for-nav"> <nav data-toggle="wy-nav-shift" class="wy-nav-side"> <div class="wy-side-scroll"> <div class="wy-side-nav-search" > <a href="../index.html" class="icon icon-home"> Ansible </a><!--- Based on https://github.com/rtfd/sphinx_rtd_theme/pull/438/files --> <div class="version"> <form class="version-dropdown" method="get"> <script> function switchVersionTo(slug) { var current_url_path = window.location.pathname; var url_version = current_url_path.search("/11/") > -1 ? "/11/" : "/latest/"; var new_version_url = current_url_path.replace(url_version, "/" + slug + "/"); window.location.replace(new_version_url); } </script> <label class="sr-only" for="version-list">Select version:</label> <select class="version-list" id="version-list" onchange="switchVersionTo(this.value);" > <option value="latest" > latest </option> <option value="devel" > devel </option> </select> </form> </div> <div role="search"> <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> <label class="sr-only" for="q">Search docs:</label> <input type="text" class="st-default-search-input" id="q" name="q" placeholder="Search docs" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu"> <p class="caption" role="heading"><span class="caption-text">Ansible getting started</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting started with Ansible</a></li> <li class="toctree-l1"><a class="reference internal" href="../getting_started_ee/index.html">Getting started with Execution Environments</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Installation, Upgrade & Configuration</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../installation_guide/index.html">Installation Guide</a></li> <li class="toctree-l1"><a class="reference internal" href="../porting_guides/porting_guides.html">Ansible Porting Guides</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Using Ansible</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../inventory_guide/index.html">Building Ansible inventories</a></li> <li class="toctree-l1"><a class="reference internal" href="../command_guide/index.html">Using Ansible command line tools</a></li> <li class="toctree-l1"><a class="reference internal" href="../playbook_guide/index.html">Using Ansible playbooks</a></li> <li class="toctree-l1"><a class="reference internal" href="../vault_guide/index.html">Protecting sensitive data with Ansible vault</a></li> <li class="toctree-l1"><a class="reference internal" href="../module_plugin_guide/index.html">Using Ansible modules and plugins</a></li> <li class="toctree-l1"><a class="reference internal" href="../collections_guide/index.html">Using Ansible collections</a></li> <li class="toctree-l1"><a class="reference internal" href="../os_guide/index.html">Using Ansible on Windows and BSD</a></li> <li class="toctree-l1"><a class="reference internal" href="../tips_tricks/index.html">Ansible tips and tricks</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Contributing to Ansible</span></p> <ul class="current"> <li class="toctree-l1"><a class="reference internal" href="index.html">Ansible Community Guide</a></li> <li class="toctree-l1 current"><a class="reference internal" href="contributions_collections.html">Ansible Collections Contributor Guide</a><ul class="current"> <li class="toctree-l2"><a class="reference internal" href="collection_development_process.html">The Ansible Collections Development Cycle</a></li> <li class="toctree-l2"><a class="reference internal" href="reporting_collections.html">Requesting changes to a collection</a></li> <li class="toctree-l2"><a class="reference internal" href="create_pr_quick_start.html">Creating your first collection pull request</a></li> <li class="toctree-l2"><a class="reference internal" href="collection_contributors/test_index.html">Testing Collection Contributions</a></li> <li class="toctree-l2"><a class="reference internal" href="collection_contributors/collection_reviewing.html">Review checklist for collection PRs</a></li> <li class="toctree-l2"><a class="reference internal" href="collection_contributors/collection_requirements.html">Ansible community package collections requirements</a></li> <li class="toctree-l2 current"><a class="reference internal" href="maintainers.html">Guidelines for collection maintainers</a><ul class="current"> <li class="toctree-l3 current"><a class="current reference internal" href="#">Maintainer responsibilities</a><ul> <li class="toctree-l4"><a class="reference internal" href="#how-to-become-a-maintainer">How to become a maintainer</a></li> <li class="toctree-l4"><a class="reference internal" href="#communicating-as-a-collection-maintainer">Communicating as a collection maintainer</a></li> <li class="toctree-l4"><a class="reference internal" href="#establishing-working-group-communication">Establishing working group communication</a></li> <li class="toctree-l4"><a class="reference internal" href="#community-topics">Community Topics</a></li> <li class="toctree-l4"><a class="reference internal" href="#contributor-summits">Contributor Summits</a></li> <li class="toctree-l4"><a class="reference internal" href="#weekly-community-matrix-irc-meetings">Weekly community Matrix/IRC meetings</a></li> </ul> </li> <li class="toctree-l3"><a class="reference internal" href="#expanding-the-collection-community">Expanding the collection community</a><ul> <li class="toctree-l4"><a class="reference internal" href="#encouraging-new-contributors">Encouraging new contributors</a></li> </ul> </li> <li class="toctree-l3"><a class="reference internal" href="#maintaining-good-collection-documentation">Maintaining good collection documentation</a></li> <li class="toctree-l3"><a class="reference internal" href="maintainers_workflow.html">Backporting and Ansible inclusion</a></li> <li class="toctree-l3"><a class="reference internal" href="maintainers_workflow.html#stepping-down-as-a-collection-maintainer">Stepping down as a collection maintainer</a></li> <li class="toctree-l3"><a class="reference internal" href="collection_contributors/collection_releasing.html">Releasing collections</a></li> </ul> </li> <li class="toctree-l2"><a class="reference internal" href="contributing_maintained_collections.html">Contributing to Ansible-maintained Collections</a></li> <li class="toctree-l2"><a class="reference internal" href="steering/steering_index.html">Ansible Community Steering Committee</a></li> <li class="toctree-l2"><a class="reference internal" href="documentation_contributions.html">Contributing to the Ansible Documentation</a></li> <li class="toctree-l2"><a class="reference internal" href="other_tools_and_programs.html">Other Tools and Programs</a></li> <li class="toctree-l2"><a class="reference internal" href="contributions_collections.html#working-with-the-ansible-collection-repositories">Working with the Ansible collection repositories</a></li> </ul> </li> <li class="toctree-l1"><a class="reference internal" href="contributions.html">ansible-core Contributors Guide</a></li> <li class="toctree-l1"><a class="reference internal" href="advanced_index.html">Advanced Contributor Guide</a></li> <li class="toctree-l1"><a class="reference internal" href="../dev_guide/style_guide/index.html">Ansible documentation style guide</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Extending Ansible</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../dev_guide/index.html">Developer Guide</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Common Ansible Scenarios</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../scenario_guides/cloud_guides.html">Legacy Public Cloud Guides</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Network Automation</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../network/getting_started/index.html">Network Getting Started</a></li> <li class="toctree-l1"><a class="reference internal" href="../network/user_guide/index.html">Network Advanced Topics</a></li> <li class="toctree-l1"><a class="reference internal" href="../network/dev_guide/index.html">Network Developer Guide</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Ansible Galaxy</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../galaxy/user_guide.html">Galaxy User Guide</a></li> <li class="toctree-l1"><a class="reference internal" href="../galaxy/dev_guide.html">Galaxy Developer Guide</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Reference & Appendices</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../collections/index.html">Collection Index</a></li> <li class="toctree-l1"><a class="reference internal" href="../collections/all_plugins.html">Indexes of all modules and plugins</a></li> <li class="toctree-l1"><a class="reference internal" href="../reference_appendices/playbooks_keywords.html">Playbook Keywords</a></li> <li class="toctree-l1"><a class="reference internal" href="../reference_appendices/common_return_values.html">Return Values</a></li> <li class="toctree-l1"><a class="reference internal" href="../reference_appendices/config.html">Ansible Configuration Settings</a></li> <li class="toctree-l1"><a class="reference internal" href="../reference_appendices/general_precedence.html">Controlling how Ansible behaves: precedence rules</a></li> <li class="toctree-l1"><a class="reference internal" href="../reference_appendices/YAMLSyntax.html">YAML Syntax</a></li> <li class="toctree-l1"><a class="reference internal" href="../reference_appendices/python_3_support.html">Python 3 Support</a></li> <li class="toctree-l1"><a class="reference internal" href="../reference_appendices/interpreter_discovery.html">Interpreter Discovery</a></li> <li class="toctree-l1"><a class="reference internal" href="../reference_appendices/release_and_maintenance.html">Releases and maintenance</a></li> <li class="toctree-l1"><a class="reference internal" href="../reference_appendices/test_strategies.html">Testing Strategies</a></li> <li class="toctree-l1"><a class="reference internal" href="../dev_guide/testing/sanity/index.html">Sanity Tests</a></li> <li class="toctree-l1"><a class="reference internal" href="../reference_appendices/faq.html">Frequently Asked Questions</a></li> <li class="toctree-l1"><a class="reference internal" href="../reference_appendices/glossary.html">Glossary</a></li> <li class="toctree-l1"><a class="reference internal" href="../reference_appendices/module_utils.html">Ansible Reference: Module Utilities</a></li> <li class="toctree-l1"><a class="reference internal" href="../reference_appendices/special_variables.html">Special Variables</a></li> <li class="toctree-l1"><a class="reference internal" href="../reference_appendices/tower.html">Red Hat Ansible Automation Platform</a></li> <li class="toctree-l1"><a class="reference internal" href="../reference_appendices/automationhub.html">Ansible Automation Hub</a></li> <li class="toctree-l1"><a class="reference internal" href="../reference_appendices/logging.html">Logging Ansible output</a></li> </ul> <p class="caption" role="heading"><span class="caption-text">Roadmaps</span></p> <ul> <li class="toctree-l1"><a class="reference internal" href="../roadmap/ansible_roadmap_index.html">Ansible Roadmap</a></li> <li class="toctree-l1"><a class="reference internal" href="../roadmap/ansible_core_roadmap_index.html">ansible-core Roadmaps</a></li> </ul> <!-- extra nav elements for Ansible beyond RTD Sphinx Theme --> <!-- changeable widget links to tower - do not change as image controlled by Ansible--> <div id="sideBanner"> <br/> <a href="https://www.ansible.com/docs-left?utm_source=docs"> <img style="border-width:0px;" src="https://cdn2.hubspot.net/hubfs/330046/docs-graphics/ASB-docs-left-rail.png" /> </a> <br/><br/><br/> </div> </div> </div> </nav> <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" > <i data-toggle="wy-nav-top" class="fa fa-bars"></i> <a href="../index.html">Ansible</a> </nav> <div class="wy-nav-content"> <div class="rst-content"> <div role="navigation" aria-label="Page navigation"> <ul class="wy-breadcrumbs"> <li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li> <li class="breadcrumb-item"><a href="contributions_collections.html">Ansible Collections Contributor Guide</a></li> <li class="breadcrumb-item"><a href="maintainers.html">Guidelines for collection maintainers</a></li> <li class="breadcrumb-item active">Maintainer responsibilities</li> <li class="wy-breadcrumbs-aside"> <!-- Remove main index page as it is no longer editable --> <a href="https://github.com/ansible/ansible-documentation/edit/devel/docs/docsite/rst/community/maintainers_guidelines.rst?description=%23%23%23%23%23%20SUMMARY%0A%3C!---%20Your%20description%20here%20--%3E%0A%0A%0A%23%23%23%23%23%20ISSUE%20TYPE%0A-%20Docs%20Pull%20Request%0A%0A%2Blabel:%20docsite_pr" class="fa fa-github"> Edit on GitHub</a> </li> </ul> <hr/> </div> <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> <script> function startsWith(str, needle) { return str.slice(0, needle.length) == needle } function startsWithOneOf(str, needles) { return needles.some(function (needle) { return startsWith(str, needle); }); } var banner = ''; /*use extra_banner for when we want something extra, like a survey or Community Day notice */ var extra_banner = ''; /* var extra_banner = '<div id="latest_extra_banner_id" class="admonition important">' + '<p style="font-size: 1.5rem;text-align: center;">' + 'Take the <a href="https://www.surveymonkey.com/r/P9Q2SNG">Ansible Project Survey 2024</a>!' + '</p>' + '<p style="padding-bottom: 1.2rem;text-align: center">' + 'We want to hear from you! Help us gain insights into the state of the Ansible ecosystem.' + '</p>' + '</div>'; */ // Create a banner if we're not on the official docs site if (location.host == "docs.testing.ansible.com") { document.write('<div id="testing_banner_id" class="admonition important">' + '<p>This is the testing site for Ansible Documentation. Unless you are reviewing pre-production changes, please visit the <a href="https://docs.ansible.com/ansible/latest/">official documentation website</a>.</p> <p></p>' + '</div>'); } // Create a banner current_url_path = window.location.pathname; var important = false; var msg = '<p>'; if (startsWith(current_url_path, "/ansible-core/")) { msg += 'You are reading documentation for Ansible Core, which contains no plugins except for those in ansible.builtin. For documentation of the Ansible package, go to <a href="/ansible/latest">the latest documentation</a>.'; } else if (startsWithOneOf(current_url_path, ["/ansible/latest/", "/ansible/11/"])) { /* temp extra banner to advertise something */ banner += extra_banner; msg += 'This is the <b>latest</b> (stable) Ansible community documentation. For Red Hat Ansible Automation Platform subscriptions, see <a href="https://access.redhat.com/support/policy/updates/ansible-automation-platform">Life Cycle</a> for version details.'; } else if (startsWith(current_url_path, "/ansible/2.9/")) { msg += 'You are reading the latest Red Hat released version of the Ansible documentation. Community users can use this version, or select <b>latest</b> from the version selector to the left for the most recent community version.'; } else if (startsWith(current_url_path, "/ansible/devel/")) { /* temp extra banner to advertise something */ banner += extra_banner; msg += 'You are reading the <b>devel</b> version of the Ansible documentation - this version is not guaranteed stable. Use the version selection to the left if you want the <b>latest</b> (stable) released version.'; } else { msg += 'You are reading an older version of the Ansible documentation. Use the version selection to the left if you want the <b>latest</b> (stable) released version.'; /* temp extra banner to advertise something - this is for testing*/ banner += extra_banner; } msg += '</p>'; banner += '<div id="banner_id" class="admonition '; banner += important ? 'important' : 'caution'; banner += '">'; banner += important ? '<br>' : ''; banner += msg; banner += important ? '<br>' : ''; banner += '</div>'; document.write(banner); </script> <div itemprop="articleBody"> <section id="maintainer-responsibilities"> <span id="maintainer-requirements"></span><h1>Maintainer responsibilities<a class="headerlink" href="#maintainer-responsibilities" title="Link to this heading"></a></h1> <nav class="contents local" id="contents"> <ul class="simple"> <li><p><a class="reference internal" href="#how-to-become-a-maintainer" id="id4">How to become a maintainer</a></p></li> <li><p><a class="reference internal" href="#communicating-as-a-collection-maintainer" id="id5">Communicating as a collection maintainer</a></p></li> <li><p><a class="reference internal" href="#establishing-working-group-communication" id="id6">Establishing working group communication</a></p></li> <li><p><a class="reference internal" href="#community-topics" id="id7">Community Topics</a></p></li> <li><p><a class="reference internal" href="#contributor-summits" id="id8">Contributor Summits</a></p></li> <li><p><a class="reference internal" href="#weekly-community-matrix-irc-meetings" id="id9">Weekly community Matrix/IRC meetings</a></p></li> </ul> </nav> <p>An Ansible collection maintainer is a contributor trusted by the community who makes significant and regular contributions to the project and who has shown themselves as a specialist in the related area. Collection maintainers have <a class="reference internal" href="maintainers_workflow.html#collection-maintainers"><span class="std std-ref">extended permissions</span></a> in the collection scope.</p> <p>Ansible collection maintainers provide feedback, responses, or actions on pull requests or issues to the collection(s) they maintain in a reasonably timely manner. They can also update the contributor guidelines for that collection, in collaboration with the Ansible community team and the other maintainers of that collection.</p> <p>In general, collection maintainers:</p> <ul class="simple"> <li><p>Act in accordance with the <a class="reference internal" href="code_of_conduct.html#code-of-conduct"><span class="std std-ref">Community Code of Conduct</span></a>.</p></li> <li><p>Subscribe to the collection repository they maintain (click <span class="guilabel">Watch > All activity</span> in GitHub).</p></li> <li><p>Keep README, development guidelines, and other general collections <a class="reference internal" href="#maintainer-documentation"><span class="std std-ref">Maintaining good collection documentation</span></a> relevant.</p></li> <li><p>Review and commit changes made by other contributors.</p></li> <li><p><a class="reference internal" href="maintainers_workflow.html#backporting"><span class="std std-ref">Backport</span></a> changes to stable branches.</p></li> <li><p>Address or assign issues to appropriate contributors.</p></li> <li><p><a class="reference internal" href="collection_contributors/collection_releasing.html#releasing"><span class="std std-ref">Release collections</span></a>.</p></li> <li><p>Ensure that collections adhere to the <a class="reference internal" href="collection_contributors/collection_requirements.html#collections-requirements"><span class="std std-ref">Ansible community package collections requirements</span></a>.</p></li> <li><p>Track changes announced in <a class="reference external" href="https://github.com/ansible-collections/news-for-maintainers">News for collection contributors and maintainers</a> and update a collection in accordance with these changes.</p></li> <li><p>Subscribe and submit news to the <a class="reference external" href="https://forum.ansible.com/c/news/bullhorn/17">Bullhorn newsletter</a>.</p></li> <li><p><a class="reference internal" href="#expanding-community"><span class="std std-ref">Build a healthy community</span></a> to increase the number of active contributors and maintainers around collections.</p></li> <li><p>Revise these guidelines to improve the maintainer experience for yourself and others.</p></li> </ul> <p>Multiple maintainers can divide responsibilities among each other.</p> <section id="how-to-become-a-maintainer"> <h2><a class="toc-backref" href="#id4" role="doc-backlink">How to become a maintainer</a><a class="headerlink" href="#how-to-become-a-maintainer" title="Link to this heading"></a></h2> <p>A person interested in becoming a maintainer and satisfying the <a class="reference internal" href="#maintainer-requirements"><span class="std std-ref">requirements</span></a> may either self-nominate or be nominated by another maintainer.</p> <p>To nominate a candidate, create a GitHub issue in the relevant collection repository. If there is no response, the repository is not actively maintained, or the current maintainers do not have permissions to add the candidate, Create a topic in the <a class="reference external" href="https://forum.ansible.com/">Ansible community forum</a>.</p> </section> <section id="communicating-as-a-collection-maintainer"> <h2><a class="toc-backref" href="#id5" role="doc-backlink">Communicating as a collection maintainer</a><a class="headerlink" href="#communicating-as-a-collection-maintainer" title="Link to this heading"></a></h2> <blockquote> <div><p>Maintainers are highly encouraged to subscribe to the <a class="reference external" href="https://github.com/ansible-collections/news-for-maintainers">“Changes impacting collection contributors and maintainers” GitHub repo</a> and the <a class="reference external" href="https://forum.ansible.com/c/news/bullhorn/17">Bullhorn newsletter</a>. If you have something important to announce through the newsletter (for example, recent releases), see the Bullhorn to learn how.</p> </div></blockquote> <p>Collection contributors and maintainers can also communicate through:</p> <ul class="simple"> <li><p>Real-time chats and forum topics appropriate to their collection, or if none exists, the general community and developer chat channels.</p></li> <li><p>Collection project boards, issues, and GitHub discussions in corresponding repositories.</p></li> <li><p>Contributor Summits and Ansible community days.</p></li> <li><p>Ansiblefest and local meetups.</p></li> </ul> <p>See <a class="reference internal" href="communication.html#communication"><span class="std std-ref">Communicating with the Ansible community</span></a> for more details on these communication channels.</p> </section> <section id="establishing-working-group-communication"> <span id="wg-and-real-time-chat"></span><h2><a class="toc-backref" href="#id6" role="doc-backlink">Establishing working group communication</a><a class="headerlink" href="#establishing-working-group-communication" title="Link to this heading"></a></h2> <p>Working groups depend on efficient communication. Project maintainers can use the following techniques to establish communication for working groups:</p> <ul class="simple"> <li><p>Find an existing <a class="reference external" href="https://forum.ansible.com/g">forum group</a> or <a class="reference internal" href="communication.html#working-group-list"><span class="std std-ref">working group</span></a> that is similar to your project and join the conversation.</p></li> <li><p><a class="reference external" href="https://github.com/ansible/community/blob/main/WORKING-GROUPS.md">Request</a> a new working group for your project.</p></li> <li><p><a class="reference external" href="https://hackmd.io/@ansible-community/community-matrix-faq#How-do-I-create-a-public-community-room">Create</a> a public chat for your working group or <a class="reference external" href="https://forum.ansible.com/c/project/7">ask in the forum for help</a>.</p></li> <li><p>Provide working group details and links to chat rooms in the contributor section of your project <code class="docutils literal notranslate"><span class="pre">README.md</span></code>.</p></li> <li><p>Encourage contributors to join the forum group and chat.</p></li> </ul> <p>See the <a class="reference internal" href="communication.html#communication-irc"><span class="std std-ref">Communication guide</span></a> to learn more about real-time chat.</p> </section> <section id="community-topics"> <h2><a class="toc-backref" href="#id7" role="doc-backlink">Community Topics</a><a class="headerlink" href="#community-topics" title="Link to this heading"></a></h2> <p>The Community and the <span class="xref std std-ref">Steering Committee</span> asynchronously discuss and vote on the <a class="reference internal" href="steering/community_steering_committee.html#creating-community-topic"><span class="std std-ref">community topics</span></a> which impact the whole project or its parts including collections and packaging.</p> <p>Share your opinion and vote on the topics to help the community make the best decisions.</p> </section> <section id="contributor-summits"> <span id="expanding-community"></span><h2><a class="toc-backref" href="#id8" role="doc-backlink">Contributor Summits</a><a class="headerlink" href="#contributor-summits" title="Link to this heading"></a></h2> <p>The quarterly Ansible Contributor Summit is a global event that provides our contributors a great opportunity to meet each other, communicate, share ideas, and see that there are other real people behind the messages on Matrix or Libera Chat IRC, or GitHub. This gives a sense of community. Watch the <a class="reference external" href="https://forum.ansible.com/c/news/bullhorn/17">Bullhorn newsletter</a> for information when the next contributor summit, invite contributors you know, and take part in the event together.</p> </section> <section id="weekly-community-matrix-irc-meetings"> <h2><a class="toc-backref" href="#id9" role="doc-backlink">Weekly community Matrix/IRC meetings</a><a class="headerlink" href="#weekly-community-matrix-irc-meetings" title="Link to this heading"></a></h2> <p>The Community and the Steering Committee come together at weekly meetings in the <code class="docutils literal notranslate"><span class="pre">#ansible-community</span></code> <a class="reference external" href="https://docs.ansible.com/ansible/devel/community/communication.html#ansible-community-on-irc">Libera.Chat IRC</a> channel or in the bridged <a class="reference external" href="https://matrix.to/#/#community:ansible.com">#community:ansible.com</a> room on <a class="reference external" href="https://docs.ansible.com/ansible/devel/community/communication.html#ansible-community-on-matrix">Matrix</a> to discuss important project questions. Join us! Here is our <a class="reference external" href="https://github.com/ansible-community/meetings/blob/main/README.md#schedule">schedule</a>.</p> </section> </section> <section id="expanding-the-collection-community"> <h1>Expanding the collection community<a class="headerlink" href="#expanding-the-collection-community" title="Link to this heading"></a></h1> <div class="admonition note"> <p class="admonition-title">Note</p> <p>If you discover good ways to expand a community or make it more robust, edit this section with your ideas to share with other collection maintainers.</p> </div> <p>Here are some ways you can expand the community around your collection:</p> <blockquote> <div><ul class="simple"> <li><p>Give <a class="reference internal" href="#collection-new-contributors"><span class="std std-ref">newcomers a positive first experience</span></a>.</p></li> <li><p>Invite contributors to join forum groups and <a class="reference internal" href="#wg-and-real-time-chat"><span class="std std-ref">real-time chats</span></a> related to your project.</p></li> <li><p>Have <a class="reference internal" href="#maintainer-documentation"><span class="std std-ref">good documentation</span></a> with guidelines for new contributors.</p></li> <li><p>Make people feel welcome personally and individually.</p></li> <li><p>Use labels to show easy fixes and leave non-critical easy fixes to newcomers and offer to mentor them.</p></li> <li><p>Be responsive in issues, PRs and other communication.</p></li> <li><p>Conduct PR days regularly.</p></li> <li><p>Maintain a zero-tolerance policy towards behavior violating the <a class="reference internal" href="code_of_conduct.html#code-of-conduct"><span class="std std-ref">Community Code of Conduct</span></a>.</p></li> <li><p>Put information about how people can register code of conduct violations in your <code class="docutils literal notranslate"><span class="pre">README</span></code> and <code class="docutils literal notranslate"><span class="pre">CONTRIBUTING</span></code> files.</p></li> <li><p>Include quick ways contributors can help and other documentation in your <code class="docutils literal notranslate"><span class="pre">README</span></code>.</p></li> <li><p>Add and keep updated the <code class="docutils literal notranslate"><span class="pre">CONTRIBUTORS</span></code> and <code class="docutils literal notranslate"><span class="pre">MAINTAINERS</span></code> files.</p></li> <li><p>Create a pinned issue to announce that the collection welcomes new maintainers and contributors.</p></li> <li><p>Look for new maintainers among active contributors.</p></li> <li><p>Announce that your collection welcomes new maintainers.</p></li> <li><p>Take part and congratulate new maintainers in Contributor Summits.</p></li> </ul> </div></blockquote> <section id="encouraging-new-contributors"> <span id="collection-new-contributors"></span><h2>Encouraging new contributors<a class="headerlink" href="#encouraging-new-contributors" title="Link to this heading"></a></h2> <p>Easy-fix items are the best way to attract and mentor new contributors. You should triage incoming issues to mark them with labels such as <code class="docutils literal notranslate"><span class="pre">easyfix</span></code>, <code class="docutils literal notranslate"><span class="pre">waiting_on_contributor</span></code>, and <code class="docutils literal notranslate"><span class="pre">docs</span></code>. where appropriate. Do not fix these trivial non-critical bugs yourself. Instead, mentor a person who wants to contribute.</p> <p>For some easy-fix issues, you could ask the issue reporter whether they want to fix the issue themselves providing the link to a quick start guide for creating PRs.</p> <p>Conduct pull request days regularly. You could plan PR days, for example, on the last Friday of every month when you and other maintainers go through all open issues and pull requests focusing on old ones, asking people if you can help, and so on. If there are pull requests that look abandoned (for example, there has been no response on your help offers since the previous PR day), announce that anyone else interested can complete the pull request.</p> <p>Promote active contributors satisfying <a class="reference internal" href="#maintainer-requirements"><span class="std std-ref">requirements</span></a> to maintainers. Revise contributors’ activity regularly.</p> <p>If your collection found new maintainers, announce that fact in the <a class="reference external" href="https://forum.ansible.com/c/news/bullhorn/17">Bullhorn newsletter</a> and during the next Contributor Summit congratulating and thanking them for the work done. You can mention all the people promoted since the previous summit. Remember to invite the other maintainers to the Summit in advance.</p> <p>Some other general guidelines to encourage contributors:</p> <ul class="simple"> <li><p>Welcome the author and thank them for the issue or pull request.</p></li> <li><p>If there is a non-crucial easy-fix bug reported, politely ask the author to fix it themselves providing a link to <a class="reference internal" href="create_pr_quick_start.html#collection-quickstart"><span class="std std-ref">Creating your first collection pull request</span></a>.</p></li> <li><p>When suggesting changes, try to use questions, not statements.</p></li> <li><p>When suggesting mandatory changes, do it as politely as possible providing documentation references.</p></li> <li><p>If your suggestion is optional or a matter of personal preference, please say it explicitly.</p></li> <li><p>When asking for adding tests or for complex code refactoring, say that the author is welcome to ask for clarifications and help if they need it.</p></li> <li><p>If somebody suggests a good idea, mention it or put a thumbs up.</p></li> <li><p>After merging, thank the author and reviewers for their time and effort.</p></li> </ul> <p>See the <a class="reference internal" href="collection_contributors/collection_reviewing.html#review-checklist"><span class="std std-ref">Review checklist for collection PRs</span></a> for a list of items to check before you merge a PR.</p> </section> </section> <section id="maintaining-good-collection-documentation"> <span id="maintainer-documentation"></span><h1>Maintaining good collection documentation<a class="headerlink" href="#maintaining-good-collection-documentation" title="Link to this heading"></a></h1> <p>Maintainers look after the collection documentation to ensure it matches the <a class="reference internal" href="../dev_guide/style_guide/index.html#style-guide"><span class="std std-ref">Ansible documentation style guide</span></a>. This includes keeping the following documents accurate and updated regularly:</p> <ul class="simple"> <li><p>Collection module and plugin documentation that adheres to the <a class="reference internal" href="../dev_guide/developing_modules_documenting.html#module-documenting"><span class="std std-ref">Ansible documentation format</span></a>.</p></li> <li><p>Collection user guides that follow the <a class="reference internal" href="../dev_guide/developing_collections_structure.html#collections-doc-dir"><span class="std std-ref">Collection documentation format</span></a>.</p></li> <li><p>Repository files that includes at least a <code class="docutils literal notranslate"><span class="pre">README</span></code> and <code class="docutils literal notranslate"><span class="pre">CONTRIBUTING</span></code> file.</p></li> </ul> <p>A good <code class="docutils literal notranslate"><span class="pre">README</span></code> includes a description of the collection, a link to the <a class="reference internal" href="code_of_conduct.html#code-of-conduct"><span class="std std-ref">Community Code of Conduct</span></a>, and details on how to contribute or a pointer to the <code class="docutils literal notranslate"><span class="pre">CONTRIBUTING</span></code> file. If your collection is a part of Ansible (shipped with Ansible package), highlight that fact at the top of the collection’s <code class="docutils literal notranslate"><span class="pre">README</span></code>.</p> <blockquote> <div><p>The <code class="docutils literal notranslate"><span class="pre">CONTRIBUTING</span></code> file includes all the details or links to the details on how a new or continuing contributor can contribute to this collection. The <code class="docutils literal notranslate"><span class="pre">CONTRIBUTING</span></code> file should include:</p> </div></blockquote> <ul class="simple"> <li><p>Information or links to new contributor guidelines, such as a quick start on opening PRs.</p></li> <li><p>Information or links to contributor requirements, such as unit and integration test requirements.</p></li> </ul> <p>You can optionally include a <code class="docutils literal notranslate"><span class="pre">CONTRIBUTORS</span></code> and <code class="docutils literal notranslate"><span class="pre">MAINTAINERS</span></code> file to list the collection contributors and maintainers.</p> </section> </div> </div> <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer"> <a href="maintainers.html" class="btn btn-neutral float-left" title="Guidelines for collection maintainers" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> <a href="maintainers_workflow.html" class="btn btn-neutral float-right" title="Backporting and Ansible inclusion" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> </div> <hr/> <div role="contentinfo"> <p>© Copyright Ansible project contributors. <span class="lastupdated">Last updated on Jan 28, 2025. </span></p> </div> </footer> </div> </div> </section> </div> <script> jQuery(function () { SphinxRtdTheme.Navigation.enable(true); }); </script><!-- extra footer elements for Ansible beyond RTD Sphinx Theme --> <!-- begin analytics --> <script> var _hsq = _hsq || []; _hsq.push(["setContentType", "standard-page"]); (function(d,s,i,r) { if (d.getElementById(i)){return;} var n = d.createElement(s),e = document.getElementsByTagName(s)[0]; n.id=i;n.src = 'https://js.hs-analytics.net/analytics/'+(Math.ceil(new Date()/r)*r)+'/330046.js'; e.parentNode.insertBefore(n, e); })(document, "script", "hs-analytics",300000); </script> <!-- end analytics --> <script> if (("undefined" !== typeof _satellite) && ("function" === typeof _satellite.pageBottom)) { _satellite.pageBottom(); } </script> </body> </html>