Following up on this thread — VEP #233 has now been merged and I
wanted to share an update on next steps.
# Immediate step: archive dead release branches (release-0.4 through
release-0.57)
As a first step under the VEP's transition plan [1], @dhiller has put
together a draft PR to archive the 50 release branches from
release-0.4 through release-0.57:
https://github.com/kubevirt/project-infra/pull/5041
These branches have been de facto dead for years, none receive
backports, and many target Kubernetes versions that Kubernetes itself
stopped supporting long ago. The PR:
- Removes 25 presubmit CI job YAML files for release branches
0.13-0.57 (~33,400 lines of dead config)
- Opts all 50 branches out of the Prow branchprotector so that they
can be locked
- Cleans up stale config entries for branches that were never created
(release-0.25, release-0.28)
After the PR merges, a follow-up script will set lock_branch: true on
all 50 branches via the GitHub API, making them fully read-only. No
branches or tags will be deleted; they remain as a historical record.
To give downstream users and vendors time to react, we will hold off
on merging this PR until v1.9.0-beta.0 (May 21, 2026) [3]. If you are
relying on any of these branches, please raise this on the thread
before then.
Note that release-0.58 and release-0.59 are out of scope for this
initial cleanup — they will be handled by the normal EOL trigger at
v1.10 GA.
# The longer plan enforcing a 3-release support window
The broader goal of VEP #233 is to adopt a hard EOL policy modeled on
the Kubernetes patch release support period [2], limiting active
maintenance to the 3 most recent minor releases. With 3 releases per
year, this provides approximately 12-15 months of support per release.
The timeline is:
1. v1.9 GA — Policy announced
2. v1.9 to v1.10 — Grace period of one full release cycle for the
community and downstream consumers to prepare
3. v1.10 GA — Policy enforced. All releases older than N-2 are marked
EOL (v1.7 and earlier). Branch protection applied, CI lanes removed,
and cherry-pick PRs targeting EOL branches auto-closed with a message
directing users to upgrade.
Going forward, each new GA release will automatically trigger EOL for
the N-3 release (e.g., v1.10 GA -> v1.7 EOL, v1.11 GA -> v1.8 EOL).
For the full rationale, CVE backport analysis, and alternatives that
were considered (including a two-tier support model for downstream),
please see the VEP:
https://github.com/kubevirt/enhancements/blob/main/veps/sig-release/233-release-branch-eol-policy/vep.md
Feedback welcome on this thread or on the archive PR.
Cheers,
Lee
[1]
https://github.com/kubevirt/enhancements/blob/main/veps/sig-release/233-release-branch-eol-policy/vep.md#transition-plan
[2]
https://kubernetes.io/releases/patch-releases/#support-period
[3]
https://github.com/kubevirt/enhancements/pull/305