7. Ways to Extend Open edX (Updated, May 2016)


There are at least six ways to extend Open edX:

1. XBlocks

An Xblock is an extensible system written in Python that processes user input, stores course content, displays it, etc. Learn more by reading Chapter 8 as well as at https://github.com/edx/XBlock .

2. LTI components

Open edX supports LTI 1.1, and LTI 2.0 is in development. It is the external standard and applicable to platforms such as Canvas. See the available apps at eduappcenter.com.

The following is an overview of how to integrate LTI (Learning Tools Interoperability) components. Once we have the required authentication parameters such as the consumer key and consumer secret, in addition to the launch URL and possibly context and resource link IDs (depending on the LTI tool), we may do so by logging into “Advanced Settings” under “Settings” on Studio. Enter “[“lti”]” as a Policy Value under the “advanced_modules” Policy Key.

Under “lti_passports”, add the ID, key and secret following this format: [“<id>:<key>:<secret>”]. Additional authentication parameters will depend on your LTI tool provider’s needs. Piazza’s integration provides a great example.

Set its visibility to public and start using it by clicking on “View resource in a new window”.

Learn more about LTI technology here.

3.   JSinput

This extension is good to grade and display new types of problems. Unlike XBlocks, JSinput runs on the browser which means that instructors can take advantage of it without modifying the platform on the server.

Learn more.

4. Hacking on core code

You can change anything, although it is not easy.  As stated in “4. Open Source Initiative”, you must keep Open edX’s AGPL license in mind. However, the XBlock API works under a more permissive license, Apache 2.0.

5. Open edX REST APIs

Open edX includes a suite of APIs that allow you to build applications that interact with the edX platform.

These REST APIs, which use OAuth 2.0 for authentication, are rapidly growing and evolving.

They are described in the edX Platform API documentation.

Currently the Open edX Platform includes the following APIs: course structure, enrollment, mobile, profile images, user and data analytics.

6. Custom grader

Grading does not necessarily have to take place on the main server. This allows the instructors to return and render elaborate dynamically created HTML blocks as answers as opposed to just letters or numbers.

Depending on the extension points used, difficulties and costs will appear.

This page on GitHub summarizes all of the details.

UC Berkeley offers a good example of what adding extensions to edX is like. Their instructors and students use HTML5, JavaScript and Python to add new functionalities to courses. Berkeley’s wiki has more information.

Top 10 Features Released to Open edX in the Last Year

These are Open edX’s Top 10 features released in the last year, according to Beth Porter, Vice President of Product at edX.

  • Teams & Profiles
    Enable learners to discover and participate in small group collaboration with others in a larger course.
  • Notes
    Allow learners to annotate in courses for easy reference and retention.
  • Bookmarks
    Allow learners to easily refer back to content that is interesting and relevant to their learning.
  • Cohorts
    Instructors can create cohorts of similar people to target content and discussions.
  • Android & iPhone apps
    View course video (and soon text and assessments) from native mobile apps.
  • Content Libraries & Randomized Content Blocks
    Display problems out of a library randomly to learners to discourage cheating.
  • Insights Video Analytics
    View per-video learner data to help course teams understand how students are learning.
  • Third-party Auth
    Enable register & sign in with Facebook, Google and/or on-campus systems to reach more learners.
  • LTI tool provider
    Embed edX course content into campus LMSs or other LTI-compatible systems for efficient content reuse and grade transfer.
  • Hinting & Feedback 
    Provide enhanced feedback to learners when attempting assessments.