-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Add release-process.md #964
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
Add release-process.md #964
Conversation
This looks good! Note that c-lightning has a tool which extracts Changelog entries from commit messages, and also a bot that tests they exist for each PR (or Changelog-None is in GitHub description of PR). |
I suggest to use the format described here: https://keepachangelog.com/ - the guide also mentions that ChangeLog is not a git log dump :-) |
Just to be clear: our tool extracts lives starting with Changelog-(Added|Fixed|Changed|Deprecated|Removed) and adds links to the PRs and sorts them :) |
God, what kind of tools do you use?! 😁 |
Thanks for the feedback. I added an |
1bedbc9
to
85f05b2
Compare
ACK mod nit |
85f05b2
to
56c5bff
Compare
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.
ACK 56c5bff
ACK 56c5bff |
ACK procedure/changes, but somehow CI does not like this. |
56c5bff
to
86d0b9e
Compare
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.
rebased
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.
utACK 86d0b9e
Hmm, what is the expected difference between the package version and the library version? Why would they not be the same? |
@sipa See https://autotools.io/libtool/version.html @jonasnick Sorry, needs trivial rebase again. |
Can we write in the release process document how each of the 6 numbers are supposed to be updated as a function of the changes in such releases? |
Another question (not necessarily something to be explicitly explained in the release process here, but still something that isn't currently clear to me): what branches structure are the release branches going to use? Possibilities:
|
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.
@sipa The rules are described in configure.ac ("The library version is based on libtool versioning of the ABI. The set of rules for updating the version can be found here: https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html") or do you mean copying over the rules to the release-process.md? I thought it's best to have the rules where they version is set because it serves both as a doc of the existing values as well as how to update.
Another question
That's a good question. I'd like it answered in the release_process.md. How does Bitcoin Core do this? I would have thought everything is based off master except patches to earlier versions are done by branching off the earlier release branch. I think this would only have to be done for patches because it's unlikely we release a x.(y+1).z when (x+1).y.z is already released. Btw, "revision" isn't monotonically increasing, it's set to if there's any change to the interface (including additions).
86d0b9e
to
82458d7
Compare
@jonasnick Yes, I meant including the actual rules for incrementing the library version somewhere, not just a reference. I find the rules described in that link kind of vague, and I also had never heard about the concept of library versions at all; if someone is in a similar situation, and just sees the link they may not realize it's actually explaining why it's different from the numbers above.
Bitcoin Core's release process is roughly:
So the major difference with what you're proposing is that Bitcoin Core only has branches for major releases, not for very release, and that branch is then used for potentially multiple tags.
It's set to what if there is any change to the interface? |
@jonasnick Oh, I noticed that the link in the source is different from the one @real-or-random linked to. That one gives much more concrete instructions already. |
I don't see signficant down or upsides with either branching approach so I'd follow Bitcoin Core's process where applicable because that was the initial intention anyway.
Lol, sorry, I have a new (terrible) keyboard. 0. |
Well, I think there are probably some differences that could justify deviating. For one, I don't think we expect many "major" releases (in the semver sense) after 1.0, certainly not two per year. |
utACK 3ed0d02 Looks great! |
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.
ACK 3ed0d02
ACK b4b02fd |
@elichai wrong commit :P |
@real-or-random Ops, somehow I keep getting confused on the order of commits in github (in git the latest is on top, in github it's at the bottom) ACK 3ed0d02 |
@elichai if you have
in your gitconfig, you can do something like You may still type the wrong PR number or write "ACK" in the wrong browser tab, but at least there's one less mistake you can make :) |
ACK 3ed0d02 |
This is an attempt at a simple release process. Fixes #856. To keep it simple, there is no concept of release candidates for now.
The release version is determined by semantic versioning of the API. Since it does not seem to be a lot of work, it is proper to also version the ABI with the libtool versioning system. This versioning scheme (semver API, libtool versioning ABI) follows the suggestion in the autotools mythbusters.
Experimental modules are a bit of a headache, as expected. This release process suggests to treat any change in experimental modules as backwards compatible. That way, users of stable modules are not bothered by frequent non-backwards compatible releases. But a downside is that one must not use experimental modules in shared libraries (which should be mentioned in the README?). It would be nice if we could make the schnorrsig module stable in the not too distant future (see also #817).