Previously, in the Fedora Linux 34 Final Go/No-Go meeting:
#action bcotton to start a discussion on how to avoid the Extreme Time Crunch Burrito for F35+
What happened is that we had about five hours from the time RC 2 finished until the start of the Go/No-Go meeting. While there weren’t a ton of changes between RC1 and RC2, this is a suboptimal situation. My assignment is to start the conversation so we can avoid this in the future. We did this to ourselves (and I’ll admit that I am a big part of the “we” in this particular case), in part because we have no rules to stop us. While this doesn’t happen every time, it happens enough that we should come up with a way to protect us from ourselves.
As a reminder, we have two competing goals to balance here: releasing on time and releasing according to our criteria. The latter requires effort from our QA community, and we don’t want to put an unreasonable burden on them.
So how do we put the appropriate guardrails in place?
One idea is that if we don’t have a RC request 48 hours before the Go/No-Go, then we consider it an automatic no-go. I have a vague recollection of suggesting that a few releases ago and getting told “nah, it’s okay.” Perhaps 24 hours would be better?
My main concern with this approach is that not all RCs are equal. If we spin a new RC to fix one relatively isolated blocker, it can be fully tested in minutes. The test results from previous release candidates can carry forward to this one without concern. Of course, this becomes a judgment call and how do we decide where to draw the line? It leaves us open to the same issue.
Another idea is to not allow freeze exceptions within a certain point prior to the go/no-go. This reduces the number of changes between RCs and so limits the amount of re-testing that needs to be done.
We could also take a hybrid approach where we say, for example, the RC must happen 24 hours before the meeting, but “minimally different” (however we define that) RCs can happen up to 12 hours before the meeting, with no freeze exceptions allowed for those.
Or maybe there’s an entirely different approach?