分类

Bevy 的范围和用户群意味着它会收到大量的问题和拉取请求。所有这些工作都需要进行组织,以便更容易找到相关问题,了解您可以帮助的地方,以及快速了解任务的状态。持续组织工作的过程称为 **分类**。

对问题和 PR 进行分类

标签是我们组织工作的首要工具。您可以找到带有描述的完整列表 这里(引擎)或 这里(网站)。以下是一些最常见的标签,按类别组织

  • **A**: 区域(例如 A-AnimationA-ECSA-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-ExpertD-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-ControversialX-Contentious 的原因

  1. 对项目范围内的工作流或样式进行更改。
  2. 为大型功能创建新的架构。
  3. 做出了严重的权衡。
  4. 对用户有重大影响。
  5. 为用户提供新的犯错方式(陷阱)。
  6. 添加一个声誉未知的新依赖项。
  7. 接触许可证信息(由于所需的精度水平)。
  8. 添加根级文件和文件夹(由于其高度可见性)。

请记住,X-ContentiousX-Controversial 的一种较轻的形式。如果您创建了一个可能存在争议但尚未有人反对的 PR,请考虑添加 X-Contentious,以便审阅者格外小心地考虑其后果。

以下是一些应用 X-Uncontroversial 的原因

  • 修复拼写错误、语法错误和失效链接。
  • 删除失效代码或未使用依赖项。
  • 修复 Clippy 警告。

以下是一些应用 D-Complex 的原因

  1. 高度的技术复杂性。
  2. 引入或修改与健壮性相关的代码。(如果涉及 unsafe,请确保也添加 D-Unsafe!)
  3. 大规模代码重构,其中很容易遗漏小更改。

以下是一些应用 D-Trivial 的原因

  1. 单行更改。
  2. 将文件从一个位置移动到另一个位置。
  3. 对文档或错误消息进行小的更改。

请记住,难度标签用于描述解决问题或审核拉取请求所需的专业水平。通过将问题标记为 D-Trivial,您将其标记为适合 Bevy 项目新手贡献者的入门问题。

关闭 PR 和问题

有时,PR 不适合以无法轻易修复的方式合并。与其将这些 PR 无限期地保持开放状态,不如直接关闭它们。

这可能发生在以下情况下

  1. PR 是垃圾邮件或恶意内容。
  2. 工作已在其他地方完成,或者完全过时。
  3. PR 已成功采用。
  4. PR 的质量特别低,并且作者拒绝接受指导。
  5. 工作添加了价值有限的功能或抽象,尤其是在可以轻松地在引擎外部重新创建这些功能或抽象的情况下。
  6. 工作已在审阅中停留了很长时间,并积累了大量冲突,需要大量工作才能使其处于正确状态。
  7. PR 无端地过大,应该分解成多个较小的 PR 以便于审查。
  8. PR 具有争议性,并且在过去 6 个月内没有活动。

PR 关闭有多种途径

  1. 作者可以随时出于任何原因关闭他们自己的 PR。
  2. 如果 PR 明显是垃圾邮件或恶意内容,则任何拥有分类权限的人员都应关闭 PR 并将其报告给 GitHub。
  3. 如果工作已在其他地方完成,已采用,或已过时,则任何拥有分类权限的人员都应关闭 PR 并添加解释性注释。
  4. 任何人都可以提名 PR 进行关闭,方法是将它提交给作者和/或其中一位 SME/维护者。让他们按下按钮,但这通常会受到欢迎,并且很有帮助。
  5. SME 或维护者可以(并且鼓励)单方面关闭属于一个或多个剩余类别的 PR。
  6. 对于社区中除作者以外的一些成员赞成,而一些成员反对的 PR,任何两位相关的 SME 或维护者都可以协同行动关闭 PR。
  7. 对于已经停留了一段时间并变得腐烂的 PR,请与原始作者确认他们是否打算继续工作。如果没有,或者没有回复,则可以将 PR 标记为 S-Adopt-Me 并关闭。跟踪采用进度将在链接的问题中进行。
  8. 如果相关的 SME 或维护者决定不再对此感兴趣,则可以关闭不活跃的 X-Controversial PR。如果它仍然有趣并且有争议,则必须做出决定。

关闭 PR 时,请检查它是否链接到问题。如果没有,您应该认真考虑创建一个问题,并将现在已关闭的 PR 链接到它,以帮助确保以前的工作能够被发现和认可。

分类团队

Bevy 组织中的分类团队成员有权限对问题进行分类和关闭,但他们没有合并权限或特殊权限。任何人都可以加入,只要

  1. 他们在过去积极参与 Bevy 开发。
  2. 他们证明了自己是礼貌和友好的项目代表,并且了解项目的目标和方向。

如果这适用于您,请随时在 Discord 上联系维护者或发送电子邮件至 support@bevyengine.org。每个人都欢迎这样做。我们通常接受会员申请,因此如果您有兴趣,请不要犹豫!