I'd like to propose a change to how we manage versions in the Wasmtime repository motivated by downstream usage in Spin. Specifically I'd like to propose improving signalling of in-development versions of Wasmtime and assist in making it as easy as possible to test release branches before we publish them. The goal here would be to retain the "feel" of our release process today (just hit merge on PRs) while changing the underlying implementation.
Specifically what I'd like to propose is:
- The
main branch perpetually has a version number X.0.0-dev. The "-dev" part here signifies that it'll never be published anywhere and it's entirely in development. While not strictly necessary this'll help differentiate development on a branch from release branches I believe.
- Upon making the
release-X.0.0 branch, currently automation sends a PR to main to bump to (X+1).0.0. It'd still do that, but it'd also create a PR against the release-X.0.0 branch which changes the version number to X.0.0-rc.1.
- Upon bumping to
X.0.0-rc.1, this PR would additionally have "[automatically-tag-and-release-this]" which means that X.0.0-rc.1 would be published to crates.io and additionally be published to this repository's github releases.
- I'd expect that the github releases for
X.0.0-rc.1 would permanently be listed as a "pre-release" in the GitHub sense. We'd create corresponding tags and such for this exactly as-is today.
- If necessary we could bump the rc on the release branch manually (triggered via a specific input to github actions) and make multiple release candidate publishes before a branch is actually released.
- As is today the actual publication of the release branch would happen via automation where we'd automatically change
X.0.0-rc.N to X.0.0 and then tag/publish that.
This would enable publishing pre-release artifacts of Wasmtime to crates.io to enable as-easy-as-possible downstream consumption to help report issues and test out what's about to be published. This would enable Spin, for example, to update and test out easily and see if anything needs updating. While this is all possible in theory to do with git dependencies it's generally much easier to work with crates.io dependencies and I think it's wortwhile to lower the bar as much as possible to make it easy to test out pre-release artifacts.
I wanted to open an issue here and see if anyone had any thoughts about this though and/or opposed this. My intention is that the work here is largely just changing scripts/publish.rs w.r.t. version bumps, adjusting the precise schedule of what makes PRs where, and then updating documentation of our release process.
I'd like to propose a change to how we manage versions in the Wasmtime repository motivated by downstream usage in Spin. Specifically I'd like to propose improving signalling of in-development versions of Wasmtime and assist in making it as easy as possible to test release branches before we publish them. The goal here would be to retain the "feel" of our release process today (just hit merge on PRs) while changing the underlying implementation.
Specifically what I'd like to propose is:
mainbranch perpetually has a version numberX.0.0-dev. The "-dev" part here signifies that it'll never be published anywhere and it's entirely in development. While not strictly necessary this'll help differentiate development on a branch from release branches I believe.release-X.0.0branch, currently automation sends a PR tomainto bump to(X+1).0.0. It'd still do that, but it'd also create a PR against therelease-X.0.0branch which changes the version number toX.0.0-rc.1.X.0.0-rc.1, this PR would additionally have "[automatically-tag-and-release-this]" which means thatX.0.0-rc.1would be published to crates.io and additionally be published to this repository's github releases.X.0.0-rc.1would permanently be listed as a "pre-release" in the GitHub sense. We'd create corresponding tags and such for this exactly as-is today.X.0.0-rc.NtoX.0.0and then tag/publish that.This would enable publishing pre-release artifacts of Wasmtime to crates.io to enable as-easy-as-possible downstream consumption to help report issues and test out what's about to be published. This would enable Spin, for example, to update and test out easily and see if anything needs updating. While this is all possible in theory to do with
gitdependencies it's generally much easier to work with crates.io dependencies and I think it's wortwhile to lower the bar as much as possible to make it easy to test out pre-release artifacts.I wanted to open an issue here and see if anyone had any thoughts about this though and/or opposed this. My intention is that the work here is largely just changing
scripts/publish.rsw.r.t. version bumps, adjusting the precise schedule of what makes PRs where, and then updating documentation of our release process.