This is an old topic 2014-07-12 maybe this is not their stack now.

These are some concepts and techniques I have learned through OpenEdx.

Mysql: store users, students, courses, certificates and courseware progress. text saved as UTF-8, and time is saved ad UTC. It uses InnoDb engine In development environment, It uses sqlite instead of mysql to keep dependencies as low as possible.

Mongodb: store courseware contents, discussion data, comments

Event Tracker: logs the events as JSON and saved them in log files. Event example: student events.

Django and some dependencies:

  • Diango 1.4.12, which is a LTS version ends in March 2015 and runs python 2.5 , 2.6 and 2.7.! - Gunicorn: a WSGI server.
  • memcache: cache contents
  • celery: message queue.
  • solr-thumbnails: thumbnails images inside template.
  • mptt: tree structure
  • storage and boto: to enable store media files in Amazon S3
  • Social-auth: to enable register with social sites.
  • South: schema migration.
  • nose and selenium: for testing
  • sphinx: for documentation
  • numpy and sympy: for mathematics.
  • newrelic: for monitors


  • Production: There is a pre configuration for AWS in Ansible. It uses EC2, memcache, load balancer, RDS and VPC. fullstack: LMS, Studio, Xqueue, discussion forums, Demo course, ORA, Discern, Ease.
  • Development: configured for VirtualBox, Vagrant. devstack: LMS, Studio, discussion forums and ORA.

OpenEdx components:

  • XBlock: is a component architecture, to build small block to large one. It can be extended and customised.

    • LMS: student facing website
    • Studio: course authoring
  • XQueue: grading service

  • ORA: collect grades from queue , machine learning grading and staff grading.

  • CS Comments Service: is an independent comment system which supports voting and nested comments.

  • CodeJail manages execution of untrusted code in secure sandboxes.

  • notifier: send messages by Email or SMS to subscriber.

Discussion forum: uses Elasticsearch, Forum and ruby