Richtlinien für die Fehlerbehebung

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.

Problem-Management

GitHub bietet verschiedene Funktionen zum Verwalten von Problemen an:

  • Setzen Sie einen oder mehrere Marker (Labels) aus einer vordefinierten Liste

  • Setzen Sie einen Meilenstein aus einer vordefinierten Liste

  • Verfolgen Sie das Problem im Projekt-Dashboard

  • Ernennen Sie einen Mitwirkenden zum "Zuständigen" unter den Mitgliedern der Godot Engine-Organisation

Da die Godot-Engine-Organisation auf GitHub derzeit nur eine begrenzte Anzahl von Mitwirkenden hat, werden momentan nur wenige Zuständigen benötigt. Alle Mitwirkenden können sich jedes Problems annehmen, wenn dies relevant ist, nachdem sie es auf dem Problemticket erwähnt und/oder mit anderen Entwicklern besprochen haben, wie es am besten gelöst werden kann.

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

Wir versuchen so weit wie möglich, sowohl Problemen als auch Pull-Anfragen Labels zuzuweisen (und gegebenenfalls Meilensteine).

Marker (Labels)

Die folgenden Bezeichnungen sind derzeit im Godot-Repository definiert:

Kategorien:

  • Archived: entweder ein Duplikat eines anderen Problems oder ungültig. Ein solches Problem wäre ebenfalls geschlossen.

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

  • Bug: beschreibt etwas, das nicht richtig funktioniert.

  • 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: wurde von mindestens einem anderen Mitwirkenden als dem Fehler-Reporter bestätigt (normalerweise für Fehler-Berichte). Dieses Label soll Entwickler zeigen (bei der Auswahl woran sie arbeiten möchten) welche Probleme noch reproduzierbar sind. Es ist daher eine gute Praxis in einem Kommentar hinzuzufügen, auf welcher Plattform und in welcher Version oder in welchem Version von Godot das Problem reproduziert werden könnte. Wenn sich ein Entwickler ein Jahr später mit dem Problem befasst, ist der Marker Bestätigt möglicherweise nicht mehr relevant.

  • Discussion: Das Problem ist nicht einvernehmlich und bedarf weiterer Diskussion, um zu definieren, was genau getan werden soll, um das Thema anzugehen.

  • Documentation: Problem im Zusammenhang mit der Dokumentation, hauptsächlich, um Verbesserungen in der API-Dokumentation anzufordern. Probleme im Zusammenhang mit der ReadTheDocs-Dokumentation sollten im godot-docs Repository abgelegt werden.

  • Enhancement: Beschreibt eine vorgeschlagene Erweiterung einer vorhandenen Funktionalität.

  • 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.

  • Good first issue: the issue is assumed to be an easy one to fix, which makes it a great fit for new contributors who need to become familiar with the code base.

  • 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: Die Problem/Pull-Anforderung konnte nicht vollständig getestet werden und bedarf somit weiterer Tests. Dies kann bedeuten, dass es auf verschiedenen Hardware-/Softwarekonfigurationen getestet werden muss oder dass die zu reproduzierenden Schritte nicht sicher sind.

  • Performance: issues that directly impact engine or editor performance. Can also be used for pull requests that improve performance or add low-end-friendly options. Should not be coupled with Usability.

  • PR welcome / Hero wanted!: Beiträge für Probleme mit diesen Labels sind besonders willkommen. Beachten Sie, dass dies nicht bedeutet, dass Sie nicht an Problemen ohne diese Kennzeichnung arbeiten können.

  • Regression: the bug appeared after a stable release not exhibiting the bug was released.

  • Salvageable: the pull request can't be merged due to design issues or merge conflicts and its author is not active anymore. However, it can still be picked up by an external contributor to bring it to a mergeable state. To do so, you need to open a new pull request based on the original pull request.

  • Tracker: Problem das verwendet wird, um andere Probleme zu verfolgen (wie alle Probleme im Zusammenhang mit dem Plugin-System).

  • Usability: issues that directly impact user usability. Should not be coupled with Performance.

