OpenEdx Concepts and Techniques
Jul 12, 2014, updated Apr 27, 2018
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.
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