@@ -12,35 +12,49 @@ hesitate to propose modifications to the following guidelines.
1212Issues management
1313-----------------
1414
15- GitHub proposes various features to manage issues :
15+ For issue management, we use the following GitHub processes :
1616
17- - Set one or several labels from a predefined list
18- - Set one milestone from a predefined list
19- - Keep track of the issue in the project dashboard
20- - Define one contributor as "assignee" among the Godot engine
21- organization members
17+ - Each issue and pull request (PR) is categorized with a set of *labels *,
18+ sometimes called "tags".
19+ - Each issue and PR is assigned to a *milestone *.
20+ - Issues can have an *assignee *, who is a contributor among Godot maintainers.
21+ - Issues can be put in one or more *projects *.
22+ - PRs can be *linked * to one or more issues which they "fix" or "close".
2223
23- As the Godot engine organization on GitHub currently has a restricted
24- number of contributors, we do not use assignees extensively for now. All
25- contributors are welcome to take on any issue, if relevant after mentioning
26- it on the issue ticket and/or discussing the best way to resolve it with
27- other developers.
24+ We don't yet extensively use or rely on some other GitHub processes:
2825
29- For the time being, we do not use the project dashboard feature either.
26+ - Issue close reasons (completed, not planned, duplicate). While we use these,
27+ it is not consistent, and older issues are all closed as "completed", so the
28+ issue close reason should not be relied on.
29+ - Issue *types * (Bug, Feature, Task).
30+ - Issue *relationships *.
3031
31- As far as possible, we try to assign labels (and milestones, when relevant)
32- to both issues and pull requests.
32+ We only use the assignees feature for Godot maintainers who are members of the
33+ Godot engine GitHub organization, and even then not in all cases. Any contributor
34+ is welcome to take on any issue, after discussing it with other contributors.
35+ If you would like to pick up an issue (and no one else is working on it), all
36+ you have to do is leave a comment in the issue.
3337
3438Labels
3539~~~~~~
3640
3741The following `labels <https://github.com/godotengine/godot/labels >`__ are
3842currently defined in the Godot repository:
3943
40- **Categories: **
44+ Categories:
45+ ^^^^^^^^^^^
4146
42- - *Archived *: either a duplicate of another issue, or invalid. Such an
43- issue would also be closed.
47+ - *Archived *: used to filter closed issues.
48+
49+ - For issues, added to all issues that are not resolved by engine or
50+ documentation changes. This includes duplicate issues, user error, or
51+ reports in the wrong repository. Usually, all other labels are removed.
52+ Since we don't rely on GitHub's issue close reasons (``completed ``, ``not
53+ planned ``, and ``duplicate ``), it is possible for a PR to be closed as
54+ ``completed `` with the *Archived * label.
55+ - For PRs, added to all closed PRs that are not merged. This includes superseded
56+ or duplicate PRs, Git or GitHub mistakes, and valid PRs that end up not merged.
57+
4458- *Breaks compat *: describes something that can only be fixed by breaking
4559 compatibility with existing projects.
4660- *Bug *: describes something that is not working properly.
@@ -66,12 +80,11 @@ currently defined in the Godot repository:
6680 should be filed on the `godot-docs <https://github.com/godotengine/godot-docs >`_ repository.
6781- *Enhancement *: describes a proposed enhancement to an existing
6882 functionality.
69- - *Feature proposal *: describes a wish for a new feature to be
70- implemented. Note that the main Godot repository no longer accepts
71- feature requests. Please use
72- `godot-proposals <https://github.com/godotengine/godot-proposals >`__ instead.
73- PRs which add new features but do not have a corresponding proposal use this
74- label.
83+ - *Feature proposal *: Used for PRs adding new features which do not have a
84+ corresponding proposal use this label. The label is removed when a feature
85+ proposal is created and linked. The main Godot repository no longer accepts
86+ feature requests as issues. Please use the `godot-proposals
87+ <https://github.com/godotengine/godot-proposals> `__ repository instead.
7588- *For PR meeting *: the issue needs to be discussed in a pull request meeting.
7689 These meetings are public and are held on the `Godot Contributors Chat <https://chat.godotengine.org/ >`_.
7790- *Good first issue *: the issue is *assumed * to be an easy one to fix, which makes
@@ -89,37 +102,41 @@ currently defined in the Godot repository:
89102- *Performance *: issues that directly impact engine or editor performance.
90103 Can also be used for pull requests that improve performance or add low-end-friendly options.
91104 Should not be coupled with *Usability *.
92- - *Production *: Relates to the production team.
93105- *Regression *: the bug appeared after a stable release not exhibiting
94106 the bug was released.
95107- *Salvageable *: the pull request can't be merged due to design issues or
96108 merge conflicts and its author is not active anymore. However, it can still
97- be picked up by an external contributor to bring it to a mergeable state.
109+ be picked up by another contributor to bring it to a mergeable state.
98110 To do so, you need to open a new pull request based on the original pull request.
111+ - *Spam *: intentional spam issues, and extremely low-effort PRs. Used
112+ sparingly, since we give contributors and users the benefit of the doubt. In
113+ most cases, *Needs work * or *Archived * is more appropriate.
99114- *Tracker *: issue used to track other issues (like all issues related to
100115 the plugin system).
101116- *Usability *: issues that directly impact user usability. Should not be coupled with *Performance *.
102117
103- The categories are used for general triage of the issues. They can be
104- combined in some way when relevant, e.g. an issue can be labelled
105- *Enhancement * and *Usability * at the same time if it's an issue to improve
106- usability. Or *Feature proposal * and *Discussion * if it's a non-consensual
107- feature request, or one that is not precise enough to be worked on.
108- At least one of the categories *Bug *, *Enhancement * or *Discussion * is used to
109- describe an issue or pull request.
118+ The categories are used for general triage of the issues. They can be combined
119+ in some way when relevant, e.g. an issue can be labelled *Bug * and *Usability *
120+ at the same time if it's a bug that affects usability. Or *Enhancement * and
121+ *Discussion * if it's an improvement that requires discussion of the best
122+ approach. At least one of the categories *Bug *, *Enhancement * or *Discussion * is
123+ used to describe an issue or pull request.
110124
111- **Topics: **
125+ Topics:
126+ ^^^^^^^
112127
113- - *2D *: relates to 2D-specific issues. Should be coupled with one of the labels below, and should not be coupled with *3D *.
114- - *3D *: relates to 3D-specific issues. Should be coupled with one of the labels below, and should not be coupled with *2D *.
128+ - *2D *: relates to 2D-specific issues. Should be coupled with one of the labels
129+ below, and should not be coupled with *3D *.
130+ - *3D *: relates to 3D-specific issues. Should be coupled with one of the labels
131+ below, and should not be coupled with *2D *.
115132- *Animation *: relates to the Animation system, editors and importers.
116133- *Assetlib *: relates to issues with the asset library.
117134- *Audio *: relates to the audio features (low- and high-level).
118135- *Buildsystem *: relates to building issues, either linked to the SCons
119136 buildsystem or to compiler peculiarities.
120137- *Codestyle *: relates to the programming style used within the codebase.
121138- *Core *: anything related to the core engine. Specific topics are split off separately as they crop up.
122- - *Dotnet *: relates to the C# / Dotnet bindings.
139+ - *Dotnet *: relates to the C# / .NET bindings.
123140- *Editor *: relates to issues in the editor (mainly UI).
124141- *Export *: relates to the export system and templates.
125142- *GDExtension *: relates to the GDExtension system for native extensions.
@@ -145,9 +162,10 @@ unthinkable to see issues that fit two bills. The general idea is that
145162there will be specialized contributors teams behind all topics, so they
146163can focus on the issues labelled with their team's topic.
147164
148- **Platforms: **
165+ Platforms:
166+ ^^^^^^^^^^
149167
150- *Android *, *iOS *, *Linux *, *macOS *, *Web *, *Windows *
168+ *Android *, *iOS *, *LinuxBSD *, *macOS *, *Web *, *Windows *
151169
152170By default, it is assumed that a given issue applies to all platforms.
153171If one of the platform labels is used, it is then exclusive and the
@@ -175,6 +193,12 @@ use the following `labels <https://github.com/godotengine/godot-docs/labels>`__:
175193 it a great fit for new contributors who want to become familiar with
176194 the code base. It should be removed while an active PR is available, that
177195 resolves this issue.
196+ - *Linked demo PR *: the PR has a corresponding PR to the
197+ `Godot Demo Projects <https://github.com/godotengine/godot-demo-projects >`__
198+ repository which must be merged at the same time. Any changes to code in
199+ tutorials that have a corresponding demo, such as :ref: `doc_your_first_2d_game `,
200+ need to update both repositories so that the tutorial code stays in sync with
201+ the completed demo.
178202- *Needs work *: the pull request needs additional work before it can be merged.
179203- *Python *: Pull requests that update Python code.
180204- *Salvageable *: the pull request can't be merged due to design issues or
@@ -183,8 +207,11 @@ use the following `labels <https://github.com/godotengine/godot-docs/labels>`__:
183207 To do so, you need to open a new pull request based on the original pull request.
184208- *Tracker *: issue used to track other issues (like all issues related to
185209 the plugin system).
210+ - *Waiting on PR merge *: the PR documents an engine PR that has not been merged
211+ yet.
186212
187- **Area: **
213+ Area:
214+ ^^^^^
188215
189216- *About *: Issues and PRs related to the About section of the documentation and other general articles.
190217- *Class reference *: the issue is about the class reference, not a documentation page.
@@ -193,7 +220,8 @@ use the following `labels <https://github.com/godotengine/godot-docs/labels>`__:
193220- *Getting started *: Issues and PRs related to the Getting Started section of the documentation.
194221- *Manual *: Issues and PRs related to the Manual/Tutorials section of the documentation.
195222
196- **Content: **
223+ Content:
224+ ^^^^^^^^
197225
198226- *Images *: Issues and PRs involving outdated or incorrect images in articles.
199227- *Example code *: Issues and PRs involving writing or updating code examples.
@@ -203,23 +231,46 @@ use the following `labels <https://github.com/godotengine/godot-docs/labels>`__:
203231- *Redirect *: Issues and PRs involving moving content and adding a redirect rule on the backend.
204232- *Website *: Issues related to adding website features and fixing bugs, whether on the front or back-end,
205233
206- **Topic: **
234+ Topic:
235+ ^^^^^^
207236
208237The available topics describe the same content as the topics in the main
209238repository.
210239
211240Milestones
212241~~~~~~~~~~
213242
214- `Milestones <https://github.com/godotengine/godot/milestones >`_ correspond to
215- planned future versions of Godot for which there is an existing roadmap. Issues
216- that fit in the said roadmap should be filed under the corresponding milestone;
217- if they don't correspond to any current roadmap, they should be left without
218- milestone. As a rule of thumb, an issue corresponds to a given milestone if it
219- concerns a feature that is new in the milestone, or a critical bug that can't be
220- accepted in any future stable release, or anything that Juan wants to work on
221- right now. :)
222-
223- Contributors are free to pick issues regardless of their assigned milestone;
224- if a fix is proposed for a bug that was not deemed urgent and thus without
225- milestone, it would likely still be very welcome.
243+ `Milestones <https://github.com/godotengine/godot/milestones >`_ are used for
244+ some issues and all PRs.
245+
246+ We have milestones for specific minor engine versions, like ``4.5 `` and ``4.6 ``,
247+ as well as general milestones for major engine versions, like ``3.x `` and
248+ ``4.x ``. In the ``godot-proposals `` repo, we also have a ``5.0 `` milestone for
249+ compatibility-breaking changes that will be considered for Godot 5.0, in many
250+ years.
251+
252+ Issues are assigned to a milestone, such as ``4.5 ``, if they are related to
253+ features introduced in that engine version, or are bugs (regressions) in that
254+ version. Additionally, all issues completed during that engine version are added
255+ to the milestone. We don't always use the ``4.x `` milestone for issues, since by
256+ default all issues are related to Godot 4.x. However, we do use the ``3.x ``
257+ milestone to mark issues that are specific to Godot 3.x.
258+
259+ All pull requests are assigned to a milestone. By default, enhancement and
260+ feature PRs are assigned to the ``4.x `` milestone, and bugs are assigned to the
261+ current minor version milestone, such as ``4.5 ``. Towards the end of a minor
262+ version's development, PRs currently in the minor version milestone are
263+ reassigned to either the major version milestone (``4.x ``), or the next minor
264+ version milestone (such as ``4.6 ``).
265+
266+ When a pull request is approved and merged, it is moved from ``4.x `` to the
267+ milestone for the current minor engine version, such as ``4.5 ``.
268+
269+ The milestone assigned to a PR is a goal, not a guarantee. New features and
270+ enhancements are merged when they are ready. While reviewers and maintainers do
271+ their best to review PRs in time for the current version, at some point we reach
272+ the beta, feature freeze, and then release; and existing PRs are re-triaged to
273+ the next minor version, or to ``4.x ``. As a rule, we assign new features to
274+ ``4.x `` version initially to avoid continually re-triaging a PR from version to
275+ version. However, a PR being in ``4.x `` does not mean it won't be merged; it's
276+ just the default for new features.
0 commit comments