Python 3.8 Upgrade

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).

edX Services

Service Name

Owner

Python Version in Prod

Current Blocker

Key Contact

Service Name

Owner

Python Version in Prod

Current Blocker

Key Contact

edx-platform

arch-bom

3.8

 

@Awais Qureshi - coordination

@Muhammad Arif (Deactivated) - development

SRE for review

edx-platform:

edx-sandbox environment (ie codejail)

platform-tnl

3.8

 

@Usama Sadiq

ecommerce

engagement-revenue

3.8



 

ecommerce-worker

engagement-revenue

3.8

 

 

discovery

engagement-always-available

3.8



 

credentials

programs-masters

3.8



 

registrar

programs-masters

3.8

 

@Muhammad Arif (Deactivated) - development.

Anyone - review.

@Simon Chen - help test on stage

xqueue

platform-tnl

3.8

 

@Marco Morales (Deactivated)

enterprise-catalog

enterprise-titans

3.8

 

@Brandon Baker (Deactivated) - review

@Muhammad Arif (Deactivated) - development.

portal-designer

programs-masters

3.8

 

 

notes

SRE

3.8

 

@Muhammad Arif (Deactivated) - development.

SRE @Fred Smith (Deactivated) , @Adam Blackwell (Deactivated) - review and deployment

insights

platform-data-de

3.8

 

@Brian Beggs

analytics-api

platform-data-de

3.8

 

@Brian Beggs

openedxstats

platform-openedx

3.8

 

 

license-manager

enterprise-titans

3.8

 

@Brandon Baker (Deactivated) - review

@Muhammad Arif (Deactivated) - development

demographics

programs-microbachelors

3.8

 

@Matt Tuchfarber (Deactivated) - review

@Muhammad Arif (Deactivated) - development

blockstore

platform-tnl

3.8

 

@Kyle McCormick

xqueue-watcher

platform-tnl

3.8

 

@Usama Sadiq

Jira Epics

https://openedx.atlassian.net/browse/ARCHBOM-1522

https://openedx.atlassian.net/browse/BOM-1521

Explanation

  • Current Blocker - Which ticket (if any) is currently most urgent to resolve in order to make further progress on upgrading this service to Python 3.8?