Open edX: Why we’re relicensing XBlock API under Apache

We have seen extensive adoption around the world: Open edX sites have been created by universities, national consortiums, nonprofits, and professional education firms. We’ve had contributions of significant features from members and outside organizations, such as improved hinting from Stanford, single-sign-on from Google, and annotations from Harvard. And, we have a growing ecosystem of third-party service providers, such as OpenCraft, Extension Engine, Jazkarta, and EdCast, Inc.

The evolution of Open edX

Our code was originally open-sourced under the AGPL license. This license is widely used by organizations committed to the ideal of open source. It ensures that changes made by others will also be open, encouraging continued sharing. This way contributors cannot extend our core platform in interesting ways and then keep it to themselves. We’re making our software available free, so we want others to build on top of it and share their essential changes back to the worldwide community.

However, with a large system like Open edX, one license doesn’t fit all purposes, which is why we’ve decided to relicense one part, our XBlock API, under Apache 2.0.

The importance of XBlock API

A key API in Open edX is XBlock, used to build the interactive components so important to our courses. We want lots of people to create new XBlocks — domain experts, educators, tool vendors, anyone with an idea for a clever component, should be able to write an XBlock. The XBlock API lets them do that, and we’ve already seen dozens of new XBlocks created by the community.

Beyond Open edX, we want the XBlock API to be a standard available across a number of learning systems. But the AGPL license was worrisome to some who were considering the XBlock API. Some had closed-source tools they wanted to integrate as an XBlock. Others wanted to support XBlocks in their own system, but were already using a license incompatible with the AGPL.

Move to Apache 2.0 and why

The XBlock API will only succeed to the extent that it is widely adopted, and we are committed to encouraging broad adoption by anyone interested in using it. For that reason, we’re changing the license on the XBlock API from AGPL to Apache 2.0.

The Apache license is permissive: it lets adopters and extenders do what they want with their changes. They can release them under a copyleft license like AGPL, or a permissive license like Apache, or even keep them closed-source.

Of course the ideal is that all XBlocks will be open source. EdX firmly believes in the value of sharing work, and in building on what others have done. We’ve received great benefit from the open source projects that we build on, and we are thrilled to be able to provide open source to others. We want XBlocks to be open source also, and we’ll continue to encourage people to open-source their work. Switching to the Apache license means that we won’t insist on it, and will let more people use the XBlock API, increasing its value as a standard.

To take one example, the Universitat Politècnica de València built an XBlock to view Mathematica CDF files in Open edX courses. This is a powerful combination of tools, but Mathematica is not open-source. With an Apache license on the XBlock API, this team didn’t have to worry that they were combining components incompatibly. The Apache license removes doubts and lets educators focus on building great tools.

We believe that this mixed licensing strategy is the best way to achieve all of our goals: create an ecosystem of shared work and open systems, and also get the broadest possible adoption of our APIs and tools. The core platform, and the bulk of our work, will remain under AGPL. APIs and other tools that we want to spread as widely as possible will be under Apache.

We look forward to continuing the great work with our open-source community. Please reach out to us at if you are interested in contributing to Open edX. I look forward to continuing the open-source conversation.

Guest Post: Ned Batchelder, edX Software Architect