Die Kategorien werden für die allgemeine Analyse der Probleme verwendet. Sie können auf irgendeine Weise kombiniert werden, wenn dies relevant ist, z.B. ein Problem kann gleichzeitig als Enhancement und Usability bezeichnet werden, wenn es sich um ein Problem zur Verbesserung der Benutzerfreundlichkeit handelt. Oder Feature proposal und Discussion, wenn es sich um eine nicht einvernehmliche Funktionsanforderung handelt oder wenn diese nicht präzise genug ist, um bearbeitet zu werden.

Themen:

  • 2D: relates to 2D-specific issues. Should be coupled with one of the labels below, and should not be coupled with 3D.

  • 3D: Bezieht sich auf 3D-spezifische Probleme. Sollte mit einem der Labels unten und nicht mit 2D kombiniert werden.

  • Assetlib: Bezieht sich auf Probleme mit der Bestandsbibliothek.

  • Audio: bezieht sich auf die Audiofunktionen (niedriger und hoher Stufe).

  • Buildsystem: bezieht sich auf Build-Probleme, die entweder mit dem SCons-Buildsystem oder mit den Besonderheiten des Compilers zusammenhängen.

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

  • Core: alles, was mit der Haupt-Engine zu tun hat. Es könnte später weiter aufgeteilt werden, da es ein ziemlich großes Thema ist.

  • Editor: bezieht sich auf Probleme im Editor (hauptsächlich UI).

  • GDNative: bezieht sich auf das GDNative-Modul.

  • GDScript: bezieht sich auf GDScript.

  • GUI: relates to GUI (Control) nodes.

  • Import: relates to the resource import system.

  • Input: relates to input system.

  • Mono: bezieht sich auf C# / Mono Bindings.

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

  • Network: bezieht sich auf Networking.

  • Physics: bezieht sich auf die Physik Engine (2D/3D).

  • Plugin: bezieht sich auf Probleme beim Schreiben von Plugins.

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

  • Rendering: bezieht sich auf die 2D und 3D Rendering Engine.

  • 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.

Probleme entsprechen normalerweise nur einem Thema, obwohl es nicht undenkbar ist, Probleme zu sehen, die zu zwei Themen passen. Die allgemeine Idee ist, dass hinter allen Themen spezialisierte Mitarbeiterteams stehen, damit sie sich auf die Themen konzentrieren können, die mit dem Thema ihres Teams gekennzeichnet sind.

Plattformen:

Android, HTML5, iOS, Linux, MacOS, Windows, UWP

Standardmäßig wird davon ausgegangen, dass ein bestimmtes Problem für alle Plattformen gilt. Wenn eines der Plattform-Labels verwendet wird, ist es exklusiv und die vorherige Annahme gilt nicht mehr (wenn es sich also ausschließlich um einen Fehler unter Android und Linux handelt, wählen Sie diese beiden Plattformen aus).

Documentation labels

Im `Dokumentations-Repository <https://github.com/godotengine/godot-docs`__ verwenden wir die folgenden Bezeichnungen:

  • 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: Das Problem ist nicht einvernehmlich und bedarf weiterer Diskussion, um zu definieren, was genau getan werden soll, um das Thema anzugehen.

  • 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: the pull request can't be merged due to design issues or merge conflicts and its author is not active anymore. However, it can still be picked up by an external contributor to bring it to a mergeable state. To do so, you need to open a new pull request based on the original pull request.

  • 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.

Meilensteine

Meilensteine entsprechen geplanten zukünftigen Versionen von Godot, für die es eine bestehende Roadmap gibt. Probleme, die in diese Roadmap passen, sollten unter dem entsprechenden Meilenstein eingereicht werden. Wenn sie keiner aktuellen Roadmap entsprechen, sollten sie ohne Meilenstein bleiben. Als Faustregel gilt, dass ein Problem einem bestimmten Meilenstein entspricht, wenn es sich um eine Funktion handelt, die neu im Meilenstein ist, oder um einen kritischen Fehler, der in einer zukünftigen stabilen Version nicht akzeptiert werden kann, oder um etwas, an dem Juan richtig arbeiten möchte jetzt. :)

Es steht den Mitwirkenden frei, Probleme unabhängig von ihrem zugewiesenen Meilenstein auszuwählen. Wenn ein Fix für einen Fehler vorgeschlagen wird, der nicht als dringend und damit ohne Meilenstein eingestuft wurde, wäre er wahrscheinlich immer noch sehr willkommen.