Python, Django, and Juniper

Back in January we wrote about the need to port the Open edX code from Python 2 to Python 3. We’re pleased to report that, thanks to help from the community, we’re making good progress. The Python test suite for our main repository now runs under both Python 2 and Python 3.

Now there’s another porting effort ahead of us. The Open edX web applications are built on the Django web framework. We currently use version 1.11 of Django, but that version is coming to its end of life soon. We need to move to Django 2.2 to continue to get Django’s maintenance support. It will be another large chunk of work.

Once we are fully on Python 3 and Django 2.2, we can start the next Open edX release, called Juniper. Although Juniper will be out a bit later than we had originally hoped, it will be built on a foundation with strong support into the future.

As with the Python 3 upgrade, we welcome help from the community to move to Django 2.2. We’re looking for many kinds of help. If you would like to get involved, please fill out this Google form.

The sooner we get the code onto Django 2.2, the sooner everyone can have Juniper. Thanks!

(btw, copied from


Following the community meeting this afternoon (Thursday, Nov 14), we discussed it internally here at EDUlib. We will follow edX’s lead whatever you decide with regards to what will be included in Juniper (Python 3 only) or moved to Koa (Django 2.2).

We do have a slight preference for Python 3 as soon as possible because we do have a potential issue with ecommerce and the modifications we needed to make to our fork in the past regarding the use of the Paysafe payment processor and their SDK. We may need to adapt it again to use Python 3 or a more recent version of their SDK.

Just our 2 cents.

1 Like

@sambapete thanks for the followup. For Python 3, our current plan is to do a “Juniper alpha” once things are running smoothly on Python 3. This would give people a point to test against, but we wouldn’t be freezing Juniper development at that point. Would that work for you?

No problem as long as “ecommerce” is included in the “Juniper alpha” release and it’s migration to Python 3 is completed.

If not, we will have to test “Juniper alpha” and check if our edx-platform and ecommerce forks can still communicate with each other even if one talks Python 3 and the other still talks an old dialect like Python 2 :wink:

As our ecommerce fork is installed as a separate component during our installation process, this could still be viable. Our preference would still be to have all standard components run under Python 3. And I do not even want to start talking about Insights…

First of all, making this big step is a very great news!

Our thought at OpenCraft is that a “Juniper alpha” release just for Python 3 would be a nice idea, it will allow us to test it and report any problems or ways to improve things as soon as possible with a tagged release.

Next Django 2.2 step looks exciting too, and will allow edX to evolve in many ways.

Latest update: we pushed the Python 3 code to edX staging two weeks ago, and found some issues which have now been resolved. The next attempt will be this week. If all goes well, we will be running on Python 3 very soon.

Once it seems like it will hold, we’ll make a “Juniper Python 3 alpha” tag for people to test.


Great News :+1: , eagerly waiting to test Juniper Alpha.

A post was split to a new topic: Help converting advanced problem to Python 3