[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