2. Open edX Architecture#

The Open edX project is a web-based platform for creating, delivering, and analyzing online courses. It is the software that powers edx.org and many other online education sites.

This page explains the architecture of the platform at a high level, without getting into too many details.

2.1. Overview#

There are a handful of major components in the Open edX project. Where possible, these communicate using stable, documented APIs.

The centerpiece of the Open edX architecture is edx-platform, which contains the learning management and course authoring applications (LMS and Studio, respectively).

This service is supported by a collection of other autonomous web services called independently deployed applications (IDAs). Over time, we plan to break out more of the existing edx-platform functions into new IDAs and MFEs. This strategy will help manage the complexity of the edx-platform code base to make it as easy as possible for developers to approach and contribute to the project.

A diagram of the components and technologies that make up an edX site.

Almost all of the server-side code in the Open edX project is in Python, with Django as the web application framework.

2.2. Key Components#

2.2.1. Learning Management System (LMS)#

2.2.2. Studio#

Studio is the course authoring environment. Course teams use it to create and update courses. Studio writes its courses to the same Mongo database that the LMS uses.

2.2.3. Discussions#

Course discussions are managed by an IDA called comments (also called forums). comments is one of the few non-Python components, written in Ruby using the Sinatra framework. The LMS uses an API provided by the comments service to integrate discussions into the learners’ course experience.

The comments service includes a notifier process that sends learners notifications about updates in topics of interest.

2.2.4. Mobile Apps#

The Open edX project includes a mobile application, available for iOS and Android, that allows learners to watch course videos and more. Open edX is actively enhancing the mobile app.

2.2.5. Analytics#

2.2.6. Background Work#

A number of tasks are large enough that they are performed by separate background workers, rather than in the web applications themselves. This work is queued and distributed using Celery and Redis. Examples of queued work include:

  • Grading entire courses

  • Sending bulk emails (with Amazon SES)

  • Generating answer distribution reports

  • Producing end-of-course certificates

2.2.8. Other Components#

In addition to the components detailed above, the Open edX project also has services for other capabilities, such as one that manages e-commerce functions like order work flows and coupons.