[kata-dev] [kata-release] release cadence, process
Thierry Carrez
thierry at openstack.org
Fri Jul 20 09:23:14 UTC 2018
Anne Bertucio wrote:
> How many past versions we support is a balance between upstream
> community effort required and creating a user/operator-friendly project.
> Per Tim’s example on the Arch call, the average K8s user is not on the
> most current release, and in OpenStack the average user is typically
> N-2. While we want to encourage them to upgrade, it’s just not the
> operator reality.
>
> In Vancouver, the game plan on release cadence was to switch to
> time-based releases for major and minor (x.0.0 and 1.y.0 respectively)
> as soon as we felt it was feasible. We agreed to lean on the Arch
> Committee to guide us to when that would be. I feel like having a handle
> on what our time-based cadence might be will help in evaluating the
> “upstream community effort required” piece of the puzzle. Any thoughts
> since Vancouver on what our cadence might look like?
A bit of generic advice from my experience doing release management on
several openly-developed open source projects:
Main release cadence is a trade-off between getting features out and the
cost of releasing/upgrading/maintaining. On the "more often" side, you
generally find developers wanting fast feedback on their development
(release early, release often) and users waiting for a specific feature
(especially in the early days of a project). On the "less often" side,
you generally find people impacted by the action of releasing (release
managers when releases are not fully automated, marketing teams doing
communications), existing users needing to upgrade (when upgrade is not
trivial) and stable release maintainers (more releases meaning more
backporting work).
If you manage to limit the release cost (by automating release
management and limiting marketing release communications), reduce the
upgrade cost (by making it dead easy to upgrade, skip versions or
support multiple versions running alongside), then the only thing
preventing you from releasing very often is the stable release maintenance.
Stable release maintenance is a bit tricky, as in a lot of cases (like
Kubernetes or OpenStack) deployers are years behind, and maintaining all
branches for all releases leading up to that is painful (you basically
have to backport bugfixes for all supported branches, and community
volunteers for that job are not plenty). It also impacts automated
testing, as you sometimes need to keep a lot of test nodes around to
test those old branches. If you support upgrading from any version to
any version, you can solve some of that using a LTS scheme. But if users
have to go through every version to upgrade, the solution is to keep a
relatively long release cadence and only support a handful of past branches.
Now, I feel like Kata may have a unique profile here (due to where it
runs and how it's upgraded) which may well support a rather aggressive
cadence. Would it support upgrade from any version to any version ?
Would you upgrade running containers, or just let the old version run
alongside the new version ?
Hoping this helps,
--
Thierry Carrez (ttx)
More information about the kata-dev
mailing list