Bug 分类指南

This page describes the typical workflow of the bug triage team aka bugsquad when handling issues and pull requests on Godot’s GitHub repository. It is bound to evolve together with the bugsquad, so do not hesitate to propose modifications to the following guidelines.

问题管理

GitHub提出了各种功能来管理问题:

  • 从预定义列表中设置一个或多个标签

  • 从预定义列表中设置一个里程碑

  • 在项目仪表板中跟踪问题

  • 在 Godot 引擎组织成员中定义一个贡献者作为“担当者”

由于GitHub上的Godot引擎组织目前的贡献者数量有限, 我们暂时不会广泛使用受托者. 欢迎所有贡献者讨论任何问题, 如果在问题单上提及和/或讨论, 是与其他开发人员解决此问题的最佳方式.

For the time being, we do not use the project dashboard feature either.

我们尽可能尝试为问题和拉取请求分配标签(和相关的里程碑).

标签

目前在Godot存储库中定义了以下标签:

分类:

  • Archived: 是另一个问题的副本, 或无效. 这样的问题也将被关闭.

  • Breaks compat: describes something that can only be fixed by breaking compatibility with existing projects.

  • Bug: 描述无法正常工作的内容.

  • Cherrypick: describes something that can be backported to a stable branch after being merged in the master branch.

  • Crash: describes a bug that causes the engine to crash. This label is only used for “hard” crashes, not freezes.

  • Confirmed: 已由至少一个其他贡献者而不是错误报告者(通常用于 Bug 报告)确认. 该标签的目的是让开发人员知道当他们想要选择要解决的问题时仍然可以重现的问题. 因此, 在一个评论中添加评论: 可以再现该问题的是什么平台, 什么版本或Godot的提交是一个好的做法;如果开发人员在一年后查看该问题, 则 Confirmed 标签可能不再相关.

  • Discussion: 这个问题不是共识, 需要进一步讨论以定义解决该主题的确切方法.

  • Documentation: 与文档相关的问题. 主要是要求改进API文档. 与ReadTheDocs文档相关的问题应该在 godot-docs 储存库上提交.

  • Enhancement: 描述对现有功能的建议增强.

  • Feature proposal: describes a wish for a new feature to be implemented. Note that the main Godot repository no longer accepts feature requests. Please use godot-proposals instead.

  • For PR meeting: the issue needs to be discussed in a pull request meeting. These meetings are public and are held on the Godot Contributors Chat.

  • Junior job: 假设 是一个容易修复的问题, 这使得它非常适合需要熟悉代码库的初级贡献者.

  • High priority: the issue is particularly important as it can prevent people from releasing their projects or cause data loss.

  • Needs work: the pull request needs additional work before it can be merged.

  • Needs testing: 问题/拉取请求无法完全测试, 因此需要进一步测试. 这可能意味着需要在不同的硬件/软件配置上进行测试, 或者甚至重现的步骤不确定.

  • Performance: 直接影响引擎或编辑器性能的问题。也可用于改善性能或增加低端友好选项的拉取请求。不应与 Usability 可用性结合在一起。

  • PR welcome / Hero wanted!: 我们特别欢迎对带有这些标签的问题做出贡献。请注意,这 并不 意味着不能处理没有这些标签的问题。

  • Regression: 在没有表现出该错误的稳定版本发布之后,该错误出现。

  • Salvageable: 由于设计问题或合并冲突,该拉动请求不能被合并,其作者也不再活跃。然而,它仍然可以被一个外部贡献者拾取,以使其达到可合并状态。为此,您需要基于原始拉取请求打开一个新的拉取请求。

  • Tracker: 用于跟踪其他问题的问题(例如与插件系统相关的所有问题).

  • Usability: 直接影响用户可用性的问题。不应与 Performance 相结合。

这些类别用于问题的一般分类. 它们可以在相关时以某种方式组合, 例如, 如果这是一个提高可用性的问题, 则可以同时将问题标记为 EnhancementUsability. 或者如果它是非自愿的功能请求, 或者不够精确的功能请求, 可以标记为 Feature proposalDiscussion.

