Skip to content

Latest commit

 

History

History
131 lines (110 loc) · 5.87 KB

File metadata and controls

131 lines (110 loc) · 5.87 KB
feature nixos-release-stablization
start-date 2021-01-17
author Jonathan Ringer (@jonringer)
co-authors
shepherd-team @ryantm, @garbas, @Mic92
shepherd-leader @ryantm
related-issues [NixOS release schedule](#80)

Summary

To bring more certainty to the release cycle, add short periods where breaking changes are partially restricted. A list of Release Critical Packages is defined. Also, move most release stablization work from the release branch to the master branch to reduce backports.

Motivation

We want to release on time without herculian efforts. Limited restrictions to merging breaking changes to staging should avoid the common practice of forcing many, largely-untested, commits into master before branch-off.

This happened for the 20.09 release in which ~640 staging commits were pushed through in the days leading up to the branch off (#95492, #96280, #96437, #97146). The last PR included a release blocker fix (introduced in one of the mentioned PRs) which delayed the branch-off from 4 Sept 2020 to 7 Sept 2020, and ZHF had to be delayed another day to get a semi-accurate hydra build status. The systemd bump was also largely responsible delaying the release until after the scheduled release date where basic login features in plasma weren't restored until Oct 5th, a week after the planned release date and a backlog of other plasma related issues weren't resolved until Oct 19th, almost a month after the planned release date. This is not to discredit any individual, but demonstrate that certain packages have many dimensions of compatibility which need a longer time to stabilize on unstable before being included in a release.

Definitions

  • Breaking change
    • A change that is likely to break downstream.
    • For projects following Semantic Versioning, major version bumps indicate breaking changes.
  • Restricted
    • Breaking changes are disallowed.
    • Breaking changes for security or critical bugs are allowed. (Patching is preferred over updates.)
    • New packages and NixOS modules are welcome.
  • Unrestricted
    • Breaking changes are allowed.
    • New packages and NixOS modules are welcome.
  • ZHF: Zero Hydra Failures
    • Period in which packages are stabilized in preparation of a release.

Changes

Release Critical Packages

A list of Release Critical Packages will be maintained in the release wiki. Release Critical Packages are important packages which have many dimensions of build or runtime behavior. Generally these will be packages which are a part of stdenv, or bootstrapping a system (e.g. systemd).

Changes to the list will not require additional RFCs, and will occur through the release team. Likely through a release retrospective and/or pull request process to the release wiki.

Restriction Timeline

This timeline represents when certain branches and packages will be restricted. It is not a complete timeline of all release activities. The actual timeline will still be determined by the Release Managers and may be adjusted as needed. The current position in the timeline will be communicated on Discourse.

Weeks from Release Branches Affected Events
-8 Weeks Gnome and Plasma(YY.11) packaging begins
-6 Weeks staging-next, staging Release Critical Packages are Restricted
-4 Weeks staging-next, staging Restrict all breaking changes: allow only non-breaking updates and Desktop Manager changes
-3 Weeks master (Day before ZHF) merge staging-next into master, prep for ZHF
-3 Weeks master Begin ZHF
-3 Weeks master Focus on minimizing regressions in PRs targeting master
-2 Weeks master Merge first staging-next fixes into master; begin second staging-next cycle
-2 Weeks staging Unrestrict all breaking changes; new changes will not be present in master before branch-off
-1 Weeks master Merge second staging-next fix cycle
-1 Weeks staging-next Unrestrict all breaking changes; new changes will not be present in master before branch-off
-1 Weeks master, release Perform Branch-off, create release channels, create new beta / unstable tags
-1 Weeks master, release ZHF transitions to "backporting" workflow
-1 Weeks release Prepare for release, finish remaining issues
0 Weeks release Release!
0 Weeks ZHF Ends

Drawbacks

Breaking changes to Release Critical Packages will have to wait a maximum of 4 weeks to be merged into staging. Other breaking changes targeting staging will have to wait a maximum of 2 weeks to be merged. Staging-next iterations will follow a 1 week development cycle during the release timeline. Breaking changes to Release Critical Packages will not appear in master for around 7 weeks (4 weeks being disallowed to be merged to staging, 1 week for last staging-next during ZHF, ~2 weeks average in staging-next). Pull requests which are able to target master will not be interrupted during a release.

Alternatives

Maintain the status quo regarding release dates

Continue with cramming staging changes right before branch-off, keeping a significant amount of stabilization work and risk before a release, and likely continuing the trend of delayed releases.

Future work