PEP 581 – 将 GitHub Issues 用于 CPython
- 作者:
- Mariatta <mariatta at python.org>
- BDFL 委托:
- Barry Warsaw <barry at python.org>
- 讨论至:
- Discourse 帖子
- 状态:
- 最终版
- 类型:
- 流程
- 创建日期:
- 2018 年 6 月 20 日
- 发布历史:
- 2019 年 3 月 7 日
- 决议:
- Python-Dev 消息
摘要
本 PEP 概述了从 Python 的 Roundup 问题追踪器迁移到 GitHub Issues 的理由。有关详细的迁移计划,请参见 PEP 588。
基本原理
CPython 的开发于 2017 年 2 月迁移到 GitHub。PSF 组织内的所有其他项目都托管在 GitHub 上,并使用 GitHub issues。CPython 仍然在 bugs.python.org (bpo) [1] 上使用 Roundup 作为问题追踪器。
为什么选择 GitHub?
GitHub 拥有许多开箱即用的出色功能。其中一些在 Roundup / bpo 上并不容易获得。
- 可用于构建集成和自动化的 API。GitHub Marketplace 上有各种现有的集成和应用程序,可帮助简化工作流程。新应用程序易于安装和启用。此外,我们在构建自己的 GitHub 机器人方面取得了巨大成功,例如 miss-islington [2]、bedevere [3] 和 the-knights-who-say-ni [4]。
- 能够将截图和调试日志文件嵌入/拖放到 GitHub 拉取请求和 issue 中。
- 管理员和核心开发者可以编辑 issue、评论和拉取请求。
- 能够通过电子邮件回复 issue 和拉取请求对话。
- 支持双因素身份验证。
- 支持 Markdown 和表情符号。
- 预览选项卡,在实际发布之前显示评论将如何呈现。
- 支持通过反应进行投票。
- 支持永久链接 [5],方便引用和复制粘贴源代码。通过粘贴永久链接,可以在 GitHub 上自动嵌入代码片段。
- 核心开发者、志愿者和 PSF 不必维护问题基础设施/网站,从而有更多时间和资源专注于 Python 的开发。
- 在 PR 合并后自动关闭 issue 的能力 [6]。- 请注意,bpo 也存在此功能。
 
- 降低贡献门槛。GitHub 拥有超过 2800 万用户,开源贡献者更有可能已经拥有一个账户并熟悉 GitHub 的界面,从而更容易开始贡献。
- 包含元数据 [7] 的电子邮件通知,与 Gmail 集成,允许系统地过滤电子邮件。虽然 Roundup 电子邮件包含一些元数据,但它们不那么广泛。
- 额外的隐私,例如为用户提供隐藏电子邮件地址的选择,同时仍允许通过 @-提及与用户通信。
Roundup / bpo 的问题
- 维护 bpo 的人不到五个。其中一些是核心开发者。
- 上游 Roundup 代码位于 Mercurial 中。由于没有可用的 CI,这给少数现有维护者带来了沉重的审查、测试和应用补丁的负担。虽然 GitHub 上有一个非官方的 Roundup 镜像 [8],但 Mercurial 补丁仍然是为其贡献的主要方式。目前正在讨论将 bpo 的源代码迁移到 GitHub [9]。如果 bpo 的源代码确实迁移到 GitHub,那么从上游更新补丁将变得困难。但只要它在 Mercurial 中,就难以维护和吸收新的贡献者。 
- 以目前的状态,该项目不具备接受大量不熟悉代码库的人的贡献的能力。
- 用户界面需要更新和重新设计。它将需要 UX/UI 研究,以使其与当前的网页标准保持一致,包括可访问性。
- 用户的电子邮件地址被暴露。- 注意:将电子邮件地址暴露给注册并登录的用户是在设置 bpo 实例时做出的决定。此行为在 PEP 581 接受后最近已修改。
 
