分类
Bevy 的范围和用户群意味着它会收到大量的问题和拉取请求。所有这些工作都需要进行组织,以便更容易找到相关问题,了解您可以帮助的地方,以及快速了解任务的状态。持续组织工作的过程称为 **分类**。
对问题和 PR 进行分类
标签是我们组织工作的首要工具。您可以找到带有描述的完整列表 这里(引擎)或 这里(网站)。以下是一些最常见的标签,按类别组织
- **A**: 区域(例如
A-Animation
、A-ECS
、A-Rendering
等)。 - **C**: 类别。最常见的类别包括
C-Bug
: 意想不到或不正确的行为。C-Enhancement
: 新功能或现有功能的重大扩展。C-Docs
: 文档的添加或更正。C-Code-Quality
: 难以理解或更改的代码部分。C-Performance
: 由速度、内存使用情况或编译时间驱动的更改。C-Tracking-Issue
: 收集有关广泛开发计划的信息。
- **D**: 难度。这可以是解决问题或审核拉取请求所需的预计专业水平(而不是时间)。按顺序,它们是
D-Trivial
: 拼写错误、明显错误的一行代码修复、代码重构和重命名。D-Straightforward
: 简单的错误修复、API 改进、文档、测试和示例。D-Modest
: 新功能、重构和具有挑战性的错误修复。D-Complex
: 重写和异常复杂的功能。D-Domain-Expert
和D-Domain-Agnostic
标签是修饰符,用于描述是否需要异常高或低程度的特定领域知识。D-Unsafe
标签应用于任何涉及unsafe
Rust 代码的代码,这需要特殊的技能和审查。
- **O**: 操作系统(例如 O-Linux、O-Web、O-Windows 等)。
- **P**: 优先级(例如 P-Critical、P-High 等)。
- 大多数工作没有明确的优先级分类;志愿者工作主要根据贡献者的兴趣进行临时安排。
- **S**: 状态。最常见的类别包括
S-Needs-Triage
: 此问题需要进行分类。S-Adopt-Me
: 原始 PR 作者没有完成 PR 的意愿,它应该由其他贡献者采用。此 PR 应该关闭,并链接一个问题来跟踪其采用情况。S-Blocked
: 无法前进,直到其他内容发生变化。S-Needs-Review
: 此 PR 需要审阅者关注才能前进。S-Waiting-On-Author
: 作者需要对此 PR 进行更改才能批准它。S-Ready-For-Final-Review
: 此 PR 已获得社区的批准,并且已准备好供维护者考虑合并它。S-Needs-Help
: 此 PR 几乎已准备好合并,但被技术问题阻止。欢迎帮助解决它。
- **X**: 争议性。按顺序,它们是
X-Uncontroversial
: 每个人都应该同意这是一个好主意。X-Contentious
: 需要真正的设计思考才能确保这是正确的路径。X-Controversial
: 存在积极的反对意见和/或涉及大规模的架构影响。X-Blessed
: 以前有争议的工作,但其有争议的(但可能不是技术性的)元素已得到相关决策者的认可。
- **M**: 元数据,用于支持需要完成的工作。
M-Needs-Release-Note
: 应该在博客文章中提到的工作,因为它具有影响力。这个决定通常由维护者做出,但如果您认为它值得关注,请随时在评论中提名更改!M-Needs-Migration-Guide
: 这是对 Bevy 公开 API 的重大更改,需要有关如何迁移现有代码的建议。这些更改不能在次要版本中发布!
您可以在 GitHub 文档 上了解有关标签的更多信息。
PR 合并规则 取决于其争议性和难度分类。更困难的 PR 需要来自专家的更仔细的审查,而更有争议的 PR 需要重写以降低相关成本和/或获得主题专家和维护者的认可。
在创建 PR 时,尝试将更有争议的更改与不太争议的更改分开,以便更容易审查和合并您的工作。还可以考虑将简单的更改与复杂的更改分开,因为简单的更改可以更快地审查和合并。
示例
以下是一些应用 X-Controversial
或 X-Contentious
的原因
- 对项目范围内的工作流或样式进行更改。
- 为大型功能创建新的架构。
- 做出了严重的权衡。
- 对用户有重大影响。
- 为用户提供新的犯错方式(陷阱)。
- 添加一个声誉未知的新依赖项。
- 接触许可证信息(由于所需的精度水平)。
- 添加根级文件和文件夹(由于其高度可见性)。
请记住,X-Contentious
是 X-Controversial
的一种较轻的形式。如果您创建了一个可能存在争议但尚未有人反对的 PR,请考虑添加 X-Contentious
,以便审阅者格外小心地考虑其后果。
以下是一些应用 X-Uncontroversial
的原因
- 修复拼写错误、语法错误和失效链接。
- 删除失效代码或未使用依赖项。
- 修复 Clippy 警告。
以下是一些应用 D-Complex
的原因
- 高度的技术复杂性。
- 引入或修改与健壮性相关的代码。(如果涉及
unsafe
,请确保也添加D-Unsafe
!) - 大规模代码重构,其中很容易遗漏小更改。
以下是一些应用 D-Trivial
的原因
- 单行更改。
- 将文件从一个位置移动到另一个位置。
- 对文档或错误消息进行小的更改。
请记住,难度标签用于描述解决问题或审核拉取请求所需的专业水平。通过将问题标记为 D-Trivial
,您将其标记为适合 Bevy 项目新手贡献者的入门问题。
关闭 PR 和问题
有时,PR 不适合以无法轻易修复的方式合并。与其将这些 PR 无限期地保持开放状态,不如直接关闭它们。
这可能发生在以下情况下
- PR 是垃圾邮件或恶意内容。
- 工作已在其他地方完成,或者完全过时。
- PR 已成功采用。
- PR 的质量特别低,并且作者拒绝接受指导。
- 工作添加了价值有限的功能或抽象,尤其是在可以轻松地在引擎外部重新创建这些功能或抽象的情况下。
- 工作已在审阅中停留了很长时间,并积累了大量冲突,需要大量工作才能使其处于正确状态。
- PR 无端地过大,应该分解成多个较小的 PR 以便于审查。
- PR 具有争议性,并且在过去 6 个月内没有活动。
PR 关闭有多种途径
- 作者可以随时出于任何原因关闭他们自己的 PR。
- 如果 PR 明显是垃圾邮件或恶意内容,则任何拥有分类权限的人员都应关闭 PR 并将其报告给 GitHub。
- 如果工作已在其他地方完成,已采用,或已过时,则任何拥有分类权限的人员都应关闭 PR 并添加解释性注释。
- 任何人都可以提名 PR 进行关闭,方法是将它提交给作者和/或其中一位 SME/维护者。让他们按下按钮,但这通常会受到欢迎,并且很有帮助。
- SME 或维护者可以(并且鼓励)单方面关闭属于一个或多个剩余类别的 PR。
- 对于社区中除作者以外的一些成员赞成,而一些成员反对的 PR,任何两位相关的 SME 或维护者都可以协同行动关闭 PR。
- 对于已经停留了一段时间并变得腐烂的 PR,请与原始作者确认他们是否打算继续工作。如果没有,或者没有回复,则可以将 PR 标记为
S-Adopt-Me
并关闭。跟踪采用进度将在链接的问题中进行。 - 如果相关的 SME 或维护者决定不再对此感兴趣,则可以关闭不活跃的
X-Controversial
PR。如果它仍然有趣并且有争议,则必须做出决定。
关闭 PR 时,请检查它是否链接到问题。如果没有,您应该认真考虑创建一个问题,并将现在已关闭的 PR 链接到它,以帮助确保以前的工作能够被发现和认可。
分类团队
Bevy 组织中的分类团队成员有权限对问题进行分类和关闭,但他们没有合并权限或特殊权限。任何人都可以加入,只要
- 他们在过去积极参与 Bevy 开发。
- 他们证明了自己是礼貌和友好的项目代表,并且了解项目的目标和方向。
如果这适用于您,请随时在 Discord 上联系维护者或发送电子邮件至 support@bevyengine.org。每个人都欢迎这样做。我们通常接受会员申请,因此如果您有兴趣,请不要犹豫!