Introduction to XBlocks#

This section introduces XBlocks.

Overview#

As a developer, you build XBlocks that course teams use to create independent course components that work seamlessly with other components in an online course.

For example, you can build XBlocks to represent individual problems or pieces of text or HTML content. Furthermore, like Legos, XBlocks are composable; you can build XBlocks to represent larger structures such as lessons, sections, and entire courses.

A primary advantage to XBlocks is that they are sharable. The code you write can be deployed in any instance of the Open edX Platform or other XBlock runtime application, then used by any course team using that system.

In educational applications, XBlocks can be used to represent individual problems, web-formatted text and videos, interactive simulations and labs, or collaborative learning experiences. Furthermore, XBlocks are composable, allowing an XBlock developer to control the display of other XBlocks to compose lessons, sections, and entire courses.

XBlock Independence and Interoperability#

You must design your XBlock to meet two goals.

  • The XBlock must be independent of other XBlocks. Course teams must be able to use the XBlock without depending on other XBlocks.

  • The XBlock must work together with other XBlocks. Course teams must be able to combine different XBlocks in flexible ways.

XBlocks Compared to Web Applications#

XBlocks are like miniature web applications: they maintain state in a storage layer, render themselves through views, and process user actions through handlers.

XBlocks differ from web applications in that they render only a small piece of a complete web page.

Like HTML <div> tags, XBlocks can represent components as small as a paragraph of text, a video, or a multiple choice input field, or as large as a section, a chapter, or an entire course.

XBlock API and Runtimes#

Any web application can be an XBlock runtime by implementing the XBlock API. Note that the XBlock API is not a RESTful API. XBlock runtimes can compose web pages out of XBlocks that were developed by programmers who do not need to know anything about the other components that a web page might be using or displaying.

XBlocks and the Open edX Platform#

The Open edX Platform is an XBlock runtime and the Open edX community currently provides most of the support for the development of the XBlock library and specification. Programmers who use Tutor or the edx-platform devstack instead of the xblock-sdk to develop an XBlock should make sure that their XBlock is fully compliant with the XBlock specification before deploying to other XBlock runtimes. More specifically, XBlocks should package any services provided by edx-platform that a different XBlock compliant runtime might not provide.

The Open edX Platform currently has a large suite of XBlocks built into its primary repository that are available to course developers. Those XBlocks include HTML content, videos, and interactive problems. The Open edX Platform also includes many specialized XBlocks such as the Google Drive file tool and Open Response Assessments. For more information, see XBlocks and the edX Platform.

XBlocks for Developers#

Developers can select from functionality developed by the Open edX community by installing an XBlock on their Open edX instance. Developers can integrate new or propriety functionality for use in XBlock runtimes by developing a new XBlock using the supported XBlock API.

XBlocks are like miniature web applications: they maintain state in a storage layer, render themselves through views, and process user actions through handlers. XBlocks differ from web applications in that they render only a small piece of a complete web page. Like HTML <div> tags, XBlocks can represent components as small as a paragraph of text, a video, or a multiple choice input field, or as large as a section, a chapter, or an entire course.

Prerequisites#

This tutorial is for developers who are new to XBlock. To use this tutorial, you should have basic knowledge of the following technologies.

XBlock Resources#

This tutorial is meant to guide developers through the process of creating an XBlock, and to explain the concepts and anatomy of XBlocks.

The XBlock SDK supports the creation of new XBlocks. Developers should also see the Open edX XBlock API Guide.

XBlock Independence and Interoperability#

You must design your XBlock to meet two criteria.

  • The XBlock must be independent of other XBlocks. Course teams must be able to use the XBlock without using other XBlocks.

  • The XBlock must work together with other XBlocks. Course teams must be able to combine different XBlocks in flexible ways.