Dear Sphinx developers,
I see that Sphinx 4.0 dropped support for Python 3.5 because it became EOL on 2020-09-13 (see https://github.com/sphinx-doc/sphinx/pull/7264#issuecomment-596078494
). Now that CPython releases a new version every 12 months, instead of the previous 18 months cadence (PEP 602), I wonder if Sphinx should adopt a more strict policy for Python version support.
An example of that is NumPy, which specifies a time window of 42 months in NEP 29. They considered supporting all CPython supported versions, but discarded that option:
The CPython supported versions of Python are listed in the Python Developers Guide and the Python PEPs. Supporting these is a very clear and conservative approach. However, it means that there exists a four year lag between when a new features is introduced into the language and when a project is able to use it.
Another example is Django, which states:
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.3 security support ended September 2017 and Django 1.8 LTS security support ended April 2018. Therefore Django 1.8 is the last version to support Python 3.3.
However, this one is more difficult to translate to Sphinx, since there is no such thing as an LTS release.
- The release cadence of CPython has accelerated,
- Sphinx has fewer developer resources than bigger projects like NumPy or Django,
- Dropping old Python versions may help the maintainability of Sphinx, by leveraging new features of the language and reducing the test matrix,
- In principle, there is no reason for users to build their documentation with their _oldest_ supported CPython version, rather than any other _newer_ version,
Would it be reasonable to have a narrower Python version support window in Sphinx?
My understanding is that Sphinx 4.x will keep support for Python 3.6+ (please correct me if I'm wrong), which EOLs on 2021-12 (six months from now). This would mean announcing the new policy for Sphinx 5.x (which would, I assume, support Python 3.7+, EOL 2023-06) and start applying it for Sphinx 5.1+ or Sphinx 6+ onwards.
Looking forward to hearing your thoughts.