话题:

  • 2D: 涉及 2D 特定问题。应该与下面的某个标签组合使用,而不应该与 3D 组合。

  • 3D: 涉及 3D 特定问题。应该与下面的某个标签组合使用,而不应该与 2D 组合。

  • Assetlib: 与在线资源库的问题有关.

  • Audio: 与音频功能(低级别和高级别)有关.

  • Buildsystem: 与构建问题有关, 可以链接到SCons构建系统或编译器特性.

  • Codestyle: relates to the programming style used within the codebase.

  • Core: 与核心引擎有关的任何事物. 稍后可能会进一步拆分, 因为这是一个很大的话题.

  • Editor: 与编辑器中的问题(主要是UI)有关.

  • GDNative: 与GDNative模块有关.

  • GDScript: 与GDScript有关.

  • GUI: relates to GUI (Control) nodes.

  • Import: relates to the resource import system.

  • Input: relates to input system.

  • Mono: 与C# / Mono绑定有关.

  • Navigation: relates to the navigation system (including A* and navmeshes).

  • Network: 与网络有关.

  • Physics: 与物理引擎(2D/3D)有关.

  • Plugin: 与编写插件时遇到的问题有关.

  • Porting: relates to some specific platforms or exporting projects.

  • Rendering: 与2D和3D渲染引擎相关.

  • Shaders: relates to the Godot shader language or visual shaders.

  • Tests: relates to unit tests.

  • Thirdparty: relates to third-party libraries used in Godot.

  • VisualScript: relates to issues with the visual scripting language (not visual shaders).

  • XR: relates to Augmented Reality or Virtual Reality.

问题通常只对应一个主题, 但看到符合两个主题的问题并不是不可想象的. 一般的想法是, 将有专门的贡献者团队支持所有主题, 因此他们可以专注于标记为团队主题的问题.

平台:

Android, HTML5, iOS, Linux, macOS, Windows, UWP

默认情况下, 假定给定的问题适用于所有平台. 如果使用其中一个平台标签, 则它不是通用的, 之前的假设不再适用(因此, 如果它是例如Android和Linux上的错误, 请选择这两个平台).

Documentation labels

In the documentation repository, we use the following labels:

  • Bug: Incorrect information in an existing page. Not to be used for missing information.

  • Class reference: the issue is about the class reference, not a documentation page.

  • Discussion: 这个问题不是共识, 需要进一步讨论以定义解决该主题的确切方法.

  • Enhancememnt: new information to be added in an existing page.

  • New page: a new page to be created.

  • Hero wanted!: contributions for issues with these labels are especially welcome. Note that this doesn’t mean you can’t work on issues without these labels.

  • Organization: The issue involves moving pages around or reorganizing content.

  • Redirect: a redirection needs to be created in the Read the Docs backend. Only administrators can do this.

  • Salvageable: 由于设计问题或合并冲突,该拉动请求不能被合并,其作者也不再活跃。然而,它仍然可以被一个外部贡献者拾取,以使其达到可合并状态。为此,您需要基于原始拉取请求打开一个新的拉取请求。

  • Topic:Mono: the issue is about C# support in Godot.

  • Topic:Website: the issue relates to the Sphinx/Read the Docs frontend or backend, not the documentation contents.

里程碑

里程碑 对应于已有路线图的Godot未来计划版本. 符合上述路线图的问题应归入相应的里程碑下;如果它们不符合任何现有的路线图, 则应将其放在没有里程碑的地方. 根据经验, 如果一个问题涉及到一个里程碑中的新功能, 或者一个不能在未来稳定版本中被接受的关键错误, 或者任何Juan现在想做的事情, 那么它就对应于一个特定的里程碑.)

无论指定的里程碑如何, 贡献者都可以自由选择问题;如果针对一个不被认为是紧急的错误提出修复, 因此没有里程碑, 那么它可能仍然非常受欢迎.