Django 4.2 Upgrade Plan

 

All of the Django-using Open edX IDAs are now on Django 3.2, which will reach end of life and stop receiving security updates in April 2024. edX wants to upgrade Django to version 4.2, the next LTS (long term support) release. We want this project complete by September 30, 2023, in time for the next Open edX release, Quince. Key contacts are @Jeremy Bowman (Deactivated) and @Usama Sadiq .

After reviewing the project upgrade run book, the following major steps were identified in internal team discussions.

  • Identify Key changes in the Django 4.0, Django 4.1 and Django 4.2 release notes.

  • Write modernizers & codemods for the potential changes/refactorings.

  • Update tox and github actions modernizers, so they can be used to add support for Django 4.2 in all first-party packages

    • These modernizers will be triggered from Bulk Repo Update Job, to create PRs in multiple repos at once through the graphical user interface.

  • Create issues in the upgrades repo for adding Django 4.2 support in all third-party packages

    • Share these upgrade issues with the Open edX community.

  • Create ownership issues for all IDAs to communicate the upgrade process ownership with the owning teams.

    • Use Maintenance Board to capture all the details.

    • Create a separate dashboard for Django 4.2 upgrade on Maintenance Board.

  • Create issues in all edx/openedx repos to add support for Django 4.2

    • Arbi-BOM will be working on all these issues

  • An automated Job will track the support for Django 4.2 in all packages

 

Checklist for the sub-issues in each repo:

Update tox & Github action workflow using modernisers to add support for Django 4.2
Remove any versions of Python earlier than 3.8 from tox.ini, .travis.yml, and GitHub Actions workflows.
Update the trove classifiers in setup.py, setup.cfg or pyproject.toml files.
Run and verify all tests are passing in the CI for Django 4.2
Run available code-mods to fix the failing tests
Add entry in CHANGELOG Support added for Django 4.2
Bump the package version and release a new version on GitHub & PyPI (whichever is applicable)