-
-
Notifications
You must be signed in to change notification settings - Fork 158
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[RFC 0085] NixOS Release Stabilization: ZHF on master, new timeline #85
Merged
Merged
Changes from 4 commits
Commits
Show all changes
13 commits
Select commit
Hold shift + click to select a range
d7daa1c
[RFC 0085] ZHF on master, set release freeze dates
jonringer 0b1cff6
Add definitions section
jonringer 205d52f
Improve timeline clarity
jonringer 66e4014
Correct rfc number
jonringer d3bc53c
Add shepherds
edolstra 0cc3e76
RFC 0085: reorganize
ryantm 5981253
Rename 0085 to 0085-nixos-release-stablization.md
jonringer e3d4d7d
Fix typo
jonringer 4203a9f
0085: Improve Drawback wording
jonringer c7a84db
Clarify which branches are affected
jonringer 61b40e8
Apply @davidak suggestion
jonringer 2b10395
Move curated critical packages list to release wiki
jonringer b7e2cf4
@ryantm fixups
jonringer File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
--- | ||
feature: nixos-freeze-dates | ||
start-date: 2021-01-17 | ||
author: Jonathan Ringer (@jonringer) | ||
co-authors: | ||
related-issues: [NixOS release schedule](https://github.com/NixOS/rfcs/pull/80) | ||
--- | ||
|
||
# Summary | ||
[summary]: #summary | ||
|
||
To further minimize the amount of risk going into a NixOS release, I propose | ||
to set freeze dates regarding changes to critical packages being merged to | ||
staging. In addition, I also propose to stabilize the release on master | ||
instead of the release branch, thus avoiding the need to backport every pull | ||
request, and take advantage of the stabilization that unstable normally | ||
receives. | ||
|
||
# Definitions | ||
[definitions]: #definition | ||
|
||
- "Freezing" a branch or package. | ||
- Disallow breaking changes to branch or package. In SemVer terminology, disallow major version bumps. | ||
- A release branch can be thought of being permanently "frozen" in this regard. Stable may be a better term, but it's already overloaded with a previous release branch or channel. | ||
- "Unfreezing" a branch or package. | ||
- Allow for breaking changes to be made to branch or package. | ||
- "Critical packages" | ||
- 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). | ||
- Initially these will be: `stdenv.cc`,`binutils`, and `systemd` for this RFC. | ||
- ZHF: Zero Hydra Failures | ||
- Period in which packages are stabilized in preparation of a release. | ||
|
||
# Motivation | ||
[motivation]: #motivation | ||
|
||
The motivation for putting in place freeze dates is to 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 (https://github.com/NixOS/nixpkgs/pull/95492, | ||
https://github.com/NixOS/nixpkgs/pull/96280, https://github.com/NixOS/nixpkgs/pull/96437, | ||
https://github.com/NixOS/nixpkgs/pull/97146). The last PR included a release blocker | ||
fix (introduced in [one of the mentioned PRs](https://github.com/NixOS/nixpkgs/pull/96437)) | ||
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](https://github.com/NixOS/nixpkgs/pull/99629) | ||
and a backlog of other plasma related issues [weren't resolved until Oct 19th, almost a month after the planned release date](https://github.com/NixOS/nixpkgs/pull/101078). | ||
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. | ||
|
||
## Core changes | ||
|
||
Staging-next iterations will change to one week. | ||
|
||
Updates to `staging` which will land before branch-off will be restricted to non-breaking updates, and will need to be more thoroughly tested. The below table is a more detailed timeline, it is also sanitized of events not relating to merge criteria, staging events, or ZHF. | ||
|
||
| Weeks from Release | Events | | ||
| --- | --- | | ||
| -8 Weeks | Gnome, Plasma(YY.11) packaging begins | | ||
| -6 Weeks | Freeze "critical packages" breaking updates | | ||
| -4 Weeks | Freeze staging, allow only non-breaking updates and Desktop Manager changes | | ||
| -3 Weeks | (Day before ZHF) merge staging-next, prep for ZHF | | ||
| -3 Weeks | Begin ZHF on master branch | | ||
| -3 Weeks | Strong emphasis on minimizing regressions in master PRs | | ||
| -2 Weeks | Merge first staging-next fixes, begin second staging-next fix cycle | | ||
| -2 Weeks | Unfreeze "critical packages" changes to staging | | ||
| -2 Weeks | Unfreeze staging, allow for normal staging workflow, these changes will not be present in master before branch-off | | ||
| -2 Weeks | `staging-next` remains fixes only, will be merged before branch-off | | ||
| -1 Weeks | Merge second staging-next fix cycle | | ||
| -1 Weeks | Perform Branch-off, create release channels, create new beta / unstable tags | | ||
| -1 Weeks | ZHF transitions to "backporting" workflow | | ||
| -1 Weeks | Prepare for release, finish remaining issues | | ||
| 0 Weeks | Release! | | ||
| 0 Weeks | ZHF Ends | | ||
|
||
Actual release schedule may adjust dates slightly due to unforeseen events. | ||
|
||
Release team will retain the right to refine what constitutes "critical packages", as this may | ||
change over time, and will likely not warrant an RFC to caputre changes. | ||
|
||
# Drawbacks | ||
[drawbacks]: #drawbacks | ||
|
||
Normal staging development is disrupted for two weeks. (1 normal iteration) | ||
Changes to "critical packages" may have to wait for a month to be merged into staging. | ||
Master development will be uninterrupted, assuming all changes don't introduce new regressions. | ||
|
||
# Alternatives | ||
[alternatives]: #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. | ||
Mic92 marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
# Future work | ||
[future]: #future-work | ||
|
||
- Update [release wiki to reflect changes](https://github.com/NixOS/release-wiki) | ||
- Inform community about changes (Discourse). | ||
|
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This should also describe what this means for new packages/modules.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
New packages are welcome. Changes to modules are welcome, assuming it doesn't cause regressions, and the module changes will probably need to have documentation so it's not additional work trying to curate the release notes.
I will modify the definitions section to say that "freezing" will still allow new package and module additions.