Directrices para el triaje de errores

Esta página describe el flujo de trabajo típico del equipo de triaje de errores, también conocido como "bugsquad", al manejar problemas y solicitudes de extracción en el repositorio de Godot en GitHub. Está destinado a evolucionar junto con el bugsquad, así que no dudes en proponer modificaciones a las siguientes directrices.

Gestión de problemas (issues)

For issue management, we use the following GitHub processes:

  • Each issue and pull request (PR) is categorized with a set of labels, sometimes called "tags".

  • Each PR is assigned to a milestone. Some issues can also be assigned to a milestone (see below).

  • Issues can have an assignee, who is a contributor among Godot maintainers.

  • Issues can be put in one or more projects.

  • PRs can be linked to one or more issues which they "fix" or "close".

We don't yet extensively use or rely on some other GitHub processes:

  • Issue close reasons (completed, not planned, duplicate). While we use these, it is not consistent, and older issues are all closed as "completed", so the issue close reason should not be relied on.

  • Issue types (Bug, Feature, Task).

  • Issue relationships.

We only use the assignees feature for Godot maintainers who are members of the Godot Engine GitHub organization, and even then not in all cases. For other issues, we track who is working on an issue by comments on the issue and linked pull requests. Most issues are available for any contributor to take on, after discussing it with other contributors. If you would like to work on an issue, first check that no one else is working on it, by looking for a linked pull request, a comment "claiming" the issue, or an assignee. If no one else is working on the issue, leave a comment on the issue to "claim" it and start working on it.

Etiquetas

The following labels are currently defined in the Godot repository:

Categories:

  • Archived: used to filter issues closed with a resolution other than "fixed".

    • For issues, added to all issues that are not resolved by engine or documentation changes. This includes duplicate issues, user error, or reports in the wrong repository. Since we don't rely on GitHub's issue close reasons (completed, not planned, and duplicate), it is possible for an issue to be closed as completed with the Archived label.

    • For PRs, added to all closed PRs that are not merged. This includes superseded or duplicate PRs, Git or GitHub mistakes, and valid PRs that end up not merged.

  • Rompe la compatibilidad: Describe algo que solo se puede solucionar rompiendo la compatibilidad con proyectos existentes.

  • Bug: Describe algo que no está funcionando correctamente.

  • Cherrypick: Describe algo que se puede aplicar en una rama estable después de haber sido fusionado en la rama master.

  • Confirmed: Ha sido confirmado por al menos otro colaborador aparte del reportador del error (normalmente para informes de Bugs). El propósito de esta etiqueta es permitir a los desarrolladores saber qué problemas siguen siendo reproducibles cuando desean seleccionar en qué trabajar. Por lo tanto, es una buena práctica agregar en un comentario en qué plataforma y qué versión o commit de Godot se pudo reproducir el problema; si un desarrollador mira el problema un año después, la etiqueta Confirmed puede no ser relevante.

  • Crash: Describe un error que hace que el motor se cierre inesperadamente. Esta etiqueta se utiliza solo para "crashes" (cierres abruptos) reales, no para bloqueos.

  • Discussion: El problema no es consensual y requiere más discusión para definir qué exactamente se debe hacer para abordar el tema.

  • Documentation: related to the documentation. PRs with this label improve the class reference. Issues with this label are either for wrong documentation, or are user-reported "bugs" that are actually limitations to be further documented. Often paired with Discussion. Issues related to the ReadTheDocs documentation should be filed on the godot-docs repository.

  • Enhancement: Describe una mejora propuesta para una funcionalidad existente.

  • Feature proposal: used for PRs adding new features which do not have a corresponding proposal use this label. The label is removed when a feature proposal is created and linked. The main Godot repository no longer accepts feature requests as issues. Please use the godot-proposals repository instead.

  • For PR meeting: El problema necesita ser discutido en una reunión de solicitudes de extracción (pull request). Estas reuniones son públicas y se llevan a cabo en el 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 want to become familiar with the code base. It should be removed while an active PR is available, that resolves this issue.

  • High priority: El problema es particularmente importante ya que puede evitar que las personas lancen sus proyectos o causar pérdida de datos.

  • Needs testing: El issue o pull request no ha sido completamente probado y necesita pruebas adicionales. Esto puede significar que necesita ser probado en diferentes configuraciones de hardware o software, o incluso que los pasos para reproducir el problema no están claros.

  • Needs work: the pull request needs additional work before it can be merged. Also for issues that are very incomplete, such as missing reproduction steps.

  • Performance: problemas que impactan directamente en el rendimiento del motor o del editor. También puede usarse para pull requests que mejoran el rendimiento o añaden opciones para dispositivos de baja gama. No debería usarse junto con Usabilidad.

  • Regresión: el error apareció después de que se lanzara una versión estable que no presentaba el error.

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

  • Spam: intentional spam issues, and extremely low-effort PRs. Used sparingly, since we give contributors and users the benefit of the doubt. In most cases, Needs work or Archived is more appropriate.

  • Tracker: issue utilizado para rastrear otros problemas (como todos los problemas relacionados con el sistema de complementos).

  • Usabilidad: problemas que impactan directamente la usabilidad para los usuarios. No debe estar relacionado con Rendimiento.

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 labeled Bug and Usability at the same time if it's a bug that affects usability. Or Enhancement and Discussion if it's an improvement that requires discussion of the best approach. At least one of the categories Bug, Enhancement, or Discussion are used to describe an issue or pull request.

