[openstack-dev] Proposal for a process to keep up with Python releases
Thomas Goirand
zigo at debian.org
Mon Oct 22 14:33:49 UTC 2018
On 10/19/18 5:17 PM, Zane Bitter wrote:
> We have traditionally held to the principle that we want each release to
> support the latest release of CentOS and the latest LTS release of
> Ubuntu, as they existed at the beginning of the release cycle.[2]
> Currently this means in practice one version of py2 and one of py3, but
> in the future it will mean two, usually different, versions of py3.
That's not very nice to forget about the Debian case, which usually
closely precedes Ubuntu. If you want to support Ubuntu better, then
supporting Debian better helps. I usually get the issue before everyone,
as Sid is the distro which is updated the most often. Therefore, please
make sure to include Debian in your proposal.
> For unit tests, the most important thing is to test on the versions of
> Python we target. It's less important to be using the exact distro that
> we want to target, because unit tests generally won't interact with
> stuff outside of Python.
One of the reoccurring problem that I'm facing in Debian is that not
only Python 3 version is lagging behind, but OpenStack dependencies are
also lagging behind the distro. Often, the answer is "we don't support
this or that version of X", which of course is very frustrating. One
thing which would be super nice, would be a non-voting gate job that
test with the latest version of every Python dependencies as well, so we
get to see breakage early. We've stopped seeing them since we decided it
breaks too often and we would hide problems behind the
global-requirement thing.
And sometimes, we have weird interactions. For example, taskflow was
broken in Python 3.7 before this patch:
https://salsa.debian.org/openstack-team/libs/python-taskflow/commit/6a10261a8a147d901c07a6e7272dc75b9f4d0988
which broke multiple packages using it. Funny thing, it looks like it
wouldn't have happen if we didn't have a pre-version of Python 3.7.1 in
Sid, apparently. Anyway, this can happen again.
> So, for example, (and this is still under active debate) for Stein we
> might have gating jobs for py35 and py37, with a periodic job for py36.
> The T jobs might only have voting py36 and py37 jobs, but late in the T
> cycle we might add a non-voting py38 job on master so that people who
> haven't switched to the U template yet can see what, if anything,
> they'll need to fix.
This can only happen if we have supporting distribution packages for it.
IMO, this is a call for using Debian Testing or even Sid in the gate.
> We'll run the unit tests on any distro we can find that supports the
> version of Python we want. It could be a non-LTS Ubuntu, Fedora, Debian
> unstable, whatever it takes. We won't wait for an LTS Ubuntu to have a
> particular Python version before trying to test it.
I very much agree with that.
> Before the start of each cycle, the TC would determine which range of
> versions we want to support, on the basis of the latest one we can find
> in any distro and the earliest one we're likely to need in one of the
> supported Linux distros.
Release of Python aren't aligned with OpenStack cycles. Python 3.7
appeared late in the Rocky cycle. Therefore, unfortunately, doing what
you propose above doesn't address the issue.
> Integration Tests
> -----------------
>
> Integration tests do test, amongst other things, integration with
> non-openstack-supplied things in the distro, so it's important that we
> test on the actual distros we have identified as popular.[2] It's also
> important that every project be testing on the same distro at the end of
> a release, so we can be sure they all work together for users.
I find very disturbing to see the project only leaning toward these only
2 distributions. Why not SuSE & Debian?
Cheers,
Thomas Goirand (zigo)
More information about the OpenStack-dev
mailing list