Welcome to edX's open source initiative – Open edX – where developers around the globe are working to create a next-generation online learning platform to bring quality education to students around the world.
EdX is a not-for-profit enterprise composed of 29 leading global institutions, the xConsortium. Since our founding in May 2012, edX has been committed to an open source vision. We believe in pursuing non-profit, open-source opportunities for expanding education both online and on-campus.
Open edX is already receiving code contributions from around the world. We would like to recognize Stanford University, Google, MIT, The University of Queensland, Tsinghua University, UC Berkeley, and Harvard University for their significant contributions, staff support, and overall passion for the Open edX initiative. Together, we are accelerating the future of learning.
Open edX is implemented mostly in Python (with some Ruby and NodeJS as well) and the code is being made available under an AGPL license.
The main repository is edx-platform which includes both the LMS and the authoring tool, Studio. We have a number of other repositories outlined below, some of which may be useful even outside of the main platform.
If you are interested in writing components for our next-generation component architecture, take a look at XBlock. If you are interested in our machine-learning-based grading see EASE and discern. If you are interested in analytics, start with insights. For our deployment and configuration tools, see configuration.
We are particularly interested in people working on new XBlocks and new Checkers as well as people who can assist with internationalization and localization.
Some projects have their own mailing list but there is also edx-code, for discussion about the Open edX code in general. Regardless of your particular interests, you should consider joining that mailing list.
We also hang out in the #edx-code IRC channel on Freenode.
edx-platform is the main repository covering both the LMS and the authoring tool, Studio.
It also includes XModules (the courseware components that are being upgraded to the new XBlock architecture in the coming months) and various checkers.
Configuration provides a simple, but flexible, way for anyone to stand up an instance of the Open edX platform that is fully configured and ready-to-go.
The reference platform is provisioned using an Amazon CloudFormation template. When the stack has been fully created you will have a new AWS Virtual Private Cloud with hosts for the core edX services. This template will build quite a number of AWS resources that cost money, so please consider this before you start.
The configuration phase is managed by Ansible. We have provided a number of playbooks that will configure each of the edX service.
XBlock is a component architecture for building courseware.
This is a pre-alpha release of the XBlock API, to gather input from potential users of the API. We like what is here, but are open to suggestions for changes. We will be implementing this shortly in the edX LMS.
This repo contains the core code for implementing XBlocks as well as a simple workbench application for running XBlocks in a small simple environment.
The Open Response Assessor will take a submission from an XQueue installation, pass it through machine learning grading, peer grading, and staff grading as appropriate, and return a result to LMS. This is to be used with the edx-platform and XQueue. It allows for the assessment of open response problems on the edX platform.
Discern allows anyone to use machine-learning-based automated textual classification as an API service.
This is an API wrapper for a service to grade arbitrary free text responses. The goal is to provide a high-performance, scalable solution that can effectively help students learn. Feedback is a major part of this process, the feedback system has been left very flexible on purpose.
Note that you will need the EASE repository to use all of the functionality here.
EASE (Enhanced AI Scoring Engine) is a library that allows for machine learning based classification of textual content. This is useful for tasks such as scoring student essays.
It provides functions that can score arbitrary free text and numeric predictors. The goal here is to provide a high-performance, scalable solution that can predict targets from arbitrary values.
Note that this is a library. You will need to implement your own code to make it runnable. The discern repo is an API wrapper for this code.
insights is a development version of a Python+Mongo+Django framework for creating simple, pluggable analytics based on streaming events. It will eventually replace the ad-hoc analytics used in the edX platform currently.
CS Comments Service is an independent comment system which supports voting and nested comments. It also supports features including instructor endorsement for education-aimed discussion platforms.
CodeJail manages execution of untrusted code in secure sandboxes. It is designed primarily for Python execution, but can be used for other languages as well.
Security is enforced with AppArmor. If your operating system doesn't support AppArmor, then CodeJail won't protect the execution.
XQueue defines an interface for the LMS to communicate with external checker services. For example, when a student submits a problem in the LMS, it gets sent to the XQueue. The XQueue then has the problem graded by an external service and sends the response back to the LMS.
XServer accepts student code submissions from the LMS and runs the code using courseware checkers. This repo does not include the checker code.
notifier sends daily digests of new content to subscribed forums users, with a goal of eventually supporting real-time and batched notifications of various types of content across various channels (e.g. SMS).
We welcome any questions or feedback about this site on the edx-code mailing list.
Security issues should be reported privately to firstname.lastname@example.org.
If you have questions about edX in general, beyond our open source code, please write to email@example.com.