Opened 6 days ago
Last modified 5 days ago
#36005 new Cleanup/optimization
Drop support for Python 3.10 & 3.11.
Reported by: | Sarah Boyce | Owned by: | |
---|---|---|---|
Component: | Core (Other) | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Someday/Maybe | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
If I understood the process correctly then Django 5.2 LTS, supported until April 2028, is the last version to support:
- Python 3.10 (end of life: October 2026)
- Python 3.11 (end of life: October 2027)
See our policy about Python version support and discussions regarding the Python version support policy:
Change History (4)
comment:1 by , 6 days ago
comment:2 by , 6 days ago
Triage Stage: | Unreviewed → Someday/Maybe |
---|
That's correct. The policy is also documented in the FAQ:
Typically, we will support a Python version up to and including the first Django LTS release whose security support ends after security support for that version of Python ends. For example, Python 3.9 security support ends in October 2025 and Django 4.2 LTS security support ends in April 2026. Therefore Django 4.2 is the last version to support Python 3.9.
comment:3 by , 6 days ago
I cannot refrain from voicing my traditional rant :-) Django 6.0 lifetime is entirely inside the Python 3.11 lifetime, so I don't see the point in dropping support in that case. I know, I know, it's not the policy...
comment:4 by , 5 days ago
I’ll just add that I’ve shared Claude’s concerns. (See those two threads)
Tim was very patient in running me around the playground, thinking through the issues there.
Particularly the second thread I found convincing.
It’s difficult to see how or when we could adjust dropping the older versions
(With Python now having 5 live versions with the annual release cycle the CI and support matrix is already extensive. I’m sceptical about extending it further.)
I think one problem is we always have this conversation at this point in the cycle, where if we are going to change it we should probably discuss it at the start of the cycle in order to have time to talk it through. (So if we want to think about it for 7.x we should discuss again after/around 6.0)
This ticket should be "Someday/Maybe" until we start working on Django 6.0.