This upgrade is essentially complete! Many thanks to the Arbi-BOM team from Arbisoft, the team from eduNEXT that helped via a blended development project, and everyone else who helped make this happen.
All our non-deprecated services are now running Python 3.8 in production.
Python 3.5 support (and testing) has already been dropped in most of our repositories, and is currently being dropped from the rest.
Automated refactoring tools are being used to clean up old imports and code patterns that were only present to support old Python versions.
There are a handful of specialized Jenkins jobs that are still running Python 3.5, but those will also be updated to use 3.8 shortly.
What does this mean for most Open edX developers?
In most cases, you no longer need to worry about Python 3.5 compatibility in our code (as long as you’re using Koa or master). Feel free to use newer language features like f-strings, asyncio, dataclasses, importlib.resources, breakpoint(), the walrus operator, etc. An upcoming session of the Python Study Group will give an overview of many of these new features, but you can also read about them at https://docs.python.org/3.8/whatsnew/index.html .
While we may start testing with Python 3.9 in some places, we probably won't upgrade again until a newer yet-to-be-released Python version. The latest Ubuntu LTS release uses 3.8, 3.9 doesn't have many compelling new features, and 3.8 is supported until October 2024.
You might start hearing about work on the Django 3.2 upgrade. We’re well ahead of the curve on this one, since it hasn’t even been released yet (we’re mainly testing 3.0 and 3.1 compatibility so far).