NEP 6 — 替换 Trac 为不同的 Bug 跟踪器#
- 作者:
David Cournapeau, Stefan van der Walt
- 状态:
Deferred
NumPy 和 SciPy 的一些发布管理员对当前的开发工作流程,特别是 Bug 跟踪方面,越来越感到不满。本文档旨在解释一些存在问题的场景、当前 Trac 的局限性以及可以采取的措施。
场景#
新版本发布#
版本发布的流程大致如下:
找出上一个版本以来的所有已知回归 Bug 并修复它们。
了解自上次发布以来报告的所有 Bug。
对 Bug 进行分类,如回归/阻塞性问题等,并将其分配到相应的路线图、子软件包和维护者。
通知子软件包维护者。
在目前 SciPy 上使用的 Trac 中,这些任务中的大部分都效率低下。
难以跟踪问题。特别是,每次访问 Trac 时,我们都无法真正区分哪些是新问题,哪些不是。如果将问题视为电子邮件,那么当前的情况就像没有已读/未读功能一样。
批量处理问题:同时更改多个问题的特性非常困难,因为唯一可用的界面是基于 Web 的。基于命令行界面在此类场景下效率更高。
总的来说,使用当前部署的 Trac 来生成有用的报告非常麻烦。Trac 0.11 可能会解决其中一些问题,但它必须比 SciPy 网站上当前部署的版本好得多。查找带有补丁的问题、旧补丁等,以及生成报告,必须比现在更加 streamlined。
子组件维护者#
假设你是 scipy.foo 的维护者,那么你主要关心的是只获取与 scipy.foo 相关的 Bug。但对于整个团队来说,跟踪你的工作应该很容易——对于普通用户(例如非开发者)来说,能够关注一些新功能的开发进展也应该很容易。
代码审查,新进代码#
目标很简单:尽可能降低参与门槛,并确保人们知道在每个步骤中应该做什么,以便为 NumPy 或 SciPy 做出贡献。
目前,补丁在 Trac 中滞留时间过长。当然,时间不足是一个主要原因;但是,跟踪新贡献者的流程可以做得更简单。
应该能够仅针对 NumPy/SciPy 的某个子集进行审查时才收到通知。
对此类补丁感兴趣的人应该能够跟踪其进展。评论,以及“迷你”时间线可能很有用,特别是对于大规模问题(从编码的角度来看)。
当前 Trac 的局限性#
注意:这里说的 Trac 指的是当前部署的版本。一些较新版本可能解决了其中一些问题。
多项目支持:我们有三个 Trac 实例,一个用于 SciPy,一个用于 NumPy,一个用于 Scikit。创建帐户、维护和更新每个实例都是一项维护负担。没有人喜欢做这种工作,所以任何可以减轻负担的事情都是有益的。此外,经常发生针对 NumPy 的 Bug 被提交到 SciPy Trac,反之亦然。您必须手动处理这种情况。
非基于 Web 界面的客户端。这可以通过 xmlrpc 插件 + 一些客户端来实现。特别是像 http://tracexplorer.devjavu.com/ 这样的工具可能对喜欢 IDE 的人很有吸引力。至少有一个人表达了希望与 Eclipse 进行尽可能多的集成的愿望。
强大的查询:应该能够快速查找两个版本之间的问题、自给定日期以来的新问题、带有补丁的问题、等待审查的问题等。问题数据必须是可定制的,因为大多数 Bug 跟踪器不支持审查等功能,所以我们需要自己处理(通过标签等)。
标记问题为已读/未读。任何用户还应该能够“屏蔽”问题以忽略它们。
问题依赖关系。在我的经验中,这对于可以分解为几个问题的大型功能非常有用。路线图只能由 Trac 管理员创建,而且它们相当笨重。
可能的候选者#
更新 Trac + 插件#
优点
相同的系统
用 Python 编写,所以我们可以根据需要进行修改。
缺点
Trac 的目标是基础,并通过插件进行扩展。但是大多数插件已损坏或未更新。关于哪些插件成熟的信息不容易获得。
至少 scipy.org 的 Trac 运行缓慢,并且需要不断重启。这根本是不可接受的。
Redmine
优点
支持大多数功能(除了 xmlrpc?)。多项目等……
(主观):我(cdavid)发现 Redmine 的开箱即用体验更令人愉悦。可以轻松获得更多信息,点击更少,流程更顺畅。请参阅 https://redmine.ruby-lang.org.cn/wiki/redmine/TheyAreUsingRedmine 以获取示例。
Trac 的转换脚本(在 NumPy/SciPy 上尚未有经验)。
社区似乎很友好,并且完成了许多功能。
缺点
新系统,不够成熟?
用 Ruby 编写:因为我们是一个 Python 项目,大多数开发者熟悉 Python。
Wiki 集成等?
未知
xmlrpc API
性能
维护成本
Roundup
待办事项