Go Wiki: 处理问题

本文档解释了我们在 Go 项目的问题跟踪器 中如何处理问题分类和调度。

问题状态

任何问题都必须处于以下状态之一。项目贡献者会移动问题从一种状态到另一种状态。这些明确的状态背后的意图是描述将问题解决到最终状态所需的(最低)后续步骤。问题可以按任何顺序在状态之间移动,具体取决于特定问题的需求。

  • 问题已提交。
  • 格式可能不正确(标题等)。
  • 要从此状态转换,需要有人清理问题报告,并可选择性地抄送可能最适合调查或修复问题的人。

需要调查

  • 格式正确。
    • 标题具有路径前缀。
    • 正文描述了问题。
  • 有一个里程碑。
    • 如果问题不重要,可以将里程碑设置为 Backlog。否则,将其设置为下一个即将发布的版本。
  • 具有 NeedsInvestigation 标签。
    • 如果调查者正在等待某人(例如,问题报告者)提供更多信息,也可能具有 WaitingForInfo 标签。
  • 要从此状态转换,需要有人检查问题并确认它是有效的且不是现有问题的重复。

需要决策

  • 问题是真实的,但我们不确定该采取什么行动。
    • 可以在 Go 1 中解决该问题。
    • 在做出修复之前,需要获得专家、贡献者和/或社区的反馈。
    • 请注意,大多数问题永远不会转换到此状态,因为大多数情况下,决策都是显而易见的“是的,应该修复”。
  • 有一个里程碑。
  • 具有 NeedsDecision 标签。
    • 可能具有 WaitingForInfo 标签。
    • 可能具有 Blocked 标签,如果进展取决于另一个问题的解决或 Go 未来版本的发布。应附带评论解释阻塞原因。
    • 不得具有 Go2 标签。(这些问题将单独处理。)
  • 要从此状态转换,需要有人决定如何解决该问题。
    • 如果决策很复杂,该问题可以被赋予一个 Proposal 标签。该问题在此状态下保持,直到提案流程完成,如果被批准,则移至 NeedsFix

需要修复

  • 解决方法已知,但工作尚未完成。
  • 有一个里程碑。
  • 具有 NeedsFix 标签。
    • 可能具有 BlockedWaitingForInfo 标签。
  • 要从此状态转换,需要有人完成修复问题的工作。

修复待定

  • 有一个修复该错误的 CL,尚未提交,但已通过 TryBots。
  • 不应具有 BlockedWaitingForInfo 标签。

已修复

  • 问题已解决。不再需要进一步关注。
  • 问题已关闭。

提案

  • 有关提案流程,请参阅下文。

问题会根据需要从一种状态转移到另一种状态。例如,贡献者可以提交一个问题,将其分配给自己,并立即应用 NeedsFix 标签。或者,一个问题可以从 NeedsDecision 转移到 NeedsFix,但随着复杂性的出现,之后又会移回 NeedsDecision

问题可以在任何时候关闭,并附带评论说明关闭原因(“已修复…”,“重复…”,“按预期工作”等)。

在任何状态下(New 除外),问题都可以分配给某人。未分配的问题被视为任何人都可以处理。

里程碑

里程碑描述了问题解决的时间表。

  • Go1.x.y

    计划在 1.x.y 版本中修复。

  • Go1.x.y,带有 release-blocker 标签

    必须在 1.x.y 版本中修复,或明确推迟到更高版本。

  • 提案

    是一个提案,与特定版本无关。

  • 待办事项

    有人计划处理它,但尚未分配给任何版本里程碑。

  • 未计划

    将来可能会修复,但目前没有人计划这样做。

  • 未发布

    不包含在发布中或发布不需要。

  • Gccgo

    针对 gccgo 问题。

可以使用额外的里程碑来管理特定的项目工作。

“Soon”标签独立于里程碑使用,表示问题具有时效性。

Proposals

对语言或标准库 API 的更改需要通过 提案流程。在问题跟踪器中,提案通常会带有 Proposal 标签并处于 Proposal 里程碑。

一项提议了与库的向后不兼容的更改的提案将带有 v2 标签,这意味着它只能在包的 v2 版本(或遥远的未来,v3 版本)可用时被采纳。

一项提议了语言更改的提案应带有 LanguageChange 标签。小的语言更改作为常规提案流程的一部分进行处理。较大的语言更改由语言审查流程处理;这些问题应带有 LanguageChangeReview 标签。


此内容是 Go Wiki 的一部分。