- REST API 目前在 bpo 中不可用。Roundup 中曾有一个关于添加 REST API 的未解决 issue [10]。在 PEP 581 提出时,该工单自 2016 年以来没有任何活动。REST API 已于 2019 年 2 月集成到 Roundup 中,但尚未集成到 bpo。
- 它发送了许多不必要的电子邮件和通知。一个例子是 nosy 电子邮件,每当有人将自己添加为“nosy”时,就会发送电子邮件通知。自 2012 年以来,上游 Roundup 中已为此提交了一个 issue,但进展甚微 [11]。虽然可以配置,但配置请求未被处理/忽略。
- 创建账户一直很麻烦。有人报告创建账户或登录时遇到问题。一些未解决工单的例子:“用户名中的逗号导致 nosy 列表出错” [12],“发生错误...” [13],“它没有给我发送确认电子邮件...” [14]。
为什么不选择 GitLab?
如果我们 2017 年迁移到 GitLab 而不是 GitHub,那么这个 PEP 的标题将是“将 GitLab Issues 用于 CPython”。
为什么不选择其他问题追踪器?
使用另一个问题追踪器将需要另一个学习曲线,因为必须学习和习惯不同的界面。我们还需要学习并弄清楚如何与 GitHub 构建集成。
通过使用 GitHub issues,CPython 源代码目前托管在此处,拉取请求也在此处进行,我们将为贡献者和维护者提供一致的体验,而无需从一个界面跳到另一个界面。
为什么不专注于改进 Roundup / bpo?
GitHub 拥有许多我们喜欢的功能,并且已经可用。我们仍然需要构建额外的集成并更新我们的机器人,但这是我们已经知道如何做的事情。
为了真正改进 Roundup / bpo,它需要首先迁移到 GitHub 并添加 CI 和机器人。据我所知,由于上游 Roundup 仍在 Mercurial 中,因此存在犹豫。更熟悉 Roundup / bpo 的人需要主导这项工作。(我不是志愿者,抱歉)。
我相信创建和维护 GitHub 集成和机器人的工作量远小于使 Roundup 达到速度并继续维护它所需的工作量。
GitHub 的缺点
GitHub 并不是一个完美的问题追踪器。我们需要注意几个问题。
- 对不确定性和供应商锁定的担忧。GitHub 是专有的,存在供应商锁定的风险。然而,由于 CPython 的代码库已经存在于 GitHub 上,这是一个现有问题。这也不是 CPython 独有的问题。作为预防措施,CPython 在 GitHub 上的存储库自 2018 年 6 月以来每天都在备份。[15]
- 机器人维护成本高昂,也占用志愿者时间。我们将维护负担从 Roundup 转移到机器人。至少,到目前为止,我们已经能够相当快地(几天之内,而不是几个月或几年)解决与机器人/GitHub API 相关的任何错误/问题。GitHub API 广泛,不仅被 CPython 的机器人使用,也被更广泛的 Python 社区使用。这使得 GitHub API 比维护 Roundup/bpo 更易于使用。
- 使用 GitHub 可能会增加分类工作量。这最初是在 Zulip 话题中提出的 [16],也在 2018 年 9 月的核心 Python 冲刺中提出 [17]。已经提出并考虑了几种解决方案,例如创建一个特殊的分类团队 [18]。在 PEP 581 接受后,GitHub 发布了一个新的分类角色,目前处于测试阶段。PSF 一直与 GitHub 保持联系,以使其在 Python 组织中启用。这正在等待 GitHub 的审查 [19]。
- 使用 GitHub 可能会让人们更容易发布破坏性或垃圾评论。确实发生过核心开发者必须审核和锁定 GitHub 上破坏性讨论的事件。值得庆幸的是,GitHub 界面使核心开发者可以轻松审核讨论。此外,事件可以升级到 GitHub。
- 手动编辑 issue 模板可能繁琐且容易出错。然而,对于大多数人来说,在 GitHub 上创建 issue 将比在 bpo 上创建 issue 体验更好。许多字段和文本框的选择可能会让新人感到困惑和望而生畏,而且无法“编辑”消息。在 GitHub 上,issue 创建者可以在提交前预览其内容,并在发布后编辑其错误。
- bpo 使用多个字段来指定一些元数据,这些元数据可能不易转移到 GitHub。在 GitHub 上处理自定义元数据的预期方法是使用标签。将在 PEP 588 中进一步讨论创建哪些标签的细节。
更多问题和讨论
您可以在 Discourse 的 核心工作流 类别下发布问题。
致谢
感谢 Guido van Rossum、Brett Cannon 和 Alyssa Coghlan,他们在 PEP 的早期阶段和研究中提供了咨询。他们的反馈、担忧、意见和想法都非常宝贵。
参考资料
版权
本文档已置于公共领域。
来源: https://github.com/python/peps/blob/main/peps/pep-0581.rst
最后修改时间: 2024-06-02 04:57:49 GMT