Opened at 2022-02-14T13:35:23Z
Closed at 2022-02-22T18:07:12Z
#3873 closed enhancement (fixed)
Drop Python 2 support
Reported by: | itamarst | Owned by: | |
---|---|---|---|
Priority: | normal | Milestone: | Support Python 3 |
Component: | unknown | Version: | n/a |
Keywords: | Cc: | ||
Launchpad Bug: |
Description (last modified by itamarst)
Accidental Python 2 incompatibility is wasting my time, and inability to use Python 3 features (even just in new modules) is somewhat frustrating.
Python 3 support has been out for 4 months, and there have been three releases with Python 2+3 support already. If Python 2 fixes are needed they can be done off a branch taken from the latest one of those.
Proposed plan for this particular iteration:
- Remove all Python 2 builders.
- Only allow Python 3 features in new modules (i.e. HTTP storage) for now, so that backports of critical bug fixes and security updates can happen for a few more months.
Change History (7)
comment:1 Changed at 2022-02-14T13:35:38Z by itamarst
- Description modified (diff)
comment:2 Changed at 2022-02-14T13:37:26Z by exarkun
comment:3 Changed at 2022-02-14T13:39:16Z by exarkun
For the second bullet point, I don't know if it's worth it. I'm not sure we'll actually be able to produce a bugfix-only release from an old release branch. We have not done that in recent history, there is no documented process, and without CI it seems particularly fraught.
I think we should make sure we get full CI coverage from Python 3 CI jobs and then just drop Python 2 completely, including from the development process.
comment:4 Changed at 2022-02-14T13:48:01Z by itamarst
Some of current CI builders are for obsolete platforms. Specifically:
- Debian 9. Debian 10 came out in mid-2019, Debian 11 came out in 2011. Debian 9 doesn't have sufficiently new Python 3. We should drop it and add Debian 10 and Debian 11 instead.
- CentOS 8. CentOS 8 is no longer a supported operating system (though RHEL 8 is supported, and will be for many years), but there are equivalents like Oracle Linux we could switch to as equivalent drop-in for RHEL 8. RHEL 8 and clones have Python 3.8 and 3.9.
- Fedora 28 and 29 haven't been supported platform since late 2019. Should switch to newer Fedora.
- Ubuntu 16.04 technically has support, but I'm guessing it doesn't provide modern Python 3, and there will be three newer LTSes (18.04, 20.04, 22.04) in two months, so I say just drop it.
- Ubuntu 18.04 has Python 3.7 so it's fine for now.
comment:5 Changed at 2022-02-14T13:49:26Z by itamarst
- Some of the specialized builders (locale?) are probably on obsolete platforms and can be updated (or maybe Python 3 makes them unnecessary? I keep forgetting how that awfulness works).
comment:6 Changed at 2022-02-14T13:51:57Z by exarkun
OS updates sound good.
We noted the need to do some of this quite a while ago but no one was interested in doing it:
https://tahoe-lafs.org/trac/tahoe-lafs/ticket/3327
Maybe we should drop Fedora on CI if there is no one interested in doing the maintenance? (We could try harder to find someone to do the maintenance first, though).
comment:7 Changed at 2022-02-22T18:07:12Z by itamarst
- Resolution set to fixed
- Status changed from new to closed
Do the Python 3 builders cover all of the same platforms and configurations the Python 2 builders cover? That is, do we lose CI coverage for anything other than Python 2 when we drop all of the current Python 2 builders?