The Wayback Machine - https://web.archive.org/web/20201212143332/https://github.com/web-platform-tests/rfcs/issues/62
Skip to content
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

Dropping Python 2 Support #62

Open
gsnedders opened this issue Sep 24, 2020 · 4 comments
Open

Dropping Python 2 Support #62

gsnedders opened this issue Sep 24, 2020 · 4 comments

Comments

@gsnedders
Copy link
Contributor

@gsnedders gsnedders commented Sep 24, 2020

Mostly filing an issue here to at least have somewhere to write down the current Python 3 plan.

The status quo is most of our infrastructure now works on Python 3, and work is ongoing to fix the rest.

Most of us working on the infrastructure would like to minimise the amount of time we're supporting both Python 2 and Python 3, and we should probably have a discussion about both timeline for dropping Python 2 and what the minimum version of Python 3 we want to support is.

My suggestion (made privately earlier this week) was that we target 1 Jan 2021 for Python 3 only. In the immediate short term, we expect to keep the codebase in a state where Python 2 support could be trivially reintroduced, likely by simply making Python 2 supported on a "PRs welcome" basis but with no ongoing testing. In the relatively near future, maybe as soon as a month later (i.e., 1 Feb 2021), we will then start accepting PRs that will break Python 2 support significantly (e.g. replacing the comment based type annotation syntax with the Python 3 annotation syntax).

As for minimum version of Python 3, I have been assuming that we will be wanting to support Python 3.6 (as this is packaged in Ubuntu 18.04 LTS) but not Python 3.5 (note that this is dropping Debian Stretch—currently oldstable—released in 2017 and with LTS till 2022). Python 3.6 was a relatively significant release, with f-strings, stabilization of asyncio, variable annotations and more.

@stephenmcgruer
Copy link
Contributor

@stephenmcgruer stephenmcgruer commented Sep 24, 2020

Thanks for filing this Sam. My intention was that @ziransun and I will work on filing an RFC in the next few weeks for this, as we are close to having every (known) Py3 problem either fixed or at least explained.

As for minimum version of Python 3, I have been assuming that we will be wanting to support Python 3.6 ...

Agreed; I have always thought of our initial support as being 3.6 and 3.8+. We would likely continue to run unittests/etc on both versions for the foreseeable future, but the WPT test suite itself would run on 3.8 in WPT CI.

Re the timeline; switching to Py3-first (i.e. switch the WPT test suite runs over to Py3) in Q4 and then Py3-only in Q1 has been my hope. I didn't expect to get Py3-only as soon as Jan 1st, but I'd be happy to see it happen :).

@jgraham
Copy link
Contributor

@jgraham jgraham commented Sep 24, 2020

I would say that we should aim to have our CI and major vendor CI running in Py3 by 2021-01-01 but should continue to support Py2 in our CI for some time after that in case we find a reason to roll back. At a minimum I'd say a 2021-02-01 to actually drop Py2 support and start to accept Py3-only patches.

@jgraham
Copy link
Contributor

@jgraham jgraham commented Sep 24, 2020

Alternatively if people are comfortable with the more aggressive timeline, we could aim for out CI and vendor CI to switch before 2020-12-1. But I still have concerns that there's a lot of code not on the critical path to running tests (e.g. metadata update code) that is untested in Py 3.

@Hexcles
Copy link
Member

@Hexcles Hexcles commented Sep 24, 2020

To consolidate everyone's suggestions so far, what about the following concrete timeline:

  • "Py3-first" targeting 2021-01-01 (which means this will likely happen in Q4 2020): switch test runs to Python 3 on our CI (Taskcluster and Azure), but keep running unit tests and infrastructure tests in Python 2 and 3
  • "Py3-only" on 2021-02-01 (no major work is planned for January 2021; February 1 is just a flag day that may be postponed if we encounter major issues): drop all Python 2 tests from our CI, and start accepting Python 3-only changes

I also agree we should only support Python 3.6+.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
4 participants
You can’t perform that action at this time.