The Bevy Development Process :bird: === [Github Repository](https://github.com/bevyengine/bevy) # Table of Contents :bookmark_tabs: [TOC] # Story Board :ticket: | Backlog | In Progress | Review In Progress | Reviewer Approved | Done | | - | - | - | - | - | - | | Issues | Issues/PRs | PRs | PRs | Issues/PRs | Issues/PRs - Each of the columns represents the current state of a given story. - Stories will live in in a single column at a given time, moving from one to the other once appropriate progress had been made. ## Lifecycles :recycle: ### PR Lifecycle ```mermaid graph TD D(In Progress) --> |Request Changes| E(Review in Progress); E --> |2+ Approve| F(Reviewer Approved); F --> |Request Changes| E; F --> |Merged/Closed| G(Done); ``` ### Issue Lifecycle ```mermaid graph LR B(Backlog) --> |Triaged|B; B --> |PR Opened|C(In Progress); C --> |PR Closed|B; C --> |PR Merged|D(Done); ``` # Github Labels :label: Each of the following label columns represent a different category. There is a single color associated with each category. Each **issue**/**PR** is required to have the below labels (except where _opt_ is specified). The layout of labels will be as follows: ***<prefix>: <label>*** e.g. ***T: enhancement*** ## Categories and Colors :art: `<Category> <Color>` Content :purple_heart: Type :blue_heart: Priority :green_heart: Difficulty :yellow_heart: Status :orange_heart: Platform :heart: ## Generic Labels For both **Issues** and **PRs** | Type [T] (one or more) | Category [C] | Platform [X] (opt)| Priority [P] (opt) | ------ | ------- | ------- | ------- | | enhancement | window | Windows | critical | | bug | ci/build-system | Linux | high | | code-quality | animation | Mac | accessability | assets | iOS | docs | audio | Android | hotifx | ecs | XR | performance | editor | Web | breaking change | physics | | code-cleanup | scenes | | crash | rendering | | testing | tasks | | dependencies | ecosystem | | regression | ui | | duplicate | input | | examples | math | | | reflection | | transform | | | app | | | ai | | | modding | ## PR Labels :arrow_heading_down: | Status [S] (optional) | | --- | | needs triage | | ready for final review | | abandoned | ## Issue Labels :exclamation: | Difficulty [D] (opt) | Status [S] | | --- | ---- | | good first issue | needs triage | | complex | needs investigation | | | needs design | | | ready for implementation | | | blocked upstream | | | invalid | | | wontfix | | | needs-rfc | | | help-wanted | | | user-error | ### Status Label Descriptions - **ready-for-final-review**: this PR is ready for @cart to officially review. - **abandoned**: this PR was abandoned with seemingly no intent to continue progress - **needs-triage**: this issue needs labels - **needs-investigation**: this issue must be examined/reproduced - **needs-design**: needs design work laying out how it might be implemented - **ready-for-implementation**: needs to be implemented in a concerete form - **blocked-upstream**: no progress can be made until an upstream depdedency changes/fixes something - **invalid**: This is spam, a duplicate issue, or user error - **wontfix**: this direction won't be taken in favor of another approach - **needs-rfc**: this proposes a large change that is not sufficently covered in an issue. An RFC should be created for more in-depth discussions. # Triage :clipboard: - Triaging is conducted via [Github Labels](#Github-Labels). - Each story has a set of associated labels. - Issues and PRs have a different set of associated labels - Triaging is complete when the appropriate `labels` have been assigned and the `Needs Traige` label is removed. - The triage team will add the appropriate labels to issues/PRs. ## Example Triaged PR - PR: Fixing an important rendering bug for Windows - Labels: - `T-Bug` - `C-Rendering` - `X-Windows` - `P-High` ## Example Triaged Issue - Issue: Entities do not implement `std::fmt::Debug`. - Labels: - `T-Enhancement` - `C-ECS` - `D-good-first-issue` - `S-ready-for-implementation` # Pull Requests :arrow_heading_down: ## PR Template :paperclip: - This should be added into the main repository via `.github/.pull_request_template.md` ``` Brief Description ## Problem: - Describe the problem this PR solves here. - If you're fixing an issue, say "Fixes #X". ## Solution: - Describe the solution used to overcome the problem. ## Additional Information: - Any additional information needed to better understand this PR. ``` - Why? - There is currenlty no standard for the PR messages that get merged into `main`. - This template encourage descriptive PRs that thoroughly explains what it accomplishes. Example PR --- --- Add example for using `Commands` ## Problem: - There are insufficient examples showing how to use `Commands` ## Solution: - Add additional examples making is clear how to correctly use `Commands` in various contexts. --- ## Reviews :eyes: Pull requests can be reviewed by anyone who contributes to bevy! A pull request requires **at least** _two_ approvals to move from the `Review in Progress` to the `Reviewer Approved` story board columns. At this point, a triage member should mark the PR as `ready-for-final-review` and once in the `Reviewer Approved` column, the PR will be officially reviewed by **Cart**, and either - **Merge**: at which point the PR moves to the `Done` column. - **Request Changes**: which then moves the story back to the `Review in Progress` column. - This should be automated via cart by reviewing and click the `request changes` button on the review.