PEP 581: Copy editing (GH-757)
This commit is contained in:
parent
4a33866e32
commit
45179d1991
189
pep-0581.rst
189
pep-0581.rst
|
@ -3,7 +3,7 @@ Title: Using GitHub Issues for CPython
|
|||
Version: $Revision$
|
||||
Last-Modified: $Date$
|
||||
Author: Mariatta Wijaya <mariatta@python.org>
|
||||
Discussions-To: ``#pep581`` stream in zulip
|
||||
Discussions-To: ``#pep581`` stream in Zulip
|
||||
Status: Draft
|
||||
Type: Process
|
||||
Content-Type: text/x-rst
|
||||
|
@ -14,69 +14,69 @@ Abstract
|
|||
========
|
||||
|
||||
This PEP outlines the steps required to migrate Python's issue tracker
|
||||
from Roundup to using GitHub Issues.
|
||||
from Roundup to GitHub issues.
|
||||
|
||||
|
||||
Rationale
|
||||
=========
|
||||
|
||||
CPython's development moved to GitHub on 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 in bugs.python.org (bpo) [1]_.
|
||||
CPython's development moved to GitHub on 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) [1]_.
|
||||
|
||||
Why GitHub
|
||||
----------
|
||||
|
||||
GitHub has a lot of nice features readily available out of the box, that are not
|
||||
currently available in Roundup / bpo.
|
||||
GitHub has a lot of nice features, readily available out of the box, that are
|
||||
not currently available on Roundup / bpo.
|
||||
|
||||
- APIs we can use to build integrations and automations. There are various existing
|
||||
integrations and applications available from GitHub Marketplace to help with
|
||||
our workflow. New applications are easily installed and enabled. In addition,
|
||||
we've had great success with building our own GitHub bots, like miss-islington [14]_,
|
||||
bedevere [15]_, and the-knights-who-say-ni [16]_.
|
||||
- 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 [14]_, bedevere [15]_, and the-knights-who-say-ni [16]_.
|
||||
|
||||
- Ability to embed/drag and drop screenshots, debug log files into GitHub pull
|
||||
requests and issues.
|
||||
- Ability to embed/drag and drop screenshots and debug log files into GitHub
|
||||
pull requests and issues.
|
||||
|
||||
- Administrators and core developers can edit issues comments and pull requests.
|
||||
- Administrators and core developers can edit issues, comments, and pull requests.
|
||||
|
||||
- Ability to reply to issues and pull request conversations via email.
|
||||
- Ability to reply to issue and pull request conversations via email.
|
||||
|
||||
- It supports two factor authentication.
|
||||
- Support for two factor authentication.
|
||||
|
||||
- It supports markdown and emoji.
|
||||
- Support for markdown and emoji.
|
||||
|
||||
- It has a preview tab, so we can see how our comment will be rendered, before
|
||||
- Preview tab, showing how a comment will be rendered, prior to
|
||||
actually posting.
|
||||
|
||||
- It supports voting (reactions).
|
||||
- Support for voting via reactions.
|
||||
|
||||
- It supports permalink [2]_, allowing us to quote and copy paste
|
||||
source code easily.
|
||||
- Support for permalinks [2]_, allowing easy quoting and copying & pasting of
|
||||
source code.
|
||||
|
||||
- Core developers don't have to maintain the issue infrastructure/site, giving
|
||||
us more time to focus on the development of Python.
|
||||
|
||||
- We can automatically close issues when a PR has been merged [3]_.
|
||||
- Ability to automatically close issues when a PR has been merged [3]_.
|
||||
|
||||
- Lowers the barrier to contribution. With more than 28 million users, an open
|
||||
source contributor is more likely to already have an account, and familiar
|
||||
with GitHub interface, making it easier to start contributing.
|
||||
- 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.
|
||||
|
||||
- Email notifications contain metadata [4]_, integrated with GMail, and
|
||||
allows you to systematically filter emails.
|
||||
- Email notifications containing metadata [4]_, integrated with Gmail, allowing
|
||||
systematic filtering of emails.
|
||||
|
||||
- Provides additional privacy such as offering the user a choice to hide an
|
||||
email address yet still allow communication with the user through @-mentions.
|
||||
- Additional privacy, such as offering the user a choice to hide an
|
||||
email address, while still allowing communication with the user through @-mentions.
|
||||
|
||||
Issues with bpo / Roundup
|
||||
Issues with Roundup / bpo
|
||||
-------------------------
|
||||
|
||||
- Less than five people maintain bpo. Some of them are core developers.
|
||||
|
||||
- It is in Mercurial. Without any CI available, it puts heavy burden on existing
|
||||
(few) maintainers in terms of reviewing, testing, and applying patches.
|
||||
- It is in Mercurial. Without any CI available, it puts heavy burden on the few
|
||||
existing maintainers in terms of reviewing, testing, and applying patches.
|
||||
|
||||
- At its current state, it is not equipped to accept lots of contributions from
|
||||
people who aren't already familiar with the code base.
|
||||
|
@ -84,7 +84,7 @@ Issues with bpo / Roundup
|
|||
- The upstream Roundup is in Mercurial. There is an open discussion about
|
||||
moving the source code of bpo to GitHub [5]_. 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 be difficult to maintain
|
||||
upstream. But as long as it is in Mercurial, it is difficult to maintain
|
||||
and onboard new contributors.
|
||||
|
||||
- The user interface needs update and redesign. It will require UX/UI research
|
||||
|
@ -95,14 +95,14 @@ Issues with bpo / Roundup
|
|||
- There is no REST API available. There is an open issue in Roundup for adding
|
||||
REST API [6]_. Last activity was in 2016.
|
||||
|
||||
- It sends a number of unnecessary emails and notifications, and it is difficult,
|
||||
if not impossible, to configure. An example is the nosy email, where we get
|
||||
email notification whenever someone added themselves as "nosy".
|
||||
- It sends a number of unnecessary emails and notifications, and it is
|
||||
difficult, if not impossible, to configure. 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 [7]_.
|
||||
|
||||
- Creating an account has been a hassle. We've had reports when people have
|
||||
trouble creating accounts or logging in.
|
||||
- Creating an account has been a hassle. There have been reports of people
|
||||
having trouble creating accounts or logging in.
|
||||
|
||||
Why not GitLab
|
||||
--------------
|
||||
|
@ -110,16 +110,16 @@ Why not GitLab
|
|||
Had we migrated to GitLab instead of GitHub in 2017, this PEP would have been
|
||||
titled "Using GitLab Issues for CPython".
|
||||
|
||||
Why not other issue tracker
|
||||
---------------------------
|
||||
Why not another issue tracker
|
||||
-----------------------------
|
||||
|
||||
Using another issue tracker will require yet another learning curve, of having
|
||||
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.
|
||||
|
||||
By using GitHub issues, where the CPython source code is currently hosted, where
|
||||
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, and not having to jump from one interface to another.
|
||||
contributors and maintainers, while not having to jump from one interface to another.
|
||||
|
||||
Why not focus on improving Roundup / bpo
|
||||
----------------------------------------
|
||||
|
@ -128,14 +128,14 @@ 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.
|
||||
|
||||
In order to really improve Roundup / bpo, it needs to first migrate to GitHub,
|
||||
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
|
||||
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).
|
||||
|
||||
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.
|
||||
is much less than the effort needed to get Roundup up to speed and then to
|
||||
continue maintaining it.
|
||||
|
||||
|
||||
Migration Plan
|
||||
|
@ -144,34 +144,33 @@ Migration Plan
|
|||
Backup of GitHub data
|
||||
---------------------
|
||||
|
||||
This effort has been started and being tracked as an issue in core-workflow
|
||||
[8]_. We're using GitHub Migrations API [9]_
|
||||
to download GitHub data for CPython on daily basis. The archives will be
|
||||
dropped in an S3 bucket.
|
||||
This effort has been started and is being tracked as an issue in core-workflow
|
||||
[8]_. We're using GitHub's Migrations API [9]_ to download GitHub data for
|
||||
CPython on a daily basis. The archives will be dropped in a S3 bucket.
|
||||
|
||||
Thanks to Ernest W. Durbin III for working on this.
|
||||
|
||||
Update the CLA host
|
||||
-------------------
|
||||
|
||||
At the moment the CLA is hosted within bpo. It needs to be updated such that
|
||||
At the moment, the CLA is hosted within bpo. It needs to be updated such that
|
||||
signing the CLA does not require a bpo account, and it should be hosted outside
|
||||
of the bpo.
|
||||
|
||||
The current CLA process itself is not ideal. Currently contributors to
|
||||
devguide, peps, and core-workflow need to sign a CLA, and it requires a bpo
|
||||
The current CLA process itself is not ideal. Currently, contributors to
|
||||
devguide, peps, and core-workflow need to sign a CLA, and it requires a bpo
|
||||
account. A bpo account should not be required for those projects.
|
||||
|
||||
Currently the CLA process involves real human to manually check the records.
|
||||
Currently, the CLA process requires personnel to manually check the records.
|
||||
Question: Will it be possible to completely automate the CLA process, so
|
||||
it does not require human intervention?
|
||||
|
||||
Create labels for issue triage
|
||||
------------------------------
|
||||
|
||||
In bpo, we currently have the following fields for each issues:
|
||||
In bpo, we currently have the following fields for each issue:
|
||||
|
||||
Type: behavior, crash, compile error, resource usage, security, performance, enhancement.
|
||||
Types: behavior, crash, compile error, resource usage, security, performance, enhancement.
|
||||
Components: 2to3, Argument Clinic, asyncio, Build, Cross-build, ctypes, ...
|
||||
Priority: release blocker, deferred blocker, critical, high, normal, low
|
||||
|
||||
|
@ -183,7 +182,7 @@ We will create the corresponding labels::
|
|||
|
||||
priority-release blocker, priority-deferred blocker, priority-critical, ...
|
||||
|
||||
In addition, we'll create ``needs triage`` label.
|
||||
In addition, we'll create a ``needs triage`` label.
|
||||
|
||||
Create issue templates
|
||||
----------------------
|
||||
|
@ -198,12 +197,12 @@ We will create an issue template and add the following headers::
|
|||
---
|
||||
|
||||
The idea is to allow the issue creator to help us triage the issue.
|
||||
The above values are pre-filled in the template. Issue creator will remove texts
|
||||
that do not apply to their issue.
|
||||
The above values are pre-filled in the template. The issue creator will remove
|
||||
texts that do not apply to their issue.
|
||||
|
||||
Based on the above headers, bedevere-bot can apply the necessary labels to the
|
||||
issue. If issue creator did not supply the above headers, the bot will apply
|
||||
``needs triage`` label. At that point it will require a core developer to
|
||||
issue. If the issue creator did not supply the above headers, the bot will apply
|
||||
the ``needs triage`` label. At that point, it will require a core developer to
|
||||
properly label the issue.
|
||||
|
||||
We can also take advantage of GitHub's multiple issue template feature.
|
||||
|
@ -211,8 +210,8 @@ We can also take advantage of GitHub's multiple issue template feature.
|
|||
Updates to bedevere
|
||||
-------------------
|
||||
|
||||
Bedevere-bot will need to be updated to recognize the issue headers described above,
|
||||
and apply the proper labels.
|
||||
Bedevere-bot will need to be updated to recognize the issue headers described
|
||||
above and apply the proper labels.
|
||||
|
||||
Bedevere-bot can also copy over the labels to pull requests that correspond to
|
||||
the issue.
|
||||
|
@ -225,8 +224,8 @@ Provide explanation in the devguide about new issue workflow and triage labels.
|
|||
Add a button in bpo to migrate the issue to GitHub
|
||||
--------------------------------------------------
|
||||
|
||||
This will require actual update to the bpo. But I believe this effort needed
|
||||
is much less than a complete overhaul.
|
||||
This will require the bpo to be updated. But I believe the effort needed for
|
||||
this is much less than a complete overhaul.
|
||||
|
||||
We will create a button in bpo, that will copy over the issue description
|
||||
and associated comments into a GitHub issue.
|
||||
|
@ -238,52 +237,52 @@ just be closed.
|
|||
If a core developer is still interested in the issue, they can indicate so in
|
||||
the bpo issue, and later use the button to migrate it over to GitHub.
|
||||
|
||||
Make bpo readonly
|
||||
-----------------
|
||||
Make bpo read-only
|
||||
------------------
|
||||
|
||||
This should be the final step. Once we start using GitHub issues, make bpo
|
||||
readonly, not shut it down.
|
||||
read-only, instead of shutting it down.
|
||||
Do not accept new registrations. Do not allow comments or issues to be created.
|
||||
|
||||
|
||||
TBD and additional concerns
|
||||
===========================
|
||||
|
||||
Expert index
|
||||
------------
|
||||
Experts index
|
||||
-------------
|
||||
|
||||
At the moment, there is a mechanism to add people in expert index automatically
|
||||
added to the nosy list. We need to replicate this functionality.
|
||||
At the moment, there is a mechanism to automatically add people in the experts
|
||||
index to the nosy list. We need to replicate this functionality.
|
||||
|
||||
A GitHub account should not be a requirement
|
||||
--------------------------------------------
|
||||
|
||||
Back when it was discussed about moving the CPython codebase from Mercurial
|
||||
to GitHub [10]_ and [11]_, it was brought up that
|
||||
we need to still allow uploading patches in bpo, and that a GitHub account should
|
||||
not be a requirement in order to contribute to Python.
|
||||
Back when moving the CPython codebase from Mercurial to GitHub was being
|
||||
discussed [10]_ [11]_, it was brought up that we still needed to allow uploading
|
||||
of patches on bpo, and that a GitHub account should not be a requirement in
|
||||
order to contribute to Python.
|
||||
|
||||
If bpo is made readonly, we'll need to come up with a different solution to allow
|
||||
folks to contribute when they don't own a GitHub account.
|
||||
If bpo is made read-only, we'll need to come up with a different solution to
|
||||
allow people to contribute when they don't have a GitHub account.
|
||||
|
||||
One solution is to create a new "python-issues" mailing list, similar to
|
||||
One solution is to create a new "python-issues" mailing list, similar to the
|
||||
docs@python.org [12]_ mailing list, to allow people to submit their issues
|
||||
there.
|
||||
|
||||
Related to this, since the migration to GitHub in 2017, I recall one case
|
||||
[13]_ where we had one contributor who submitted patch to Mercurial, and
|
||||
refused to create a GitHub account. Because of this, our bot is unable to detect
|
||||
whether the have signed CLA. Another person had volunteered to upload his
|
||||
patch to GitHub. But we still require both people to sign the CLA.
|
||||
[13]_ where there was a contributor, who submitted a patch to Mercurial and
|
||||
refused to create a GitHub account. Because of this, our bot was unable to
|
||||
detect whether they had signed the CLA. Another person had volunteered to upload
|
||||
their patch to GitHub. But it was still required that both people sign the CLA.
|
||||
|
||||
That particular situation was complicated. It took up five core developers time
|
||||
That particular situation was complicated. It took up five core developers' time
|
||||
to investigate and manually check the CLA, causing confusion.
|
||||
|
||||
Trim off the "Components" list
|
||||
------------------------------
|
||||
|
||||
Is the current "components" list still making sense and relevant?
|
||||
Can we shorten the list?
|
||||
Can the list be shortened?
|
||||
|
||||
Priority list
|
||||
-------------
|
||||
|
@ -301,7 +300,7 @@ stream in python.zulipchat.com.
|
|||
Acknowledgements
|
||||
================
|
||||
|
||||
Thanks to Guido van Rossum, Brett Cannon, and Nick Coghlan who were consulted
|
||||
Thanks to Guido van Rossum, Brett Cannon, and Nick Coghlan, who were consulted
|
||||
in the early stage and research of this PEP. Their feedback, concerns, input,
|
||||
and ideas have been valuable.
|
||||
|
||||
|
@ -313,7 +312,7 @@ References
|
|||
(https://bugs.python.org/)
|
||||
|
||||
.. [2] Getting permanent links to files
|
||||
https://help.github.com/articles/getting-permanent-links-to-files/
|
||||
(https://help.github.com/articles/getting-permanent-links-to-files/)
|
||||
|
||||
.. [3] Closing issues using keywords
|
||||
(https://help.github.com/articles/closing-issues-using-keywords/)
|
||||
|
@ -323,19 +322,19 @@ References
|
|||
|
||||
.. [5] Consider whether or not to migrate bugs.python.org source code
|
||||
to GitHub repo
|
||||
https://github.com/python/bugs.python.org/issues/2
|
||||
(https://github.com/python/bugs.python.org/issues/2)
|
||||
|
||||
.. [6] Roundup issue 2550734 Expose roundup via a RESTful interface
|
||||
.. [6] Roundup issue 2550734: Expose roundup via a RESTful interface
|
||||
(http://issues.roundup-tracker.org/issue2550734)
|
||||
|
||||
.. [7] Roundup issue 2550742 Do not send email by default when adding
|
||||
.. [7] Roundup issue 2550742: Do not send email by default when adding
|
||||
or removing oneself from the Nosy list
|
||||
(http://issues.roundup-tracker.org/issue2550742)
|
||||
|
||||
.. [8] Backup GitHub information
|
||||
(https://github.com/python/core-workflow/issues/20)
|
||||
|
||||
.. [9] GitHub Migrations API
|
||||
.. [9] GitHub's Migrations API
|
||||
(https://developer.github.com/v3/migrations/orgs/)
|
||||
|
||||
.. [10] Python-committers email
|
||||
|
@ -347,7 +346,7 @@ References
|
|||
.. [12] docs mailing list
|
||||
(https://mail.python.org/mailman/listinfo/docs)
|
||||
|
||||
.. [13] CPython GitHub Pull request 1505
|
||||
.. [13] CPython GitHub pull request 1505
|
||||
(https://github.com/python/cpython/pull/1505)
|
||||
|
||||
.. [14] miss-islington
|
||||
|
|
Loading…
Reference in New Issue