Open theopolis opened 4 years ago
ooo, I was also just thinking about this!
I agree with your highlevel points about how we should treat milestones.
One of the things I wanted to work through, was how the release candidates, git tags, github releases, and changelog work.
Some things I believe. There may be disagreement:
This leads me to thinking that we might have a process along the lines of:
An alternate process might look like editing and re-tagging the github release. Not sure
The thing I'm most leery of is what semi-freezing master means while an RC is baking. I'm not sure we'd want a new table to sneak into a release, but I'm less sure if we should semi-freeze, or do some other tag/branch shenanigans. Freezing is easiest, so we should probably start with that
Re-tagging is out of the equation, everyone agrees on this.
I personally do not like “-rcN” tags, I’d rather call “X.Y.0” as ‘the milestone and initial release candidate’, and follow up with .1, .2, .3 as more stable versions until we decide to push one to repos/downloads. However, along the way, each tag receives a change log update.
One thing I like about -rcN
(or whatever) is that it's easy to tell whether a release is a RC or a production release. I think the counter argument is that the difference is arbitrary. We should release X.Y.0, and if we need to fix it, we can fix it. I think in that sense, we're be adopting something closer to an everygreen style -- HEAD is always a release, and sometime we stick a nice label on it.
However, along the way, each tag receives a change log update
This ties into the above. If I view .0
as an RC, and then .1
as a release, I don't know what goes in the changelog.
But, if I think of .0
as a release, that may or may not be promoted to "stable", then I agree with you.
Said differently, I think you're proposing (and I'm willing to go with it) something like:
Downside to that approach is that I don't think one can easily tell from a package, binary, or version whether something was stable. I'm not sure it matters
The GitHub release pages, and whatever is published to the website for downloads would be the source of truth for what is marked stable, seems reasonable, ya?
Yeah. To tell whether a release is stable, you need an outside resource (like github, or downloads). Else all you can tell is that it's version "X.Y.Z"
There was recent discussion on Slack about a release strategy.
Here is my proposal / recommendation, please provide criticism and feedback. The goal is to flush out a strategy, document and communicate it (perhaps on README or otherwise), then implement.
X.Y.0
, for example4.3.0
.master
branch is semi-frozen meaning only documentation, small changes, and bug fixes are merged.0.0.Z
release is tagged from the milestone release. Packages are published off of this release.In this model we have two main benefits:
One large downside: