Part of the rationale for dropping Python versions after an LTS is was to 
avoid getting "stranded" on a non-LTS version of Django. For example, if we 
keep Python 3.7 support in Django until Python 3.7 is end of life in June 
2023, that would probably make Django 4.1 the latest version to support it 
(4.2 is scheduled for April 2023, a few months before Python 3.7 EOL). At 
that point, someone stuck on Python 3.7 would receive Django security 
updates a few months longer if they had stuck with 3.2 LTS (supported until 
April 2024) compared with Django 4.1 (supported until December 2023). 
That's not so bad, but if the version following an LTS is the last to 
support a particular version of Python, like would happen with Django 5.0 
and Python 3.8 in my forecast below, then this "Django security gap" for a 
particular Python version would be one year.

Historically, Django has supported 3-5 version of Python. With Python 
moving to a yearly release cadence, that's going to increase the number of 
versions of Python that Django has to support under the current policy to 
4-6. Amending the Python version support policy as suggested would mean it 
would always be 5-6. That makes for some large build matrices. I'm 
especially thinking about the downstream effects to all the third party 
apps that follow Django's Python support.

(Incidentally, it occurred to me that more rapid Python releases *might* 
actually mean that being a little more aggressive in dropping old Python 
versions from Django might be less disruptive than it was in the past, 
that's if new Python versions make it out to the distros more quickly. It's 
probably too soon to tell, but someone who follows distro releases might be 
able to give a forecast.)

This chart assumes "support a Python version up to the Django release 
that's a few months before that Python EOL." I didn't proof it super 
carefully but it should give a general idea of what's coming.
- Stars indicate of version of Python that wouldn't be supported under the 
current "Typically, we will support a Python version..." guideline.
- Dates in parentheses indicate Python version support added after a major 
version's initial release.

Django      Released            End of life
2.2 LTS     April 2019          April 2022      3.5, 3.6, 3.7, 3.8, 3.9
3.0         December 2019       April 2021      3.6, 3.7, 3.8, 3.9
3.1         August 2020         December 2021   3.6, 3.7, 3.8, 3.9
3.2 LTS     April 2021          April 2024      3.6, 3.7, 3.8, 3.9, 3.10 
(Oct 2021), 3.11 (Oct 2022)
4.0         December 2021       April 2023      3.7*, 3.8, 3.9, 3.10, 3.11 
(Oct 2022)
4.1         August 2022         December 2023   3.7*, 3.8, 3.9, 3.10, 3.11 
(Oct 2022)
4.2 LTS     April 2023          April 2026      3.8, 3.9, 3.10, 3.11, 3.12 
(Oct 2023), 3.13 (Oct 2024)
5.0         December 2023       April 2025      3.8*, 3.9*, 3.10, 3.11, 
3.12, 3.13 (Oct 2024)
5.1         August 2024         December 2025   3.9*, 3.10, 3.11, 3.12, 
3.13 (Oct 2024)
5.2 LTS     April 2025          April 2028      3.10, 3.11, 3.12, 3.13, 
3.14 (Oct 2025), 3.15 (Oct 2026)

Python  Released           End of life
3.5     September 2015     September 2020
3.6     December 2016      December 2021
3.7     June 2018          June 2023
3.8     October 2019       October 2024
3.9     October 2020       October 2025
3.10    October 2021       October 2026
3.11    October 2022       October 2027
3.12    October 2023       October 2028
3.13    October 2024       October 2029
3.14    October 2025       October 2030

References
Status of Python branches: 
https://devguide.python.org/#status-of-python-branches
Annual release cycle for Python: https://www.python.org/dev/peps/pep-0602/

On Saturday, November 21, 2020 at 12:52:08 AM UTC-5 carlton...@gmail.com 
wrote:

> Note that this is discussing support in Django 4.0 (which is the main 
> development branch after stable/3.2.x is created). 
>
> 4.0 will be released December 2021. Python 3.6 is EOL that very month
>
> > 3.6 2021-12-23
>
> The next version of Django (3.2) will support Python 3.6
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers  (Contributions to Django itself)" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-developers+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-developers/e1e965a3-9dfd-4c9a-bb36-eca8d970abe8n%40googlegroups.com.

Reply via email to