owned this note changed 3 months ago
Published Linked with GitHub

Release Process Proposal

This document proposes a small tweak to kickstart writing the release notes as part of the normal development process, instead of waiting to start writing until the last second as we do now.

The key points of the proposal are as follows:

  • We add a bevy/release_notes directory to the main repo. Files within this folder are named bevy/release_notes/{feature_name}.md. Each file will become a single entry in the blog post for the next release (just as the release-notes files in the website repo do now).

  • The release note files in the main repo are considered temporary drafts and apply only to the version currently under development. During the release process, they are moved to the website repo and finalized (we will say more on this later).

  • Each release note file will contain both content and metadata. The exact format is up for discussion. The list of metadata should include at minimum the list of PRs that contributed to the feature, and set of all authors and collaborators. This metadata will be manually curated rather than auto-generated (note: in both previous releases we extracted this information automatically and later discovered issues).

  • When a maintainer decides that a PR should be highlighted in the blog post, they add the M-Release-Note tag to it. This tag indicates that the PR author should append their name and the PR number to the metadata for relevant the feature file (creating it if it does not exist). To ensure the PR does not get lost, updating the metadata should be mandatory, and failing to do so should prevent merging. Maintainers can always do this step themselves by commiting to the branch before merging.

  • The M-Release-Note can also be added to issues to indicate PRs that implement/close those issues should have the tag applied. Most issues and PRs do not need to be highlighted in the blog post, and should not be tagged with M-Release-Note. PRs without the tag shouldn't touch the release notes directory.

  • When a PR has the M-Release-Note tag, maintainers can request content be added to a release note as part of normal PR review. They may choose to accept a simple TODO line that expresses the author's intentions, but they may also request more detailed explanations. There is concern that, if content is mandatory, it will be a burden on some highly active contributors. We trust the maintainers to make the right call, but suggest as general guidelines:

    • Content in the notes should be considered "rough drafts".
    • Leaving just a single TODO line is acceptable with maintainer ascent.
    • A bullet-pointed sketch of key points is always sufficient.
    • Sections of full prose and examples are always deeply appreciated.
    • It should be totally fine to leave bits incomplete if the salient points are clear.
    • Authors should focus more on substance than style.
  • Release notes in the main directory are only allowed to contain text. Images and videos should not be added. If required, authors can add files to the PR description and then copy the links into the release note.

  • Over the course of the development cycle, multiple feature files will be created within the release_notes directory on the main repo. When the development cycle ends and we begin the release candidate process, the maintainers will open two PRs: One to delete all the release notes from the main repo, and second to add them back to the release-content/{version}/release-notes directory of the website repo. The latter PR may be left open for some time to allow people to contribute suggestions and comments through the github review features. From there, managing the editing process is left to the maintainers. Additional images and videos can be added to the website repo at this stage.

The end effect is that "pre-release" work can happen on the release notes in the main repo as part of normal PRs, but we can continue use the current process once the release candidate phase commences. The hope is that the low friction of doing a bit of extra work with their normal PRs will encourage people to pitch in early and often.

Open Questions

  • What tools do we need to move data from the main repo to the new repo?
  • What tools might help users create/maintain release notes in the main repo?
  • How should we format metadata in the release notes?

Evaluation Criteria

We want this process to spread out the load of writing and editing the release notes to the broader community. So the questions we should ask are:

  • Will this decrease the burden on maintainers by a meaningful amount?
  • Will this increase the burden on other people by too much?
  • Will this ensure that we don't loose/drop stuff that should make it in to the notes?
Select a repo