Bug 分类规范
本页面描述了 Bug 分类团队即 bugsquad(Bug 小队)在处理 Godot GitHub 仓库的 Issue 和 Pull Request 时的典型工作流程。它一定会与 bugsquad 一起发展,所以请对下面的规范提出修改意见,不要犹豫。
问题管理
GitHub提出了各种功能来管理问题:
从预定义列表中设置一个或多个标签
从预定义列表中设置一个里程碑
在项目仪表板中跟踪问题
在 Godot 引擎组织成员中定义一个贡献者作为“担当者”
由于GitHub上的Godot引擎组织目前的贡献者数量有限, 我们暂时不会广泛使用受托者. 欢迎所有贡献者讨论任何问题, 如果在问题单上提及和/或讨论, 是与其他开发人员解决此问题的最佳方式.
目前,我们也不使用项目仪表板(Dashboard)功能。
我们尽可能尝试为问题和拉取请求分配标签(和相关的里程碑).
标签
目前在Godot仓库中定义了以下标签:
分类:
Archived: 是另一个问题的副本, 或无效. 这样的问题也将被关闭.
Breaks compat:用于描述需要破坏已有项目兼容性才能修复的内容。
Bug: 描述无法正常工作的内容.
Cherrypick:用于描述合并入
master
分支后还可以移植回稳定分支的内容。Confirmed: 已由至少一个其他贡献者而不是错误报告者(通常用于 Bug 报告)确认. 该标签的目的是让开发人员知道当他们想要选择要解决的问题时仍然可以重现的问题. 因此, 在一个评论中添加评论: 可以再现该问题的是什么平台, 什么版本或Godot的提交是一个好的做法;如果开发人员在一年后查看该问题, 则 Confirmed 标签可能不再相关.
Crash:用于描述导致引擎崩溃的问题。这个标签仅适用于“硬”崩溃,卡死不算。
Discussion: 这个问题不是共识, 需要进一步讨论以定义解决该主题的确切方法.
Documentation: 与文档相关的问题. 主要是要求改进API文档. 与ReadTheDocs文档相关的问题应该在 godot-docs 储存库上提交.
Enhancement: 描述对现有功能的建议增强.
Feature proposal:用于描述实现新功能的愿望。请注意 Godot 主仓库不再接受功能请求。请换用 godot-proposals。
For PR meeting:该问题需要在拉取请求会议中进行讨论。会议是公开的,在 Godot 贡献者聊天中举行。
Good first issue: the issue is assumed to be an easy one to fix, which makes it a great fit for new contributors who want to become familiar with the code base. It should be removed while an active PR is available, that resolves this issue.
High priority:该问题非常重要,可能导致人们无法发布他们的项目或造成数据丢失。
Needs testing: 问题/拉取请求无法完全测试, 因此需要进一步测试. 这可能意味着需要在不同的硬件/软件配置上进行测试, 或者甚至重现的步骤不确定.
Needs work:拉取请求需要额外处理才能进行合并。
Performance: 直接影响引擎或编辑器性能的问题。也可用于改善性能或增加低端友好选项的拉取请求。不应与 Usability 可用性结合在一起。
Production: Relates to the production team.
Regression: 在没有表现出该错误的稳定版本发布之后,该错误出现。
Salvageable: 由于设计问题或合并冲突,该拉动请求不能被合并,其作者也不再活跃。然而,它仍然可以被一个外部贡献者拾取,以使其达到可合并状态。为此,你需要基于原始拉取请求打开一个新的拉取请求。
Tracker: 用于跟踪其他问题的问题(例如与插件系统相关的所有问题).
Usability: 直接影响用户可用性的问题。不应与 Performance 相结合。
The categories are used for general triage of the issues. They can be combined in some way when relevant, e.g. an issue can be labelled Enhancement and Usability at the same time if it’s an issue to improve usability. Or Feature proposal and Discussion if it’s a non-consensual feature request, or one that is not precise enough to be worked on. At least one of the categories Bug, Enhancement or Discussion is used to describe an issue or pull request.
话题:
2D:与 2D 相关的问题。应该与下面的某个标签组合使用,不应该与 3D 组合。
3D:与 3D 相关的问题。应该与下面的某个标签组合使用,不应该与 2D 组合。
Animation:与动画系统、动画编辑器、动画导入器相关。
Assetlib:与资产库相关的问题。
Audio:与音频功能相关(底层和高阶均可)。
Buildsystem:与构建相关的问题,可以是与 Scons 构建系统相关,也可以是与编译器特性相关。
Codestyle:与代码库所使用的编程风格有关。
Core:任何与核心引擎相关的话题。特定的话题增长到一定程度就会拆分出来。
Dotnet:与 C# / .net 绑定相关。
Editor:与编辑器中的问题(主要是 UI)有关。
Export:与导出系统和模板有关。
GDExtension:与原生扩展 GDExtension 系统相关。
GDScript:与 GDScript 相关。
GUI:与 GUI(Control)节点相关或与构成用户界面的 Node 相关。
Import:与资源导入系统有关。
Input:与输入系统相关。
Multiplayer:与多人系统(高阶网络)相关。
Navigation:与导航系统(包括 A* 和导航网格)有关。
Network:与(底层)网络相关。
Particles:粒子和粒子系统,以及对应的编辑器。
Physics:与物理引擎(2D/3D)有关。
Plugin:与编写插件时遇到的问题有关。
Porting:与某些特定平台或导出项目有关。
Rendering:与 2D 和 3D 渲染引擎有关。
Shaders:与 Godot 着色器语言或可视化着色器有关。
Tests:与单元测试有关。
Thirdparty:与 Godot 所使用的第三方库有关。
XR:与增强现实(AR)或虚拟现实(VR)有关。
问题通常只对应一个主题, 但看到符合两个主题的问题并不是不可想象的. 一般的想法是, 将有专门的贡献者团队支持所有主题, 因此他们可以专注于标记为团队主题的问题.
平台:
Android, iOS, Linux, macOS, Web, Windows
默认情况下, 假定给定的问题适用于所有平台. 如果使用其中一个平台标签, 则它不是通用的, 之前的假设不再适用(因此, 如果它是例如Android和Linux上的错误, 请选择这两个平台).
文档标签
在文档仓库中,我们使用如下标签:
Archived: 是另一个问题的副本, 或无效. 这样的问题也将被关闭.
Bug:现有页面中的错误信息。请勿对缺失信息使用。
Cherrypick:用于描述合并入
master
分支后还可以移植回稳定分支的内容。Dependencies: describes pull requests that update a dependency file.
Discussion: 这个问题不是共识, 需要进一步讨论以定义解决该主题的确切方法.
Enhancement: new information to be added in an existing page.
Good first issue: the issue is assumed to be an easy one to fix, which makes it a great fit for new contributors who want to become familiar with the code base. It should be removed while an active PR is available, that resolves this issue.
Needs work:拉取请求需要额外处理才能进行合并。
Python: Pull requests that update Python code.
Salvageable: 由于设计问题或合并冲突,该拉动请求不能被合并,其作者也不再活跃。然而,它仍然可以被一个外部贡献者拾取,以使其达到可合并状态。为此,你需要基于原始拉取请求打开一个新的拉取请求。
Tracker: 用于跟踪其他问题的问题(例如与插件系统相关的所有问题).
Area:
About: Issues and PRs related to the About section of the documentation and other general articles.
Class reference:类参考的问题,非文档页面。
Community: Issues and PRs related to the Community section of the documentation.
Contributing: Issues and PRs related to the Contributing/Development section of the documentation.
Getting started: Issues and PRs related to the Getting Started section of the documentation.
Manual: Issues and PRs related to the Manual/Tutorials section of the documentation.
Content:
Images: Issues and PRs involving outdated or incorrect images in articles.
New page: Issues and PRs related to creation of new documentation pages for new or undocumented features.
Organization: Issues and PRs related to reorganizing the content.
Proofreading: Issues and PRs related to proofreading the documentation.
Redirect: Issues and PRs involving moving content and adding a redirect rule on the backend.
Website: Issues related to adding website features and fixing bugs, whether on the front or back-end,
Topic:
The available topics describe the same content as the topics in the main repository.
里程碑
里程碑 对应于已有路线图的Godot未来计划版本. 符合上述路线图的问题应归入相应的里程碑下;如果它们不符合任何现有的路线图, 则应将其放在没有里程碑的地方. 根据经验, 如果一个问题涉及到一个里程碑中的新功能, 或者一个不能在未来稳定版本中被接受的关键错误, 或者任何Juan现在想做的事情, 那么它就对应于一个特定的里程碑.)
无论指定的里程碑如何, 贡献者都可以自由选择问题;如果针对一个不被认为是紧急的错误提出修复, 因此没有里程碑, 那么它可能仍然非常受欢迎.