One of the things we take pride in at edX is our commitment to open source. An important decision in open-sourcing code is the choice of a license. For the most part, we’ve used the AGPL license. To better meet our open-source goals, however, we’re changing a few of our licenses.
Our more than 30 public repos on GitHub fall into three broad categories:
- Core components of the Open edX platform.
- Libraries used by others to access the platform through our APIs.
- Tools that are not particular to the Open edX platform.
Each of these categories has its own licensing considerations.
For core components of the platform, we’ll continue to use the AGPL. This license ensures that all changes to the platform are shared, guaranteeing that the platform is truly an open resource and that everyone will benefit from the improvements.
The propagating nature of the AGPL makes it difficult for some people to adopt. For repos where broad use is more important than shared improvements, we’re using the Apache license. This includes our API libraries and broad-interest tools, the second and third categories above.
Our first change to Apache was in the XBlock API repo in September. Our catalog of API libraries is growing, and they will all be licensed with Apache to encourage use of the APIs.
The third category is broad-interest tools that have nothing in particular to do with edX, and do not run as part of the platform. They could be of interest to any Python developer. An example is diff-cover, a tool we created that allows us to assess the test coverage of contributions. Tools like this will be Apache-licensed to enable their broader use and adoption.
To recap our license strategy:
- Code that is essential to the edX platform will be AGPL.
- Code that is used by others to access our APIs will be Apache.
- Code that is broad interest and unrelated to the platform will be Apache.
Since we first open-sourced our code in 2013, its scope and adoption has grown. We’re continuing to reform our approach to best meet the needs of the community. As always, we’d love to hear your thoughts.