1 of 20

Extending Open edX

Ned Batchelder

2 of 20

Goals

  • Quick overview of interfaces
  • Quick overview of process

3 of 20

A course

  • Built of XBlocks
  • Like <div>’s in HTML

4 of 20

XBlock runtime

  • Container for XBlocks
  • Provides service abstractions (+ data)

Runtime

Services

Data

5 of 20

LMS

  • XBlock runtime
  • Provides:
    • User registration
    • Progress tracking
    • Grading
    • Forums
  • Data storage
    • Course in Mongo
    • Student data in MySQL
    • Abstracted away by XBlocks

6 of 20

LMS: much more stuff...

Runtime

Services

Data

Grading Queue

ORA

Forums

Progress

Registration

Profiles

Analytics

Instructor Dash

Reporting

Translation

Commerce

Wiki

Certificates

Theming

Cohorting

7 of 20

Studio Internals

  • Courses are still XBlocks!
  • Mongo database shared with LMS

8 of 20

Changing things

how can I implement my idea?

9 of 20

Extension Points

https://github.com/edx/edx-platform/wiki/

Five-ways-to-extend-edX

  • XBlock
  • LTI
  • JSinput
  • OLX
  • Core code

10 of 20

XBlock

  • Most likely choice
  • Create new courseware components
  • Designed for third-party devs
  • http://xblock.readthedocs.org

11 of 20

What is an XBlock?

  • A Python package
    • runs on the server
  • A class providing:
    • Data fields
    • Views for presentation
      • produces HTML + CSS
    • Handlers for user input
  • A web app, one div at a time
    • Uses existing assets and skills

12 of 20

LTI

  • External standard
  • Loosely coupled integration

13 of 20

JSInput

14 of 20

OLX

  • XML representation of courses
  • Import/Export courseware
  • Manipulate outside of Open edX

15 of 20

Hacking core code

  • Can change anything!
  • Not easy
  • Very few docs

16 of 20

Contribution

how can I get my idea to others?

17 of 20

XBlocks

  • Don’t need to be contributed to edX
  • Designed to be installed separately

18 of 20

Contributing to core

  • Talk to us
  • Make a pull request
  • Work with reviewers
  • Merge!

19 of 20

Getting help

  • Docs
  • IRC channel #edx-code on Freenode
  • Mailing list: edx-code on Google Groups:
  • Please ask!

20 of 20

Questions?