CINXE.COM

PEP 581 – Using GitHub Issues for CPython | peps.python.org

<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="color-scheme" content="light dark"> <title>PEP 581 – Using GitHub Issues for CPython | peps.python.org</title> <link rel="shortcut icon" href="../_static/py.png"> <link rel="canonical" href="https://peps.python.org/pep-0581/"> <link rel="stylesheet" href="../_static/style.css" type="text/css"> <link rel="stylesheet" href="../_static/mq.css" type="text/css"> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" media="(prefers-color-scheme: light)" id="pyg-light"> <link rel="stylesheet" href="../_static/pygments_dark.css" type="text/css" media="(prefers-color-scheme: dark)" id="pyg-dark"> <link rel="alternate" type="application/rss+xml" title="Latest PEPs" href="https://peps.python.org/peps.rss"> <meta property="og:title" content='PEP 581 – Using GitHub Issues for CPython | peps.python.org'> <meta property="og:description" content="This PEP outlines the rationale for migration from Python’s issue tracker on Roundup to GitHub issues. See PEP 588 for the detailed migration plan."> <meta property="og:type" content="website"> <meta property="og:url" content="https://peps.python.org/pep-0581/"> <meta property="og:site_name" content="Python Enhancement Proposals (PEPs)"> <meta property="og:image" content="https://peps.python.org/_static/og-image.png"> <meta property="og:image:alt" content="Python PEPs"> <meta property="og:image:width" content="200"> <meta property="og:image:height" content="200"> <meta name="description" content="This PEP outlines the rationale for migration from Python’s issue tracker on Roundup to GitHub issues. See PEP 588 for the detailed migration plan."> <meta name="theme-color" content="#3776ab"> </head> <body> <svg xmlns="http://www.w3.org/2000/svg" style="display: none;"> <symbol id="svg-sun-half" viewBox="0 0 24 24" pointer-events="all"> <title>Following system colour scheme</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <circle cx="12" cy="12" r="9"></circle> <path d="M12 3v18m0-12l4.65-4.65M12 14.3l7.37-7.37M12 19.6l8.85-8.85"></path> </svg> </symbol> <symbol id="svg-moon" viewBox="0 0 24 24" pointer-events="all"> <title>Selected dark colour scheme</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <path stroke="none" d="M0 0h24v24H0z" fill="none"></path> <path d="M12 3c.132 0 .263 0 .393 0a7.5 7.5 0 0 0 7.92 12.446a9 9 0 1 1 -8.313 -12.454z"></path> </svg> </symbol> <symbol id="svg-sun" viewBox="0 0 24 24" pointer-events="all"> <title>Selected light colour scheme</title> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> <circle cx="12" cy="12" r="5"></circle> <line x1="12" y1="1" x2="12" y2="3"></line> <line x1="12" y1="21" x2="12" y2="23"></line> <line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line> <line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line> <line x1="1" y1="12" x2="3" y2="12"></line> <line x1="21" y1="12" x2="23" y2="12"></line> <line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line> <line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line> </svg> </symbol> </svg> <script> document.documentElement.dataset.colour_scheme = localStorage.getItem("colour_scheme") || "auto" </script> <section id="pep-page-section"> <header> <h1>Python Enhancement Proposals</h1> <ul class="breadcrumbs"> <li><a href="https://www.python.org/" title="The Python Programming Language">Python</a> &raquo; </li> <li><a href="../pep-0000/">PEP Index</a> &raquo; </li> <li>PEP 581</li> </ul> <button id="colour-scheme-cycler" onClick="setColourScheme(nextColourScheme())"> <svg aria-hidden="true" class="colour-scheme-icon-when-auto"><use href="#svg-sun-half"></use></svg> <svg aria-hidden="true" class="colour-scheme-icon-when-dark"><use href="#svg-moon"></use></svg> <svg aria-hidden="true" class="colour-scheme-icon-when-light"><use href="#svg-sun"></use></svg> <span class="visually-hidden">Toggle light / dark / auto colour theme</span> </button> </header> <article> <section id="pep-content"> <h1 class="page-title">PEP 581 – Using GitHub Issues for CPython</h1> <dl class="rfc2822 field-list simple"> <dt class="field-odd">Author<span class="colon">:</span></dt> <dd class="field-odd">Mariatta &lt;mariatta&#32;&#97;t&#32;python.org&gt;</dd> <dt class="field-even">BDFL-Delegate<span class="colon">:</span></dt> <dd class="field-even">Barry Warsaw &lt;barry&#32;&#97;t&#32;python.org&gt;</dd> <dt class="field-odd">Discussions-To<span class="colon">:</span></dt> <dd class="field-odd"><a class="reference external" href="https://discuss.python.org/t/535">Discourse thread</a></dd> <dt class="field-even">Status<span class="colon">:</span></dt> <dd class="field-even"><abbr title="Accepted and implementation complete, or no longer active">Final</abbr></dd> <dt class="field-odd">Type<span class="colon">:</span></dt> <dd class="field-odd"><abbr title="Normative PEP describing or proposing a change to a Python community process, workflow or governance">Process</abbr></dd> <dt class="field-even">Created<span class="colon">:</span></dt> <dd class="field-even">20-Jun-2018</dd> <dt class="field-odd">Post-History<span class="colon">:</span></dt> <dd class="field-odd">07-Mar-2019</dd> <dt class="field-even">Resolution<span class="colon">:</span></dt> <dd class="field-even"><a class="reference external" href="https://mail.python.org/pipermail/python-dev/2019-May/157399.html">Python-Dev message</a></dd> </dl> <hr class="docutils" /> <section id="contents"> <details><summary>Table of Contents</summary><ul class="simple"> <li><a class="reference internal" href="#abstract">Abstract</a></li> <li><a class="reference internal" href="#rationale">Rationale</a><ul> <li><a class="reference internal" href="#why-github">Why GitHub?</a></li> <li><a class="reference internal" href="#issues-with-roundup-bpo">Issues with Roundup / bpo</a></li> </ul> </li> <li><a class="reference internal" href="#why-not-gitlab">Why not GitLab?</a></li> <li><a class="reference internal" href="#why-not-another-issue-tracker">Why not another issue tracker?</a></li> <li><a class="reference internal" href="#why-not-focus-on-improving-roundup-bpo">Why not focus on improving Roundup / bpo?</a></li> <li><a class="reference internal" href="#downsides-of-github">Downsides of GitHub</a></li> <li><a class="reference internal" href="#further-questions-and-discussions">Further questions and discussions</a></li> <li><a class="reference internal" href="#acknowledgements">Acknowledgements</a></li> <li><a class="reference internal" href="#references">References</a></li> <li><a class="reference internal" href="#copyright">Copyright</a></li> </ul> </details></section> <section id="abstract"> <h2><a class="toc-backref" href="#abstract" role="doc-backlink">Abstract</a></h2> <p>This PEP outlines the rationale for migration from Python’s issue tracker on Roundup to GitHub issues. See <a class="pep reference internal" href="../pep-0588/" title="PEP 588 – GitHub Issues Migration Plan">PEP 588</a> for the detailed migration plan.</p> </section> <section id="rationale"> <h2><a class="toc-backref" href="#rationale" role="doc-backlink">Rationale</a></h2> <p>CPython’s development moved to GitHub in February 2017. All other projects within the PSF’s organization are hosted on GitHub and are using GitHub issues. CPython is still using Roundup as the issue tracker on bugs.python.org (bpo) <a class="footnote-reference brackets" href="#id20" id="id1">[1]</a>.</p> <section id="why-github"> <h3><a class="toc-backref" href="#why-github" role="doc-backlink">Why GitHub?</a></h3> <p>GitHub has a lot of nice features, readily available out of the box. Some of these aren’t readily available on Roundup / bpo.</p> <ul class="simple"> <li>APIs that can be used to build integrations and automations. There are various existing integrations and applications available from GitHub Marketplace to help with the workflow. New applications are easily installed and enabled. In addition, we’ve had great success with building our own GitHub bots, like miss-islington <a class="footnote-reference brackets" href="#id21" id="id2">[2]</a>, bedevere <a class="footnote-reference brackets" href="#id22" id="id3">[3]</a>, and the-knights-who-say-ni <a class="footnote-reference brackets" href="#id23" id="id4">[4]</a>.</li> <li>Ability to embed/drag and drop screenshots and debug log files into GitHub pull requests and issues.</li> <li>Administrators and core developers can edit issues, comments, and pull requests.</li> <li>Ability to reply to issue and pull request conversations via email.</li> <li>Support for two factor authentication.</li> <li>Support for markdown and emoji.</li> <li>Preview tab, showing how a comment will be rendered, prior to actually posting.</li> <li>Support for voting via reactions.</li> <li>Support for permalinks <a class="footnote-reference brackets" href="#id24" id="id5">[5]</a>, allowing easy quoting and copying &amp; pasting of source code. It is possible to automatically embed code snippet on GitHub by pasting a permalink.</li> <li>Core developers, volunteers, and the PSF don’t have to maintain the issue infrastructure/site, giving us more time and resources to focus on the development of Python.</li> <li>Ability to automatically close issues when a PR has been merged <a class="footnote-reference brackets" href="#id25" id="id6">[6]</a>.<ul> <li>Note that this feature exists in bpo too.</li> </ul> </li> <li>Lower barrier to contribution. With more than 28 million users, an open source contributor is more likely to already have an account and be familiar with GitHub’s interface, making it easier to start contributing.</li> <li>Email notifications containing metadata <a class="footnote-reference brackets" href="#id26" id="id7">[7]</a>, integrated with Gmail, allowing systematic filtering of emails. While Roundup emails contain some metadata, they’re not as extensive.</li> <li>Additional privacy, such as offering the user a choice to hide an email address, while still allowing communication with the user through &#64;-mentions.</li> </ul> </section> <section id="issues-with-roundup-bpo"> <h3><a class="toc-backref" href="#issues-with-roundup-bpo" role="doc-backlink">Issues with Roundup / bpo</a></h3> <ul> <li>Less than five people maintain bpo. Some of them are core developers.</li> <li>The upstream Roundup code is in Mercurial. Without any CI available, it puts heavy burden on the few existing maintainers in terms of reviewing, testing, and applying patches. While there is an unofficial mirror of Roundup on GitHub <a class="footnote-reference brackets" href="#id27" id="id8">[8]</a>, Mercurial patches are still the main way to contribute to it.<p>There is an open discussion about moving the source code of bpo to GitHub <a class="footnote-reference brackets" href="#id28" id="id9">[9]</a>. If the source code of bpo does move to GitHub, it will become difficult to update patches from upstream. But as long as it is in Mercurial, it is difficult to maintain and onboard new contributors.</p> </li> <li>In its current state, the project is not equipped to accept lots of contributions from people who aren’t already familiar with the code base.</li> <li>The user interface needs an update and redesign. It will require UX/UI research to keep it up to date with current web standards, including accessibility.</li> <li>Users email addresses were exposed.<ul class="simple"> <li>Note: Exposing email address to registered and logged in users was a decision taken when bpo instance was setup. This behavior has been recently modified after <a class="pep reference internal" href="../pep-0581/" title="PEP 581 – Using GitHub Issues for CPython">PEP 581</a>’s acceptance.</li> </ul> </li> <li>REST API is not currently available in bpo. There was an open issue in Roundup for adding REST API <a class="footnote-reference brackets" href="#id29" id="id10">[10]</a>. At the time <a class="pep reference internal" href="../pep-0581/" title="PEP 581 – Using GitHub Issues for CPython">PEP 581</a> was proposed, the ticket received no activity since 2016. REST API has been integrated in Roundup in February 2019, however it is not yet integrated to bpo.</li> <li>It sends a number of unnecessary emails and notifications. An example is the nosy email, where email notifications are sent whenever someone adds themselves as “nosy”. An issue has been filed in upstream Roundup about this since 2012 with little traction <a class="footnote-reference brackets" href="#id30" id="id11">[11]</a>. While it can be configured, the request to configure it was not addressed/ignored.</li> <li>Creating an account has been a hassle. There have been reports of people having trouble creating accounts or logging in. Some examples of open tickets: “Commas in username causes error in nosy list” <a class="footnote-reference brackets" href="#id31" id="id12">[12]</a>, “An error has occurred ..” <a class="footnote-reference brackets" href="#id32" id="id13">[13]</a>, “It is not sending me the confirmation email …” <a class="footnote-reference brackets" href="#id33" id="id14">[14]</a>.</li> </ul> </section> </section> <section id="why-not-gitlab"> <h2><a class="toc-backref" href="#why-not-gitlab" role="doc-backlink">Why not GitLab?</a></h2> <p>Had we migrated to GitLab instead of GitHub in 2017, this PEP would have been titled “Using GitLab Issues for CPython”.</p> </section> <section id="why-not-another-issue-tracker"> <h2><a class="toc-backref" href="#why-not-another-issue-tracker" role="doc-backlink">Why not another issue tracker?</a></h2> <p>Using another issue tracker will require yet another learning curve, for having to learn and get used to a different interface. We’ll also need to learn and figure out how to build the integrations with GitHub.</p> <p>By using GitHub issues, where the CPython source code is currently hosted and where pull requests are taking place, we’ll be providing consistent experience to contributors and maintainers, while not having to jump from one interface to another.</p> </section> <section id="why-not-focus-on-improving-roundup-bpo"> <h2><a class="toc-backref" href="#why-not-focus-on-improving-roundup-bpo" role="doc-backlink">Why not focus on improving Roundup / bpo?</a></h2> <p>GitHub has many features we like that are already available. We still need to build out additional integrations and update our bots, but this is something we already know how to do.</p> <p>In order to really improve Roundup / bpo, it needs to first migrate to GitHub and add CI and bots. As I understand it, there is hesitation because upstream Roundup is still in Mercurial. Someone more familiar with Roundup / bpo needs to champion this effort. (I’m not volunteering, I’m sorry).</p> <p>I believe the effort of creating and maintaining GitHub integrations and bots is much less than the effort needed to get Roundup up to speed and then to continue maintaining it.</p> </section> <section id="downsides-of-github"> <h2><a class="toc-backref" href="#downsides-of-github" role="doc-backlink">Downsides of GitHub</a></h2> <p>GitHub is not the perfect issue tracker. Several issues we need to be aware of:</p> <ul class="simple"> <li>Fear of uncertainty and vendor lock in. GitHub is proprietary and there is risk of vendor lock-in. However, this is an existing problem since CPython’s codebase is already on GitHub. This is also not a unique problem to CPython. As a precautionary step, CPython’s repository on GitHub has been backed up on daily basis since June 2018. <a class="footnote-reference brackets" href="#id34" id="id15">[15]</a></li> <li>Bots maintenance costs money, and also takes up volunteer time. We would be shifting maintenance burden from Roundup to the bots. At the very least, so far we’ve been able to address any bugs/issues related to the bots/GitHub APIs rather quickly, in a matter of days, instead of months or years. GitHub APIs are extensive, and used not only by CPython’s bots but also by the wider Python community. It makes GitHub APIs more approachable compared to the maintenance of Roundup/bpo.</li> <li>Using GitHub could possibly increase the triaging effort. This was first raised as a Zulip topic <a class="footnote-reference brackets" href="#id35" id="id16">[16]</a>, and also brought up during Core Python sprint in September 2018 <a class="footnote-reference brackets" href="#id36" id="id17">[17]</a>. A few solutions have been proposed and considered, such as creating a special triage team <a class="footnote-reference brackets" href="#id37" id="id18">[18]</a>. After <a class="pep reference internal" href="../pep-0581/" title="PEP 581 – Using GitHub Issues for CPython">PEP 581</a>’s acceptance, GitHub released a new triaging role, currently in beta. The PSF has been in touch with GitHub to have this enabled for Python organization. This is pending GitHub’s review <a class="footnote-reference brackets" href="#id38" id="id19">[19]</a>.</li> <li>Using GitHub could make it easier for people to post disruptive or spammy comments. It is true that there has been incidents where core developers have to moderate and lock disruptive discussions on GitHub. Thankfully, GitHub interface makes it easy for core developers to moderate discussions. In addition, incidents can be escalated to GitHub.</li> <li>Manually editing issue templates can be cumbersome and error-prone. However, for most people, creating issues on GitHub will be a much better experience than creating issue on bpo. The numerous fields and textbox to choose from can be confusing and intimidating to a newcomer, and it is not possible to “edit” a message. On GitHub, issue creator can preview their submission, and edit their mistake after posting.</li> <li>bpo uses a number of fields to specify several metadata, and these might not be easily transferable to GitHub. The intended way to handle custom metadata on GitHub is by using labels. The details of which labels to create will be further discussed in <a class="pep reference internal" href="../pep-0588/" title="PEP 588 – GitHub Issues Migration Plan">PEP 588</a>.</li> </ul> </section> <section id="further-questions-and-discussions"> <h2><a class="toc-backref" href="#further-questions-and-discussions" role="doc-backlink">Further questions and discussions</a></h2> <p>You can post questions on Discourse under the <a class="reference external" href="https://discuss.python.org/c/core-workflow">Core-Workflow</a> category.</p> </section> <section id="acknowledgements"> <h2><a class="toc-backref" href="#acknowledgements" role="doc-backlink">Acknowledgements</a></h2> <p>Thanks to Guido van Rossum, Brett Cannon, and Alyssa Coghlan, who were consulted in the early stage and research of this PEP. Their feedback, concerns, input, and ideas have been valuable.</p> </section> <section id="references"> <h2><a class="toc-backref" href="#references" role="doc-backlink">References</a></h2> <aside class="footnote-list brackets"> <aside class="footnote brackets" id="id20" role="doc-footnote"> <dt class="label" id="id20">[<a href="#id1">1</a>]</dt> <dd>bugs.python.org (<a class="reference external" href="https://bugs.python.org/">https://bugs.python.org/</a>)</aside> <aside class="footnote brackets" id="id21" role="doc-footnote"> <dt class="label" id="id21">[<a href="#id2">2</a>]</dt> <dd>miss-islington (<a class="reference external" href="https://github.com/python/miss-islington">https://github.com/python/miss-islington</a>)</aside> <aside class="footnote brackets" id="id22" role="doc-footnote"> <dt class="label" id="id22">[<a href="#id3">3</a>]</dt> <dd>bedevere (<a class="reference external" href="https://github.com/python/bedevere">https://github.com/python/bedevere</a>)</aside> <aside class="footnote brackets" id="id23" role="doc-footnote"> <dt class="label" id="id23">[<a href="#id4">4</a>]</dt> <dd>the-knights-who-say-ni (<a class="reference external" href="https://github.com/python/the-knights-who-say-ni">https://github.com/python/the-knights-who-say-ni</a>)</aside> <aside class="footnote brackets" id="id24" role="doc-footnote"> <dt class="label" id="id24">[<a href="#id5">5</a>]</dt> <dd>Getting permanent links to files (<a class="reference external" href="https://help.github.com/articles/getting-permanent-links-to-files/">https://help.github.com/articles/getting-permanent-links-to-files/</a>)</aside> <aside class="footnote brackets" id="id25" role="doc-footnote"> <dt class="label" id="id25">[<a href="#id6">6</a>]</dt> <dd>Closing issues using keywords (<a class="reference external" href="https://help.github.com/articles/closing-issues-using-keywords/">https://help.github.com/articles/closing-issues-using-keywords/</a>)</aside> <aside class="footnote brackets" id="id26" role="doc-footnote"> <dt class="label" id="id26">[<a href="#id7">7</a>]</dt> <dd>About GitHub email notifications (<a class="reference external" href="https://help.github.com/articles/about-email-notifications/">https://help.github.com/articles/about-email-notifications/</a>)</aside> <aside class="footnote brackets" id="id27" role="doc-footnote"> <dt class="label" id="id27">[<a href="#id8">8</a>]</dt> <dd>Unofficial GitHub mirror of Roundup (<a class="reference external" href="https://github.com/roundup-tracker/roundup">https://github.com/roundup-tracker/roundup</a>)</aside> <aside class="footnote brackets" id="id28" role="doc-footnote"> <dt class="label" id="id28">[<a href="#id9">9</a>]</dt> <dd>Consider whether or not to migrate bugs.python.org source code to GitHub repo (<a class="reference external" href="https://github.com/python/bugs.python.org/issues/2">https://github.com/python/bugs.python.org/issues/2</a>)</aside> <aside class="footnote brackets" id="id29" role="doc-footnote"> <dt class="label" id="id29">[<a href="#id10">10</a>]</dt> <dd>Roundup issue 2550734: Expose roundup via a RESTful interface (<a class="reference external" href="http://issues.roundup-tracker.org/issue2550734">http://issues.roundup-tracker.org/issue2550734</a>)</aside> <aside class="footnote brackets" id="id30" role="doc-footnote"> <dt class="label" id="id30">[<a href="#id11">11</a>]</dt> <dd>Roundup issue 2550742: Do not send email by default when adding or removing oneself from the Nosy list (<a class="reference external" href="http://issues.roundup-tracker.org/issue2550742">http://issues.roundup-tracker.org/issue2550742</a>)</aside> <aside class="footnote brackets" id="id31" role="doc-footnote"> <dt class="label" id="id31">[<a href="#id12">12</a>]</dt> <dd>Commas in username causes error (<a class="reference external" href="https://github.com/python/bugs.python.org/issues/26">https://github.com/python/bugs.python.org/issues/26</a>)</aside> <aside class="footnote brackets" id="id32" role="doc-footnote"> <dt class="label" id="id32">[<a href="#id13">13</a>]</dt> <dd>It is not sending me the confirmation email (<a class="reference external" href="https://github.com/python/bugs.python.org/issues/27">https://github.com/python/bugs.python.org/issues/27</a>)</aside> <aside class="footnote brackets" id="id33" role="doc-footnote"> <dt class="label" id="id33">[<a href="#id14">14</a>]</dt> <dd>An error has occurred (<a class="reference external" href="https://github.com/python/bugs.python.org/issues/26">https://github.com/python/bugs.python.org/issues/26</a>)</aside> <aside class="footnote brackets" id="id34" role="doc-footnote"> <dt class="label" id="id34">[<a href="#id15">15</a>]</dt> <dd>Backup GitHub information (<a class="reference external" href="https://github.com/python/core-workflow/issues/20#issuecomment-396709762">https://github.com/python/core-workflow/issues/20#issuecomment-396709762</a>)</aside> <aside class="footnote brackets" id="id35" role="doc-footnote"> <dt class="label" id="id35">[<a href="#id16">16</a>]</dt> <dd>s/n ratio – Python – Zulip (<a class="reference external" href="https://python.zulipchat.com/#narrow/stream/130206-pep581/topic/s.2Fn.20ratio">https://python.zulipchat.com/#narrow/stream/130206-pep581/topic/s.2Fn.20ratio</a>)</aside> <aside class="footnote brackets" id="id36" role="doc-footnote"> <dt class="label" id="id36">[<a href="#id17">17</a>]</dt> <dd>PEP 581 discussion at Python Core Sprint 2018 (<a class="reference external" href="https://mariatta.ca/core-sprint-2018-part-2.html">https://mariatta.ca/core-sprint-2018-part-2.html</a>)</aside> <aside class="footnote brackets" id="id37" role="doc-footnote"> <dt class="label" id="id37">[<a href="#id18">18</a>]</dt> <dd>Proposal: Create Bug Triage team on GitHub (<a class="reference external" href="https://discuss.python.org/t/proposal-create-bug-triage-team-on-github/992">https://discuss.python.org/t/proposal-create-bug-triage-team-on-github/992</a>)</aside> <aside class="footnote brackets" id="id38" role="doc-footnote"> <dt class="label" id="id38">[<a href="#id19">19</a>]</dt> <dd>Request to enable triage role on GitHub (<a class="reference external" href="https://discuss.python.org/t/proposal-create-bug-triage-team-on-github/992/16">https://discuss.python.org/t/proposal-create-bug-triage-team-on-github/992/16</a>)</aside> </aside> </section> <section id="copyright"> <h2><a class="toc-backref" href="#copyright" role="doc-backlink">Copyright</a></h2> <p>This document has been placed in the public domain.</p> </section> </section> <hr class="docutils" /> <p>Source: <a class="reference external" href="https://github.com/python/peps/blob/main/peps/pep-0581.rst">https://github.com/python/peps/blob/main/peps/pep-0581.rst</a></p> <p>Last modified: <a class="reference external" href="https://github.com/python/peps/commits/main/peps/pep-0581.rst">2024-06-02 04:57:49 GMT</a></p> </article> <nav id="pep-sidebar"> <h2>Contents</h2> <ul> <li><a class="reference internal" href="#abstract">Abstract</a></li> <li><a class="reference internal" href="#rationale">Rationale</a><ul> <li><a class="reference internal" href="#why-github">Why GitHub?</a></li> <li><a class="reference internal" href="#issues-with-roundup-bpo">Issues with Roundup / bpo</a></li> </ul> </li> <li><a class="reference internal" href="#why-not-gitlab">Why not GitLab?</a></li> <li><a class="reference internal" href="#why-not-another-issue-tracker">Why not another issue tracker?</a></li> <li><a class="reference internal" href="#why-not-focus-on-improving-roundup-bpo">Why not focus on improving Roundup / bpo?</a></li> <li><a class="reference internal" href="#downsides-of-github">Downsides of GitHub</a></li> <li><a class="reference internal" href="#further-questions-and-discussions">Further questions and discussions</a></li> <li><a class="reference internal" href="#acknowledgements">Acknowledgements</a></li> <li><a class="reference internal" href="#references">References</a></li> <li><a class="reference internal" href="#copyright">Copyright</a></li> </ul> <br> <a id="source" href="https://github.com/python/peps/blob/main/peps/pep-0581.rst">Page Source (GitHub)</a> </nav> </section> <script src="../_static/colour_scheme.js"></script> <script src="../_static/wrap_tables.js"></script> <script src="../_static/sticky_banner.js"></script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10