Replies: 3 comments 6 replies
-
I have experienced some pushback when not supporting EOL python versions (here is a recent example in fakeredis). Is removing support for an EOL python version considered a breaking change (i.e. major version)? |
Beta Was this translation helpful? Give feedback.
-
Could we recommend a Deprecation Policy as a best practice. I can see situations where some maintainers may have a policy which indicates only current versions of Python are supported, while another could have a policy which indicates they support 2 EOL versions of Python (or something similar) are supported 🤔 |
Beta Was this translation helpful? Give feedback.
-
The only hard and fast Python version rule I'm really comfortable with is in the opposite direction. "Thou shalt support the latest Python/Django" - but even this is probably best implemented as a carrot rather than a stick (some kind of badge for long-term compliance). I don't have a strong affirmative case for not removing EOL versions from the test matrix. In my own experience I leave it in there until something breaks and if its EOL I kick it out, update the dependency range and issue a new release. I'm not really doing any extra work to support EOL versions, I'm just not being proactive about removing them - which I think is fine. The strongest case I could make for being proactive is reducing the burden on the django-commons actions quota haha (not really sure what the deal is with that?). It's also important to note that in a lot of downstream applications the person writing the code is not always in control of the production environment. I have a few times intentionally supported EOL pythons in my open source packages for this reason. I've wanted to add new feature to the code, but the lethargy of the IT apparatus was a real hurdle. And if the point of all this is to make the experience of using Django better, I'm way more interested in the experience of that dev caught between a lethargic IT department and the future of their code base than I am about incentivizing IT to do their jobs. This kind of dynamic is hugely present in government (because they tend to operate like its 2005) and I also think "the government" is a massively untapped resource for DSF funding - so it may pay to keep those downtrodden devs happy. |
Beta Was this translation helpful? Give feedback.
-
I'm coming from https://github.com/orgs/django-commons/discussions/89#discussioncomment-11099217 and I'm not sure what is the best format so feel free to share recommendations or edit.
Idea
When a Python version sees EOL, support for the given Python version should be removed from all packages either immediately or after a selected short time period: https://devguide.python.org/versions/#python-release-cycle
An automated rule/workflow that removes EOL Python versions from all packages in the organization may be the end goal there. If a package doesn't want to follow the common deprecation policy, exceptions can be made.
Benefits
Rules
Automation
I'll make some assumptions and list a couple of prerequisites that we didn't discuss before.
[pyupgrade](https://github.com/asottile/pyupgrade)
pyupgrade
should be configured withtarget-version = py<min_supported_version>
pyupgrade
should be applied automatically in the development environment and GitHub Actions.These steps will only handle rules 6 and 7. Please share your recommendations for the rest.
Updates
Oct 31, 2024
Beta Was this translation helpful? Give feedback.
All reactions