Skip to content

Five ways to extend edX

Sef Kloninger edited this page Mar 15, 2014 · 11 revisions

(Originally written by Sef (sef@stanford.edu), transcribed by Ned)

Five Ways to Extend edX

I can think of five ways that someone could extend edX. Here they are in order of difficulty:

  1. jsinput -- Create a "Custom JavaScript Grade and Display" component, and then provide JS with getState(), setState(), and getGrade() methods.
  2. LTI -- edX supports LTI 1.1 now, LTI 2.0 in development
  3. custom grader -- Code can be run on an external server to do arbitrary work to grade problems.
  4. XBlock
  5. hack on core code

Here’s my initial attempt at a grid to summarize , but I’m sure there are more rows that we’d want to consider:

  JSInput LTI Grader XBlock Core Mod
Cost Low Low Med Med High
Language JS any any Python Python
Need dev environment no no yes yes yes
Self-host component no yes yes no no
Need edX involvement no no yes yes yes
Clean UI integration yes no [1] yes yes yes
Mobile friendly no maybe yes yes yes
Server Side Grading no yes yes yes yes
Usage Data no [2] no limited yes (?) yes

Notes:

  • [1] Only LTI components delivered via https can be iframed in Many are served over http only. And even then they usually have their own look and feel. For example, Piazza can be iFramed in, but has its own navigation elements and their color scheme (see http://networking.class.stanford.edu/ for an example).
  • [2] JSInput really only exposes the getState, putState, getGrade methods. But is there any reason why we can’t also document / publish the tracking endpoint (/events/user_track I believe)
Clone this wiki locally