商标
FreeBSD 是 FreeBSD 基金会的注册商标。
制造商和销售商用来区分其产品的许多名称都被声明为商标。在本文档中出现这些名称时,如果 FreeBSD 项目意识到其商标声明,这些名称将后跟“™”或“®”符号。
摘要
这些指南介绍了针对 FreeBSD 问题报告(PRs)的建议处理实践。虽然这些指南是为 FreeBSD PR 数据库维护团队 [email protected] 制定的,但任何与 FreeBSD PRs 一起工作的人都应遵循这些指南。
Bugzilla 是 FreeBSD 项目使用的问题管理系统。准确跟踪未解决的软件缺陷对 FreeBSD 的质量至关重要,正确使用该软件对项目的进展至关重要。
Bugzilla 的访问权限开放给整个 FreeBSD 社区。为了维护数据库的一致性并提供一致的用户体验,已经制定了涵盖 Bug 管理常见方面的准则,如提交后续处理、处理关闭请求等。
- 报告人在网站上提交了一个 bug 报告。该 bug 处于 Needs Triage 状态。
- 简·随机 BugBuster 确认 bug 报告具有足够的信息以便重现。如果没有,她会与报告人来回沟通以获取所需信息。此时 bug 被设置为 Open 状态。
- 乔·随机提交者对 PR 感兴趣并将其分配给自己,或者简·随机 BugBuster 决定乔最适合处理,并将其分配给他。应将 bug 设置为 In Discussion 状态。
- 乔与发起人进行简短交流(确保所有内容都记录在审计记录中),并确定问题的原因。
- 乔通宵达旦,草拟了一个他认为修复问题的补丁,并在后续提交中请求发起人测试它。然后,他将 PR 的状态设置为 Patch Ready 。
- 几次迭代后,乔和发起人都满意于补丁,乔将其提交到 -CURRENT (如果问题不存在于 -CURRENT 中,则直接提交到 -STABLE ),确保在提交日志中引用问题报告(如果提交者提交了全部或部分补丁,还要给予发起人荣誉),并且必要时开始 MFC 倒计时。该错误被设置为 Needs MFC 状态。
- 如果补丁不需要进行 MFC,则 Joe 会将 PR 关闭为 Issue Resolved 。
许多 PR 提交的信息很少,关于问题的信息很少,有些问题解决起来非常复杂,或者只是触及更大问题的表面;在这些情况下,获取解决问题所需的所有必要信息非常重要。如果无法解决所含问题,或者问题再次出现,则有必要重新打开 PR。
更新 PR 状态是非常重要的,当采取某些操作时。状态应准确反映 PR 上的工作当前状态。
示例 1。关于何时更改 PR 状态的小例子
当开发人员已经处理过 PR 并且负责的人感觉修复工作正常时,他们将提交 PR 的后续,并将其状态更改为“反馈”。此时,发起者应在其上下文中评估修复情况,并响应指示缺陷是否已修复。
问题报告可能处于以下状态之一:
开放初始状态;问题已指出,需要进行审查。
分析问题已经审查,正在寻找解决方案。
进一步的反馈需要来自创始人或社区的额外信息;可能涉及所提出解决方案的信息。
补丁已提交,但还有一些事情(MFC,或者可能需要创始人的确认)仍在等待中。
暂停由于缺乏信息或资源而未解决该问题。这是寻找可承担项目的人的首选。如果无法解决问题,则会关闭而不是暂停。文档项目使用“暂停”来表示愿望清单项,这需要大量工作,目前没有人有时间。
一个问题报告在集成任何更改、记录和测试后关闭,或在放弃修复问题时关闭。
“已修复”状态直接与反馈相关,因此,如果原始提交者无法测试补丁,但它在你的测试中有效,你可以直接进入“已关闭”状态。
处理问题报告时,无论是作为直接访问问题报告数据库的开发人员,还是作为浏览数据库并提交补丁、评论、建议或更改请求的贡献者,你都会遇到几种不同类型的 PR。
以下各节介绍了每种不同类型的 PR 用于什么,当一个 PR 属于这些类型之一时,以及每种不同类型接收到的处理。
当 PR 到达时,它们最初被分配给一个通用(占位符)受让人。这些总是以 freebsd- 开头。此默认值的确切值取决于类别;在大多数情况下,它对应于特定的 FreeBSD 邮件列表。以下是当前的列表,最常见的列表首先列出:
默认受让人 - 最常见的
类型 | 类别 | 默认受让人 |
---|---|---|
基本系统 | bin, conf, gnu, kern, misc | freebsd-bugs |
架构特定 | alpha,amd64,arm,i386,ia64,powerpc,sparc64 | freebsd-arch |
ports | ports | freebsd-ports-bugs |
随系统提供的文档 | docs | freebsd-doc |
FreeBSD 网页(不包括文档) | Website | FreeBSD |
表 2. 默认的指派者 - 其他
类型 | 分类 | 默认受理人 |
---|---|---|
advocacy efforts | advocacy | freebsd-advocacy |
Java Virtual Machine™ problems | java | freebsd-java |
standards compliance | standards | freebsd-standards |
threading libraries | threads | freebsd-threads |
usb(4) subsystem | usb | freebsd-usb |
不要感到惊讶,发起 PR 的人员将其分配给了错误的类别。如果你更正了类别,请不要忘记修复分配关系。(特别是,我们的提交者似乎很难理解他们的问题在 i386 系统上显现,这可能是适用于所有 FreeBSD 系统的通用问题,因此更适合于... 当然,相反的情况也成立。)
某些 PR 可能会被任何人重新分配,远离这些通用的受让人。有几种类型的受让人:专门的邮件列表;邮件别名(用于某些限定兴趣项目);和个人。
对于那些邮件列表为受让人的情况,请在进行分配时使用长形式(例如, freebsd-foo 而不是 foo );这将避免向邮件列表发送重复邮件。
由于自愿成为某些类型的 PR 的默认受让人的个人名单经常发生变化,因此更适合用于 FreeBSD 维基。
这是一份此类实体的示例列表;它可能不完整。
常见受让人 - 基础系统
类型 | 建议类别 | 建议受让人 | 受让人类型 |
---|---|---|---|
ARM® 架构特定问题 | arm | freebsd-arm | 邮寄清单 |
特定于 MIPS® 体系结构的问题 | kern | freebsd-mips | 邮件列表 |
问题特定于 PowerPC® 架构 | kern | freebsd-ppc | 邮件列表 |
高级配置和电源管理问题(acpi(4)) | kern | freebsd-acpi | 邮件列表 |
异步传输模式(ATM)驱动程序问题 | kern | freebsd-atm | 邮件列表 |
在嵌入式或小型 FreeBSD 系统中出现问题(例如 NanoBSD/PicoBSD/FreeBSD-arm) | kern | freebsd-embedded | 邮件列表 |
FireWire® 驱动程序问题 | kern | freebsd-firewire | 邮件列表 |
文件系统代码问题 | kern | freebsd-fs | 邮件列表 |
与 geom(4)子系统的问题 | kern | freebsd-geom | 邮件列表 |
problem with the ipfw(4) subsystem | kern | freebsd-ipfw | 邮件列表 |
集成服务数字网络(ISDN)驱动程序问题 | kern | freebsd-isdn | 邮件列表 |
jail(8) 子系统 | kern | freebsd-jail | 邮件列表 |
与 Linux® 或 SVR4 仿真的问题 | kern | freebsd-emulation | 邮件列表 |
网络堆栈问题 | kern | freebsd-net | 邮件列表 |
pf(4) 子系统问题 | kern | freebsd-pf | 邮件列表 |
SCSI(4) 子系统存在问题 | kern | freebsd-scsi | 邮件列表 |
声音(4)子系统存在问题 | kern | freebsd-multimedia | 邮件列表 |
wlan(4) 子系统和无线驱动程序的问题 | kern | freebsd-wireless | 邮件列表 |
sysinstall(8) 或 bsdinstall(8) 的问题 | bin | freebsd-sysinstall | 邮件列表 |
系统启动脚本出现问题(rc(8)) | kern | freebsd-rc | 邮件列表 |
有关 VIMAGE 或 VNET 功能及相关代码的问题 | kern | freebsd-virtualization | 邮件列表 |
Xen 仿真问题 | kern | freebsd-xen | 邮件列表 |
表 4. 常见受让人 - Ports
类型 | 推荐的类别 | 建议的被分配人 | 分配人类型 |
---|---|---|---|
problem with the ports framework (not with an individual port!) | ports | portmgr | alias |
port which is maintained by [email protected] | ports | apache | 邮件列表 |
port which is maintained by [email protected] | ports | autotools | alias |
port which is maintained by [email protected] | ports | doceng | alias |
port which is maintained by [email protected] | ports | freebsd-eclipse | 邮件列表 |
port which is maintained by [email protected] | ports | gecko | 邮件列表 |
port which is maintained by [email protected] | ports | gnome | 邮件列表 |
port which is maintained by [email protected] | ports | hamradio | alias |
port which is maintained by [email protected] | ports | haskell | alias |
port which is maintained by [email protected] | ports | freebsd-java | 邮件列表 |
port which is maintained by [email protected] | ports | kde | 邮件列表 |
port which is maintained by [email protected] | ports | mono | 邮件列表 |
port which is maintained by [email protected] | ports | freebsd-office | 邮件列表 |
port which is maintained by [email protected] | ports | perl | 邮件列表 |
port which is maintained by [email protected] | ports | freebsd-python | 邮件列表 |
port which is maintained by [email protected] | ports | freebsd-ruby | 邮件列表 |
port which is maintained by [email protected] | ports | secteam | alias |
port which is maintained by [email protected] | ports | vbox | alias |
port which is maintained by [email protected] | ports | freebsd-x11 | 邮件列表 |
Ports 具有是 ports 合作者的 PR 可能被任何人重新分配(但请注意,并非每个 FreeBSD 合作者必然是 ports 合作者,因此你不能仅通过电子邮件地址来判断。)
对于其他 PR,请不要将其重新分配给个人(除非你确信受让人真的想跟踪该 PR。这将有助于避免这样一种情况:由于每个人都认为受让人已经在解决特定的问题,所以没有人去解决这个问题的情况。
表 5. 常见受让人 - 其他
类型 | 建议类别 | 建议的受让人 | 受让人类型 |
---|---|---|---|
problem with PR database | bin | bugmeister | alias |
problem with Bugzilla web form. | doc | bugmeister | alias |
如果一个 PR 的 responsible 字段设置为一个 FreeBSD 开发人员的用户名,则表示该 PR 已移交给该具体人员进行进一步工作。
任何人都不应该触碰已分配的 PR,除了受让人或缺陷大师。如果你有评论,请提交后续。如果出于某种原因你认为该 PR 应更改状态或重新分配,请向受让人发送消息。如果受让人在两周内未回复,请取消分配该 PR,然后随意处理。
如果你找到描述同一问题的多个 PR,请选择包含最多有用信息的一个,并关闭其他 PR,明确说明替代 PR 的编号。如果几个 PR 包含互不重叠的有用信息,请在后续中向其中一个提交所有缺失的信息,包括对其他 PR 的引用;然后关闭其他 PR(这些 PR 现在完全被替代)。
如果 PR 在六个月内未被修改,则视为过期。执行以下过程处理过期的 PR:
- 如果 PR 包含足够的细节,请尝试在 -CURRENT 和 -STABLE 中重现问题。如果成功,请提交后续报告详细描述你的发现,并尝试找人来分配任务。如适当,将状态设置为“已分析”。
- 如果 PR 描述的问题是你知道是使用错误 (不正确的配置或其他原因) 的结果,请提交一篇后续说明原始作者做错了什么,然后关闭 PR,并注明理由为“用户错误”或“配置错误”。
- 如果 PR 描述的错误已在 -CURRENT 和 -STABLE 中修正,请关闭并附上修正日期的消息。
- 如果 PR 描述的错误已在 -CURRENT 中修正,但在 -STABLE 中未修正,请尝试查明修正者计划何时 MFC,或尝试找到其他人(也许是你自己?)来完成。将状态设置为“已修补”,将其分配给将执行 MFC 的人。
- 在其他情况下,请询问发起人确认问题在更新版本中是否仍然存在。如果发起人一个月内没有回复,请使用“反馈超时”注释关闭 PR。
开发人员发现看起来应该已发布到 FreeBSD 问题报告邮件列表或其他列表的 PR,应关闭该 PR,并在评论中告知提交者为什么这并不真正是一个 PR,以及该消息应该发布到何处。
Bugzilla 监听用于接收 PR 的电子邮件地址已作为 FreeBSD 文档的一部分发布,并已在网站上公布和列出。这意味着垃圾邮件发送者找到了它们。
每当你关闭这些 PR 之一时,请执行以下操作:
- 将组件设置为 junk (在 Supporting Services 下。
- 设置责任人为 [email protected] 。
- 将状态设置为 Issue Resolved 。
将类别设为 junk 可以明显表明 PR 中没有有用内容,并有助于减少主要类别中的混乱。
这是一个与正确编写和处理问题报告相关的资源列表。这并不是完整的清单。
- 如何编写 FreeBSD 问题报告 - PR 发起者指南。