Topics:

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

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

  • Animation: relates to the Animation system, editors and importers.

  • Assetlib: se refiere a problemas relacionados con la biblioteca de activos (asset library).

  • Audio: relates to the audio features (low- and high-level).

  • Buildsystem: se refiere a problemas de construcción, ya sea relacionados con el sistema de construcción SCons o con peculiaridades del compilador.

  • Codestyle: se refiere al estilo de programación utilizado dentro del código fuente.

  • Core: anything related to the core engine. Specific topics are split off separately as they crop up.

  • Dotnet: relates to the C# / .NET bindings.

  • Editor: se refiere a problemas en el editor (principalmente la interfaz de usuario).

  • Export: relates to the export system and templates.

  • GDExtension: relates to the GDExtension system for native extensions.

  • GDScript: se refiere a GDScript.

  • GUI: relates to GUI (Control) nodes or to Nodes that compose user interfaces.

  • Import: se refiere al sistema de importación de recursos.

  • Input: relates to the input system.

  • I18n: relates to internationalization.

  • Multiplayer: relates to multiplayer (high-level networking) systems.

  • Navigation: se refiere al sistema de navegación (que incluye A* y navmeshes).

  • Network: relates to (low-level) networking.

  • Particles: particles, particle systems and their editors.

  • Physics: se refiere al motor de físicas (2D/3D).

  • Plugin: se refiere a problemas encontrados al escribir complementos (plugins).

  • Porting: se refiere a plataformas específicas o a la exportación de proyectos.

  • Rendering: se refiere a los motores de renderizado 2D y 3D.

  • Shaders: se refiere al lenguaje de sombreado de Godot o a los sombreadores visuales.

  • Tests: se refiere a las pruebas unitarias.

  • Thirdparty: se refiere a bibliotecas de terceros utilizadas en Godot.

  • XR: se refiere a la Realidad Aumentada o Realidad Virtual.

Las issues típicamente corresponderán a un solo tema, aunque no es impensable ver issues que encajen en dos categorías. La idea general es que habrá equipos de colaboradores especializados para cada tema, para que puedan centrarse en las issues etiquetadas con el tema de su equipo.

Platforms:

Android, iOS, LinuxBSD, macOS, Web, Windows

Por defecto, se asume que una determinada issue se aplica a todas las plataformas. Si se utiliza una de las etiquetas de plataforma, entonces esa etiqueta se considera exclusiva y la suposición anterior ya no se aplica (por lo tanto, si es un bug exclusivo de Android y Linux, selecciona esas dos plataformas).

Etiquetas de documentación

In the documentation repository, we use the following labels:

  • Archived: Se refiere a problemas que son duplicados de otro problema o que son inválidos. Estos problemas también serán cerrados.

  • Bug: Información incorrecta en una página existente. No se debe usar para información que falta.

  • Cherrypick: Describe algo que se puede aplicar en una rama estable después de haber sido fusionado en la rama master.

  • Dependencies: describes pull requests that update a dependency file.

  • Discussion: El problema no es consensual y requiere más discusión para definir qué exactamente se debe hacer para abordar el tema.

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

  • Linked demo PR: the PR has a corresponding PR to the Godot Demo Projects repository which must be merged at the same time. Any changes to code in tutorials that have a corresponding demo, such as Tu primer juego 2D, need to update both repositories so that the tutorial code stays in sync with the completed demo.

  • Needs work: El pull request necesita trabajo adicional antes de que pueda ser fusionado.

  • Python: Pull requests that update Python code.

  • Salvable: el pull request no puede ser fusionado debido a problemas de diseño o conflictos de fusión, y su autor ya no está activo. Sin embargo, todavía puede ser retomado por un colaborador externo para llevarlo a un estado que pueda ser fusionado. Para hacerlo, necesitas abrir un nuevo pull request basado en el pull request original.

  • Tracker: issue utilizado para rastrear otros problemas (como todos los problemas relacionados con el sistema de complementos).

  • Waiting on PR merge: the PR documents an engine PR that has not been merged yet.

Area:

  • About: Issues and PRs related to the About section of the documentation and other general articles.

  • Class reference: El problema se refiere a la referencia de clase, no a una página de documentación.

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

  • Example code: Issues and PRs involving writing or updating code examples.

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

Hitos

Milestones are used for some issues and all PRs.

We have milestones for specific minor engine versions, like 4.5 and 4.6, as well as general milestones for major engine versions, like 3.x and 4.x. In the godot-proposals repo, we also have a 5.0 milestone for compatibility-breaking changes that will be considered for Godot 5.0, in many years.

Issues are assigned to the current development milestone, such as 4.5, if they are related to features introduced in that engine version, or are bugs (regressions) in that version. Additionally, all issues completed during the development of that engine version are added to the milestone, so that users can see at a glance in which minor version an issue was first fixed. We don't always use the 4.x milestone for issues, since by default all issues are related to Godot 4.x. However, we do use the 3.x milestone to mark issues that are specific to Godot 3.x.

All pull requests are assigned to a milestone. By default, enhancement and feature PRs are assigned to the 4.x milestone, and bugs are assigned to the current development milestone, such as 4.5. Towards the end of the minor version's development, PRs currently in that milestone are reassessed. If a PR is no longer being considered for that version, it is reassigned to either the major version milestone (4.x), or the next minor version milestone (such as 4.6).

Pull requests in the 4.x milestone are reassigned to the current minor engine version, such as 4.5, when the review process is complete, and the production team decides that the PR is ready to be merged soon. Note that this usually requires more than one approving review.

The milestone assigned to a PR is a goal, not a guarantee. New features and enhancements are merged when they are ready. While reviewers and maintainers do their best to review PRs in time for the current version, at some point we reach the beta, feature freeze, and then release; and existing PRs are reassigned to the next minor version, or to 4.x. As a rule, we assign new features to the 4.x milestone initially to avoid continually reassigning a PR from version to version. However, a PR being in 4.x does not mean it won't be merged; it's just the default for new features.