MITx / edX Tools

Accelerating open source course development with edX

Quick Start to working with the edX Platform

Get started with the edX platform, using the MITxVM distribution.

Five steps to get up and running on your own computer (within ~10 minutes), using Vagrant and Virtual Box:

  1. Setup Vagrant and Virtual Box.

    Handy directions

  2. Download example edX course content

    and setup directory structure for files:

    1. mkdir mitx-vagrant
    2. cd mitx-vagrant
    3. mkdir data
    4. Download edx4edx_lite into data directory (also try OCW-edX)
  3. Start the VM. In the mitx-vagrant directory:
    1. download mitxvm-edx-platform-02sep13a.box (large file: 3.8 GB)
      md5sum: 7d3671a92f8ba4f8e6b54db91a90bc91
    2. vagrant init mitxvm mitxvm-edx-platform-02sep13a.box      # note all the arguments
    3. vagrant up
  4. View your site! After the VM boots, browse to:
  5. Develop your course.

    There are two main workflows you can use to develop courseware:

    • LMS (+github) -- edit XML files of courses in the data directory, then click on "Reload course from XML files" in the Instructor Dashboard (under the Admin tab). The course files may be stored in github, and a webhook configured to make the LMS automatically update upon checkins ("gitreload"). See edX documentation of XML formats.
    • Studio -- Create course using the web-based interface, and view on the Preview ("draft") and Edge ("live") sites. Beware that the Studio system is really meant for single-author work; it loses all history, and there is no visibility for what changes are being made by authors. But Studio is wysiwyg and gives fast feedback, so it can be a good way to start.

    You may login to the system using a pre-created user: (email "xadmin@mitxvm.local", password "xadmin"); if you create your own user, to active the user use the "xmanage" command (see below).

The MITxVM distribution of the edX platform

Management tools

The MITx virtual machine Vagrant box comes with a simple management tool, xmanage. To see what you can do with it, run:

vagrant ssh -- xmanage help
from within the mitx-vagrant directory. Running this command will also tell you what initial users you can login to your edX instances with.

Under the hood

The MITxVM box is built on a base Ubuntu 12.04LTS distribution. The edX platform runs using django/python, and is served via gunicorn and nginx. Virtual Box is used to provide a host-only network, 192.168.42.*. The four edX services listen on eth0 on four separate IP addresses. The system uses mysql for the main database, and mongo for Studio.

Installed repos include edx-platform, xqueue, xserver, latex2edx, edx-ora, ease.

Create edX courses using LaTeX

The latex2edx system allows entire edX courses, or alternatively individual problems, to be authored entirely using latex, a document preparation system highly suitable for mathematical content, and widely used in science and engineering.

A full installation of latex2edx is included in the MITx vagrant box.

Also see:

How you can contribute

  • Automated management -- some good automated management / provisioning tools (eg chef) would be helpful.
  • Code autograder -- edX has not (yet) released the python code autograder that is needed to make functional python code grading couse. A fully open-source alternative could be written.
  • Autograders for other languages -- How about C, or perl, or javascript, or even clu, or id? Mathworks has an autograder for matlab on edX in the works (see, eg 2.01x on edX).
  • Course conversion filters -- write scripts to convert course content, eg from moodle to edX (eg see moodle2edx), and from LON-CAPA to edX (eg see loncapa2edx).
  • Example courses -- contribute open-source edX course content, as examples for other course authors to follow, eg see edx4edx_lite.

Frequently asked questions

  1. Can I delete mitxvm mitxvm-edx-platform-08jun13b.box?

    Yes - after doing "vagrant up"; vagrant copies the box file to its own library (something like ~/.vagrant)

  2. How do I give myself staff privileges?

    Use the xmanage command, eg vagrant ssh -- xmanage setstaff meuser

  3. Where are the Studio files stored? How do I delete a project?

    Studio content is stored in a mongo database; the directory wich is created for the course in data/* is a stub, that really does very little. To delete a course in Studio, vagrant ssh, cd edx_all, source STARTUP, cd edx-platform, run

      ./DJANGO-ADMIN-CMS delete_course  commit
    

    course_url is something like MITx/18.05/Statistics_For_everyone

    vagrant destroy will delete the whole VM and its hard drive, and will delete all Studio course content. LMS course content is stored in your local directory under data/*, and will not be deleted by the destroy.

  4. What versions of Virtual Box and Vagrant do I need?

    The MITxVM box is known to work well with VirtualBox 4.2.12 and Vagrant v1.2.2.

edX platform

The edX platform is available as open source code. The platform consists of several large subsystems:

  • LMS -- The main ("learning management system") system which serves course content, incuding e-text, video, and assessment problems.
  • CMS -- A web-based authoring system for course content, otherwise known as the "edX Studio" (aka the "content management system").
  • Xblocks -- Interactive building blocks for e-text, video, assessment problems, etc. for the LMS and CMS.
  • capa -- Core assessment problem engine (and an example of an XBlock), which provides multiple choice, option, string, numerical, formula, image, code, and other kinds of response problems, including custom response (with python scripts). This subsystem is inspired by the perl-based LON-CAPA system.
  • xqueue -- Asynchronous problem grading system, which interfaces with the LMS and capa. This is used for code grading, eg of python and matlab. It is also used for open ended response and machine learning grading.
  • xserver -- Python code grader subsystem, which receives grading requests from xqueue, passes the grading through the grader logic, and returns the results to xqueue. The grader logic is specific to each problem, and thus a substantial part of the python code grading code is held within the course content.

See edx-code google group for more discussion

MITxVM versions