Open edX is one of the largest and most popular Massive Open Online Courses (MOOCs) around the world. As an open source Learning Management System, Open edX empowers organizations around the world in building the best online learning tools. Corporations, higher ed institutions, and nonprofits are just some of the industries that leverage the Open edX technology.
One of the things that make Open edX stand out is its technology stack. The platform’s architecture makes it a popular choice among all the major industry players. For those who are considering Open edX for their organization’s eLearning needs, it is important to take a look at the technical details of the platform.
We are presenting a high-level look at the Open edX technology stack in this post to help you understand the nitty gritty of the platform.
Let’s find out what the fuss is all about!
Technology Stack: What’s That?
A technology stack is a collection of technologies that are layered on top of each other to build any application. The kind of technologies involved, both on the back end and the front end, determine what kind of applications can be built from the stack.
The Open edX platform has a handful of major components that communicate with each other via APIs. The platform leverages a collection of Independently Deployed Applications (IDAs) to manage the complexity of the platform’s code base, which helps developers around the world to contribute to the project. The Open edX project is developed in the Python programming language, with Django as the web application framework.
In the diagram below, you can see an overview of the Open edX technology stack. We’ll dive into the major components one by one.
Key Components of the Open edX Technology Stack
Learning Management System (LMS)
Technology is a major part of the Open edX platform, so discussing the technology that the LMS relies upon is important. Data pertaining to the courses is stored in MongoDB, with videos hosted on YouTube, Amazon S3, or some other cloud storage. Each learner’s data is stored in MySQL.
As learners progress through the course or take more courses, data is published to the analytics pipeline, which is subsequently analyzed and reported.
- Front End:
Within the LMS, and elsewhere, the Django server-side code uses Mako for front-end template generation. As for the browser-side code, the script is mostly JavaScript, intermixed with some CoffeeScript. EdX is working on replacing the latter with JavaScript.
On the client side, the code relies on the Backbone.js framework, with more and more of the code base moving in this direction. Finally, for the CSS code, Open edX uses Sass and Bourbon framework.
- Courses:
Courses in Open edX are made up of a series of units called XBlocks. XBlocks can be anything from widgets to plugins or any other enhancements that add functionality to the platform. Anyone can extend these components to add more functionalities to their courses by writing new XBlocks. A comprehensive list of Open edX XBlocks can be found here.
On top of XBlocks, other ways to add functionality to courses include LTI tools, JS Input, and OLX. Learning Tool Interoperability, or LTI, is a standard that allows communication of the Open edX platform with external software, JS Input is used to integrate any JavaScript components in courses, and Open Learning XML (OLX) allows courses to be imported and exported per a consistent standard.
Additionally, embedded Python code can be used to present problems in a course as well as assess learner response. This Python code is executed in a secure environment called CodeJail.
Studio
Apart from the LMS, Open edX also has a course authoring environment called Studio. Studio can be used to create and update courses. Much like the LMS, Studio also uses the same Mongo database.
Discussions
The discussions section is managed by an IDA called comments or forums. As one of the few non-Python Open edX components, this section is written in Ruby using the Sinatra framework. The LMS communicates with the discussions section via an API that integrates discussions into the learner’s course experience.
Analytics
Strong reporting analytics form the cornerstone of a well-equipped Learning Management System. Open edX has a detailed analytics pipeline that captures learner behavior as new events occur. These events are stored in S3 as JSON and processed using Hadoop. The results are then aggregated and published to MYSQL.
In the Insights section, these results are available via REST API. Instructors and administrators can then access the insights data which details learner and course performance. Take a look at the edX analytics pipeline below to get a better picture.
Search
Using Elasticsearch, Open edX allows users to search in a variety of contexts, for example, course search or search within the discussions section.
Want to build a groundbreaking eLearning platform?
Get in touch with us and learn how we can help you achieve your goals and objectives.
Background Processes
Some of the larger background tasks are performed by separate background workers instead of web applications. These tasks include sending bulk emails, grading courses, producing certificates at the end of a course, as well as generating answer distribution reports.
An IDA called XQueue can also run a custom grader. Additionally, some of the more compute-intensive learner assessments are also run by a separate background process.
More about Open edX
From its LMS to the Studio, to the mobile app, Open edX ensures that its users have the latest technology to work with. With bi-annual product releases, new features keep rolling out and the old ones get better. If you want an in-depth look at how Open edX may help your organization, check out this all-inclusive guide! Or better yet, get in touch with us today to discuss how Edly can help you build an Open edX-powered online learning platform.
{
“@context”: “https://schema.org”,
“@type”: “FAQPage”,
“mainEntity”: {
“@type”: “Question”,
“name”: “Technology Stack: Whats that?”,
“acceptedAnswer”: {
“@type”: “Answer”,
“text”: “A technology stack is a collection of technologies that are layered on top of each other to build any application. The kind of technologies involved, both on the back end and the front end, determine what kind of applications can be built from the stack.”
}
}
}