Specs 流程和截止日期¶
Manila spec 仓库是在 Newton 版本中创建的,但没有得到有效利用。许多 specs 没有经过评审,更少的 specs 在发布期间被合并,并且一些具有合并 specs 的功能没有获得代码评审的优先级。
为了确保 specs 能够得到评审,并帮助评审人员集中精力,我建议增加一些官方的截止日期和 specs 处理规则。
问题描述¶
我们有一些具体的问题,有些是 Newton 版本中出现的新问题,有些则随着时间的推移变得更加严重
一些 specs 得到的评审很少,或者根本没有得到评审。
没有理由合并一个 spec,因为我们没有赋予合并 spec 这个动作任何意义,所以大多数 specs 没有被合并。
核心评审团队资源不足,无法评审发布中提出的所有功能。
代码评审发现了架构问题,这些问题本可以在 spec 评审期间发现,并且问题是在发布周期后期才被发现的。
贡献者很难知道他们的更改是否会被合并,直到特性冻结之前,因为我们很少对任何事情说“不”,除非它错过了截止日期。
用例¶
拟议更改的目的是让核心评审团队专注于更少的功能,并让贡献者更早地获得他们的提案反馈。与其有很多成功几率很小的事情,我们更希望有少数成功几率大的事情。
提议的变更¶
首先,我建议定义合并 spec 的含义。在发布期间合并 spec 将意味着
我们对拟议的功能定义感到满意,并且它符合项目的方向和当前发布的目标。
该功能将针对当前发布版本,并将获得代码评审关注和测试。
如果提交者完成了代码并对反馈做出响应,团队打算在特性冻结之前合并完成的功能。
请注意,合并 spec 并不能保证功能的代码会被合并,只是我们会尽力。更重要的是,不合并 spec 意味着我们不打算处理该功能,它将在下一个版本中重新考虑。
接下来,我建议一个 specs 截止日期
低优先级 specs 必须在 milestone-1 日期之前合并。未被认为是高优先级的并且未在 milestone-1 之前合并的 specs 将被从发布考虑范围中排除,以帮助团队集中精力。
高优先级 specs 必须在 milestone-2 日期之前合并。任何未在 milestone-2 日期之前合并的 spec 都将被从发布考虑范围中排除,以帮助团队集中精力。
specs 必须在 milestone-1 之前由团队确定为高优先级。在许多情况下,高优先级 specs 将更早确定,但 milestone-1 将是最终截止日期,以便我们可以开始缩小发布范围。
高优先级 specs 将通过将它们添加到 specs 树中相应发布目录中的名为 high_priority.rst 的索引文件中来指定。对该文件的修改将由 gerrit 控制。
由于合并 spec 将意味着团队将花费足够的时间来评审该功能,因此团队需要限制合并的 specs 数量,即使 specs 满足所有其他合并要求。团队需要优先处理拟议的功能,首先合并优先级较高的功能,并在没有更多可用评审带宽时停止合并 specs。
由于拟议的 specs 数量可能超过整个团队在第一个 milestone 之前合理评审的数量,团队应指定一部分 specs 作为“评审重点”specs,每个人都应评审这些 specs,而其余 specs 将由志愿者进行评审。评审重点 specs 将列在核心评审团队同意的 etherpad 上。
最后,我建议对任何具有广泛影响的更改都需要 specs。在深入实施之前达成设计一致更好。
新的驱动程序和对驱动程序的更改不应需要 specs,因此驱动程序更改不受这些截止日期影响。例外情况是驱动程序中的更改实现了不寻常或有争议的内容,从而需要社区讨论。
决策¶
此 specs 流程需要做出几个决定
specs 的评审重点指定
specs 的优先级排序,包括堆叠排序和低/高优先级指定
合并 specs 的界限
单个 specs 的合并决策
重要的是,参与 Manila 的贡献者对项目方向有影响力,所以我建议 PTL 不要单独做出这些决定,并且决策应尽可能民主地进行(PTL 解决僵局)。
整个社区应就哪些 specs 应该重点评审以及 specs 的优先级提供意见。我们希望致力于对大多数人有价值的事情,因此我们将每周会议和 etherpad 上收集意见,以确定我们应该关注什么。
核心评审团队必须确定界限,因为对评审新功能承诺来自核心评审人员,并且此更改的目标是避免过度承诺。
如果 spec 优先级较低,则单个 specs 的合并应像往常一样进行,需要来自不同公司的两个核心评审人员的 +2 批准;如果 spec 优先级较高,则需要来自大多数核心评审人员的 +2 批准。
将 spec 指定为“高优先级”,从而将合并截止日期从 milestone-1 更改为 milestone-2,应由核心评审团队达成一致,因为此决定会带来额外的评审承诺和增加的风险。
给予“高优先级”specs 更多时间而不是“低优先级”specs 的目的是不是要转移对高优先级事项的注意力,而是要尽早做出将事项从发布中排除的决定。这个过程不能让人们更早地评审 specs 如果他们不倾向于这样做,但我们可以通过在早期划定界限来减少需要评审的 specs 数量,并希望这能更有效地利用我们有限的评审时间。