-
Notifications
You must be signed in to change notification settings - Fork 248
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Establish predictable removal policy for end-of-life Python versions #1375
Comments
We follow manylinux. Manylinux follows EoL's for Ubuntu. So Python 3.6 will be removed in April 2023 when Ubuntu 18.04 hits EoL. We don't have a "default" vs. "can't build". We build everything that's native by default (including musllinux!). It's not clear how you could expand this to have a "non default but still can build" feature without really complicating the system. I do think it might be nice to pull the available versions from manylinux containers, so the drops really would be entirely based on manylinux dropping things, and pinning an older image would allow you to build older Pythons. That would get out of sync for the others, though. IMO, cibuildwheel should not be in the place of forcing the ecosystem to drop things. Most users should set a minimum Python version, and cibuildwheel already respects that. Because it happens to build 3.6 doesn't mean you need to or should be supporting 3.6. We dropped previous versions because they required significant effort to support and because manylinux dropped them. |
I agree that because support in manylinux is a hard requirement for cibuildwheel, we can't meaningfully deviate from their schedule. So the debate around when to actually drop support would take place there. And I'm a big fan of keeping things consistent across platforms, so we'd drop support on mac/windows at the same time as linux. As for 'not building by default' after EoL+3 months, I'd actually be in favour of this, for the reasons you mention. And I'd add another - a user that's setting up wheel building for a new package is unlikely to want to build for old versions of Python, but the fact that cibuildwheel does so by default implies that it's best-practice to build old versions. But, at the same time:
|
Let's stick with our existing policy of following manylinux, for the reasons noted above. |
With cibuildwheel maturing, I think it would be good to establish a predictable removal policy for end-of-life Python versions. This allows everyone to anticipate the end of wheels for that version, and move on.
Dropping end-of-life Python versions at some point would:
Of course, with cibuildwheel dropping a Python version, projects that really need beyond end-of-life Python wheels could always keep using an old cibuildwheel version. And existing wheels are still on PyPI after a new cibuildwheel release without support for the EoL version.
My suggestion for a schedule would be something along the lines of:
With the new 1-year release cadence this would ensure a few cibuildwheel versions in which the end-of-life Python version could be build together with the brand new one. And with 9 months it would be removed before the next one.
Practically, that would look like this:
Which would mean for Python 3.6, a one-time catch-up is needed. Then from Python 3.8 onwards, stop building by default in January and drop support in July (just before the release candidate of the next version).
The exact schedule is just a suggestion to start discussion about this. The predictability of the schedule is most important. Curious what everybody thinks!
The text was updated successfully, but these errors were encountered: