← Back to team overview

cloud-init team mailing list archive

Python version support and dropping 3.5


Hello cloud-init community,

Cloud-init upstream would like to put a version support policy in place for
Python. Currently, we have no good way of deciding when to drop support for
a particular version of Python.

Version support involves a set of tradeoffs around predictability,
maintainability, and distro compatibility. Keeping old versions too long
creates a large maintenance burden upstream, but dropping versions too
quickly creates a large maintenance burden for distro maintainers. Python
has a predictable release cadence, and python releases are supported for 5
years post release. After this time, most libraries also start dropping
support and upstream maintenance becomes harder. However, there are distros
still regularly receiving cloud-init backports beyond this 5 year window.
As far as we're aware, there aren't any distros regularly backporting
cloud-init changes (this doesn't include ad hoc security maintenance) after
a 6 year window.

Given this, our proposal is that cloud-init upstream will stay compatible
with a particular python version for 6 years after release. After 6 years,
we will stop testing upstream changes against the unsupported version of
python and may introduce breaking changes. Given that python 3.5 was
released just over 6 years ago, this also means we will end support for
Python 3.5 at the end of the year. Starting January 3rd, cloud-init will
support Python 3.6+.

If these assumptions are incorrect, or this causes any hardship, please
reach out ASAP. We are willing to revisit this policy at any time if needed.