bug_triage_guidelines.rst 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. .. _doc_bug_triage_guidelines:
  2. Bug triage guidelines
  3. =====================
  4. This page describes the typical workflow of the bug triage team aka
  5. bugsquad when handling issues and pull requests on Godot's
  6. `GitHub repository <https://github.com/godotengine/godot>`__.
  7. It is bound to evolve together with the bugsquad, so do not
  8. hesitate to propose modifications to the following guidelines.
  9. Issues management
  10. -----------------
  11. GitHub proposes various features to manage issues:
  12. - Set one or several labels from a predefined list
  13. - Set one milestone from a predefined list
  14. - Keep track of the issue in the project dashboard
  15. - Define one contributor as "assignee" among the Godot engine
  16. organization members
  17. As the Godot engine organization on GitHub currently has a restricted
  18. number of contributors, we do not use assignees extensively for now. All
  19. contributors are welcome to take on any issue, if relevant after mentioning
  20. it on the issue ticket and/or discussing the best way to resolve it with
  21. other developers.
  22. For the time being, we do not use the project dashboard feature either.
  23. As far as possible, we try to assign labels (and milestones, when relevant)
  24. to both issues and pull requests.
  25. Labels
  26. ~~~~~~
  27. The following `labels <https://github.com/godotengine/godot/labels>`__ are
  28. currently defined in the Godot repository:
  29. **Categories:**
  30. - *Archived*: either a duplicate of another issue, or invalid. Such an
  31. issue would also be closed.
  32. - *Breaks compat*: describes something that can only be fixed by breaking
  33. compatibility with existing projects.
  34. - *Bug*: describes something that is not working properly.
  35. - *Cherrypick*: describes something that can be backported to a stable branch
  36. after being merged in the ``master`` branch.
  37. - *Confirmed*: has been confirmed by at least one other contributor
  38. than the bug reporter (typically for *Bug* reports).
  39. The purpose of this label is to let developers know which issues are
  40. still reproducible when they want to select what to work on. It is
  41. therefore a good practice to add in a comment on what platform and
  42. what version or commit of Godot the issue could be reproduced; if a
  43. developer looks at the issue one year later, the *Confirmed* label
  44. may not be relevant anymore.
  45. - *Crash:* describes a bug that causes the engine to crash.
  46. This label is only used for "hard" crashes, not freezes.
  47. - *Discussion*: the issue is not consensual and needs further
  48. discussion to define what exactly should be done to address the
  49. topic.
  50. - *Documentation*: related to the documentation. PRs with this label improve the
  51. class reference. Issues with this label are either for wrong documentation, or
  52. are user-reported "bugs" that are actually limitations to be further documented.
  53. Often paired with *Discussion*. Issues related to the ReadTheDocs documentation
  54. should be filed on the `godot-docs <https://github.com/godotengine/godot-docs>`_ repository.
  55. - *Enhancement*: describes a proposed enhancement to an existing
  56. functionality.
  57. - *Feature proposal*: describes a wish for a new feature to be
  58. implemented. Note that the main Godot repository no longer accepts
  59. feature requests. Please use
  60. `godot-proposals <https://github.com/godotengine/godot-proposals>`__ instead.
  61. PRs which add new features but do not have a corresponding proposal use this
  62. label.
  63. - *For PR meeting*: the issue needs to be discussed in a pull request meeting.
  64. These meetings are public and are held on the `Godot Contributors Chat <https://chat.godotengine.org/>`_.
  65. - *Good first issue*: the issue is *assumed* to be an easy one to fix, which makes
  66. it a great fit for new contributors who want to become familiar with
  67. the code base. It should be removed while an active PR is available, that
  68. resolves this issue.
  69. - *High priority:* the issue is particularly important as it can
  70. prevent people from releasing their projects or cause data loss.
  71. - *Needs testing*: the issue/pull request could not be completely tested
  72. and thus need further testing. This can mean that it needs to be tested
  73. on different hardware/software configurations or even that the steps to
  74. reproduce are not certain.
  75. - *Needs work*: the pull request needs additional work before it can be merged.
  76. Also for issues that are very incomplete, such as missing reproduction steps.
  77. - *Performance*: issues that directly impact engine or editor performance.
  78. Can also be used for pull requests that improve performance or add low-end-friendly options.
  79. Should not be coupled with *Usability*.
  80. - *Production*: Relates to the production team.
  81. - *Regression*: the bug appeared after a stable release not exhibiting
  82. the bug was released.
  83. - *Salvageable*: the pull request can't be merged due to design issues or
  84. merge conflicts and its author is not active anymore. However, it can still
  85. be picked up by an external contributor to bring it to a mergeable state.
  86. To do so, you need to open a new pull request based on the original pull request.
  87. - *Tracker*: issue used to track other issues (like all issues related to
  88. the plugin system).
  89. - *Usability*: issues that directly impact user usability. Should not be coupled with *Performance*.
  90. The categories are used for general triage of the issues. They can be
  91. combined in some way when relevant, e.g. an issue can be labelled
  92. *Enhancement* and *Usability* at the same time if it's an issue to improve
  93. usability. Or *Feature proposal* and *Discussion* if it's a non-consensual
  94. feature request, or one that is not precise enough to be worked on.
  95. At least one of the categories *Bug*, *Enhancement* or *Discussion* is used to
  96. describe an issue or pull request.
  97. **Topics:**
  98. - *2D*: relates to 2D-specific issues. Should be coupled with one of the labels below, and should not be coupled with *3D*.
  99. - *3D*: relates to 3D-specific issues. Should be coupled with one of the labels below, and should not be coupled with *2D*.
  100. - *Animation*: relates to the Animation system, editors and importers.
  101. - *Assetlib*: relates to issues with the asset library.
  102. - *Audio*: relates to the audio features (low and high level).
  103. - *Buildsystem*: relates to building issues, either linked to the SCons
  104. buildsystem or to compiler peculiarities.
  105. - *Codestyle*: relates to the programming style used within the codebase.
  106. - *Core*: anything related to the core engine. Specific topics are split off separately as they crop up.
  107. - *Dotnet*: relates to the C# / Dotnet bindings.
  108. - *Editor*: relates to issues in the editor (mainly UI).
  109. - *Export*: relates to the export system and templates.
  110. - *GDExtension*: relates to the GDExtension system for native extensions.
  111. - *GDScript*: relates to GDScript.
  112. - *GUI*: relates to GUI (Control) nodes or to Nodes that compose user interfaces.
  113. - *Import*: relates to the resource import system.
  114. - *Input*: relates to the input system.
  115. - *Multiplayer*: relates to multiplayer (high-level networking) systems.
  116. - *Navigation*: relates to the navigation system (including A* and navmeshes).
  117. - *Network*: relates to (low-level) networking.
  118. - *Particles*: particles, particle systems and their editors.
  119. - *Physics*: relates to the physics engine (2D/3D).
  120. - *Plugin*: relates to problems encountered while writing plugins.
  121. - *Porting*: relates to some specific platforms or exporting projects.
  122. - *Rendering*: relates to the 2D and 3D rendering engines.
  123. - *Shaders*: relates to the Godot shader language or visual shaders.
  124. - *Tests*: relates to unit tests.
  125. - *Thirdparty*: relates to third-party libraries used in Godot.
  126. - *XR*: relates to Augmented Reality or Virtual Reality.
  127. Issues would typically correspond to only one topic, though it's not
  128. unthinkable to see issues that fit two bills. The general idea is that
  129. there will be specialized contributors teams behind all topics, so they
  130. can focus on the issues labelled with their team's topic.
  131. **Platforms:**
  132. *Android*, *iOS*, *Linux*, *macOS*, *Web*, *Windows*
  133. By default, it is assumed that a given issue applies to all platforms.
  134. If one of the platform labels is used, it is then exclusive and the
  135. previous assumption doesn't stand anymore (so if it's a bug on e.g.
  136. Android and Linux exclusively, select those two platforms).
  137. Documentation labels
  138. ~~~~~~~~~~~~~~~~~~~~
  139. In the `documentation repository <https://github.com/godotengine/godot-docs>`__, we
  140. use the following `labels <https://github.com/godotengine/godot-docs/labels>`__:
  141. - *Archived*: either a duplicate of another issue, or invalid. Such an
  142. issue would also be closed.
  143. - *Bug*: Incorrect information in an existing page. Not to be used for
  144. *missing* information.
  145. - *Cherrypick*: describes something that can be backported to a stable branch
  146. after being merged in the ``master`` branch.
  147. - *Dependencies*: describes pull requests that update a dependency file.
  148. - *Discussion*: the issue is not consensual and needs further
  149. discussion to define what exactly should be done to address the
  150. topic.
  151. - *Enhancement*: new information to be added in an existing page.
  152. - *Good first issue*: the issue is *assumed* to be an easy one to fix, which makes
  153. it a great fit for new contributors who want to become familiar with
  154. the code base. It should be removed while an active PR is available, that
  155. resolves this issue.
  156. - *Needs work*: the pull request needs additional work before it can be merged.
  157. - *Python*: Pull requests that update Python code.
  158. - *Salvageable*: the pull request can't be merged due to design issues or
  159. merge conflicts and its author is not active anymore. However, it can still
  160. be picked up by an external contributor to bring it to a mergeable state.
  161. To do so, you need to open a new pull request based on the original pull request.
  162. - *Tracker*: issue used to track other issues (like all issues related to
  163. the plugin system).
  164. **Area:**
  165. - *About*: Issues and PRs related to the About section of the documentation and other general articles.
  166. - *Class reference*: the issue is about the class reference, not a documentation page.
  167. - *Community*: Issues and PRs related to the Community section of the documentation.
  168. - *Contributing*: Issues and PRs related to the Contributing/Development section of the documentation.
  169. - *Getting started*: Issues and PRs related to the Getting Started section of the documentation.
  170. - *Manual*: Issues and PRs related to the Manual/Tutorials section of the documentation.
  171. **Content:**
  172. - *Images*: Issues and PRs involving outdated or incorrect images in articles.
  173. - *New page*: Issues and PRs related to creation of new documentation pages for new or undocumented features.
  174. - *Organization*: Issues and PRs related to reorganizing the content.
  175. - *Proofreading*: Issues and PRs related to proofreading the documentation.
  176. - *Redirect*: Issues and PRs involving moving content and adding a redirect rule on the backend.
  177. - *Website*: Issues related to adding website features and fixing bugs, whether on the front or back-end,
  178. **Topic:**
  179. The available topics describe the same content as the topics in the main
  180. repository.
  181. Milestones
  182. ~~~~~~~~~~
  183. `Milestones <https://github.com/godotengine/godot/milestones>`_ correspond to
  184. planned future versions of Godot for which there is an existing roadmap. Issues
  185. that fit in the said roadmap should be filed under the corresponding milestone;
  186. if they don't correspond to any current roadmap, they should be left without
  187. milestone. As a rule of thumb, an issue corresponds to a given milestone if it
  188. concerns a feature that is new in the milestone, or a critical bug that can't be
  189. accepted in any future stable release, or anything that Juan wants to work on
  190. right now. :)
  191. Contributors are free to pick issues regardless of their assigned milestone;
  192. if a fix is proposed for a bug that was not deemed urgent and thus without
  193. milestone, it would likely still be very welcome.