Commercial Offering using OpenEDX

915 views
Skip to first unread message

Prasad Joshi

unread,
Sep 22, 2014, 11:27:50 AM9/22/14
to edx-...@googlegroups.com
Hello All,

I am planning to build a commercial LMS services. While looking for OpenSource LMS platforms, I came across OpenEDX. I liked the http://edx.org as compared to other OpenSource alternatives. However, it wasn't clear to me whether I should be able to provide commercial services using OpenEDX. It seems to me that OpenEDX intend to implement Free online courses. I would like to know current commercial offerings built on top of OpenEDX. If not, does the license support building such (not free) services.

Thanks and Regards,
Prasad

David Baumgold

unread,
Sep 22, 2014, 12:56:37 PM9/22/14
to edx-...@googlegroups.com
Prasad, the Open edX codebase is licensed under the AGPL license (except for XBlock, which is Apache 2.0). These licenses *do* allow you make money using the software, so you are welcome (and encouraged!) to build a commercial offering using Open edX. However, you still must abide by all of the terms of the license: in particular, if you make any modifications to the codebase for your website, you must release those modifications under the AGPL license as well. If you build any new features, alter existing features, change text, etc, then you must make your changes freely available for other developers to see and use, as well. (The exception is XBlock: under the Apache license, you make create closed-source XBlocks.) Does that make sense?

If you’re curious to see other websites currently using Open edX, you can check out this community-curated list: https://github.com/edx/edx-platform/wiki/Sites-powered-by-Open-edX

David Baumgold
Developer Advocate, edX

Prasad Joshi

unread,
Sep 23, 2014, 6:14:47 AM9/23/14
to edx-...@googlegroups.com
Thanks David for your elaborate reply.

On Mon, Sep 22, 2014 at 10:26 PM, David Baumgold <d...@edx.org> wrote:
> Prasad, the Open edX codebase is licensed under the AGPL license (except for
> XBlock, which is Apache 2.0). These licenses *do* allow you make money using
> the software, so you are welcome (and encouraged!) to build a commercial
> offering using Open edX.

Thanks, this is exactly what I was looking for.

> However, you still must abide by all of the terms
> of the license: in particular, if you make any modifications to the codebase
> for your website, you must release those modifications under the AGPL
> license as well. If you build any new features, alter existing features,
> change text, etc, then you must make your changes freely available for other
> developers to see and use, as well.

I think, we should not have any problem with pushing changes upstream.
I think we are okay with this.

> (The exception is XBlock: under the
> Apache license, you make create closed-source XBlocks.) Does that make
> sense?
>
> If you’re curious to see other websites currently using Open edX, you can
> check out this community-curated list:
> https://github.com/edx/edx-platform/wiki/Sites-powered-by-Open-edX
>

Oh great. This will certainly help.

Thanks and Warm Regards,
Prasad

Sarina Canelake

unread,
Sep 23, 2014, 8:44:30 AM9/23/14
to edx-code
I think, we should not have any problem with pushing changes upstream.

Note that you don't have to explicitly push your changes upstream, but your codebase must be publicly available. This can be as simple as just making sure your Github fork is publicly viewable and forkable by others.

Obviously, we'd love to see new pull requests into the edx-platform master branch, but some features or changes you may add might not be ones we can accept.

Sarina

Wenting Ma

unread,
Dec 21, 2015, 7:12:23 PM12/21/15
to General Open edX discussion
Hi David,

Based on what you said,  since Xblock is under Apache license which does not require me to open source the customization I develop in future, is it possible to build a learning platform from scratch similar to openedx using those modules?

Best,
Wenting

Ned Batchelder

unread,
Dec 22, 2015, 7:09:37 AM12/22/15
to edx-...@googlegroups.com
Wenting, you could build a learning platform from scratch if you want.  But why would you?  You can use Open edX to run commercial sites if you like.  Is there something Open edX doesn't do that you need?  And do you need to keep your code secret?

--Ned.

--
You received this message because you are subscribed to the Google Groups "General Open edX discussion" group.
To view this discussion on the web visit https://groups.google.com/d/msgid/edx-code/b9b533e4-5d15-4412-8c3d-a88b70949c7a%40googlegroups.com.

Molly de Blanc

unread,
Dec 22, 2015, 9:44:43 AM12/22/15
to edx-...@googlegroups.com
There are a number of commercial sites being run on the Open edX platform. If you'd like to know a bit about what people are doing, you can read about Metalogix (one such case) and Proversity on the Open edX blog. The Sites Powered By Open edX page on GitHub has a much longer list, that includes great non-MOOC instances of people using the platform for education.

Because the platform uses a free and open license, anyone can install and run it for any purpose they want. For you, the license will affect platform (not content) changes.

Cheers,
Molly




--
Molly de Blanc
Community Coordinator
Open edX Project
141 Portland St, Cambridge, MA 02139

Wenting Ma

unread,
Dec 22, 2015, 10:05:00 AM12/22/15
to edx-...@googlegroups.com
Thanks for your reply, Ned.  Originally we are thinking of using openedx and have some customization based on our needs. However, since it requires us to publicize all source code, it is a concern for us to get some future investment as we do not think any investors would like that. OpenEdx is definitely a great platform that we can base on but it is hard for us to adopt it with its current AGPL license. Therefore, I am exploring to see if there are any options to build openEdx from scratch using xBlock as we really like openEdx. 

The other option I guess is probably pack all our customization as Xblock so we can build our site using openEdx but all customization is under Apache license so we can decide whether to make it opensource later on.

Do you have any suggestions given our situation? 

Best,
Wenting

    

On Tue, Dec 22, 2015 at 7:09 AM, Ned Batchelder <n...@edx.org> wrote:

--
You received this message because you are subscribed to a topic in the Google Groups "General Open edX discussion" group.
To view this discussion on the web visit https://groups.google.com/d/msgid/edx-code/CAGtJPNML7A3bQxeS6MVKc5wtoWDXY-oAqD4xBq6ZJHh-rxNBZA%40mail.gmail.com.

Ned Batchelder

unread,
Dec 22, 2015, 10:18:59 AM12/22/15
to edx-...@googlegroups.com
Wenting,

The thing to think about here is what your customers will be paying for, and therefore what your investors will be investing in.  Is it the structure of the education tool, or is it the content of the courses?  Your courses do not have to be open-sourced, and your XBlocks that let you innovate with tools inside your courses do not have to be open-sourced.

If the innovations that will set you apart are outside of the courseware, there is another option besides writing your own education system from scratch.  You can work on Open edX to create more extension points, contribute those changes back under AGPL, and then create your own closed-source extensions built on those new extension points.  This is not a simple thing, but neither is building your own education system from scratch.

If you start from scratch, you will be on your own, and will have to build everything yourself.  Want a badging system? Build it from scratch.  Want adaptive learning? Build it.  Want rich analytics.  Build it yourself.

If you extend Open edX to create more extension points, you still get the benefit of the work that everyone else is doing on Open edX.

--Ned.


Wenting Ma

unread,
Dec 22, 2015, 4:58:43 PM12/22/15
to edx-...@googlegroups.com
Thanks for sharing your insight, Ned. Our target is to build an educational portal on which instructors can offer courses to students, so the structure of the platform is definitely a selling point to investors, plus the # of users and traffic to the site. 

I do not think it is sensible to build my own system from the scratch especially there are already many powerful ones like OpenEdx. You mentioned creating more extension points so we are able to use those extension points to create our own closed-source extensions. I would like to explore more in this aspect. Is there any documentation available to show the process of doing this? How difficulty and how long will it take for Edx to integrate changes done by external developers? Also, why does the extensions using those extension points (under AGPL) can be closed-source?

My last question, out of curiosity, is there a way to bypass AGPL for OpenEdx, e.g. we pay for an instance of OpenEdx ?

Thanks again for your help!

Best,
Wenting

Ned Batchelder

unread,
Dec 22, 2015, 10:37:53 PM12/22/15
to edx-...@googlegroups.com
Comments below:

On Tue, Dec 22, 2015 at 4:58 PM, Wenting Ma <went...@gmail.com> wrote:
Thanks for sharing your insight, Ned. Our target is to build an educational portal on which instructors can offer courses to students, so the structure of the platform is definitely a selling point to investors, plus the # of users and traffic to the site. 

I do not think it is sensible to build my own system from the scratch especially there are already many powerful ones like OpenEdx. You mentioned creating more extension points so we are able to use those extension points to create our own closed-source extensions. I would like to explore more in this aspect. Is there any documentation available to show the process of doing this? How difficulty and how long will it take for Edx to integrate changes done by external developers? Also, why does the extensions using those extension points (under AGPL) can be closed-source?

​Adding extension points is not a well-defined task.  It requires understanding the structure of the existing code, and the variety of extensions that might be added.  You have to define the way those extensions might be the same, and then create an API to support them.  This is in essence what we have done with XBlocks: what is the same about all courseware components? Make those things available via the XBlock API.

​Our licensing strategy has been to use the Apache license​ for APIs, so that new code written against those APIs can be closed-source if need be.  If you design new APIs to support the kinds of extensions you are envisioning, we can adopt a similar model.


My last question, out of curiosity, is there a way to bypass AGPL for OpenEdx, e.g. we pay for an instance of OpenEdx ?

​EdX does not offer Open edX under any other license.  Our code that is AGPL-licensed is only available under the terms of the AGPL.  We are committed to an open-source sharing model, and encourage others to do the same.

You should carefully consider the open model in any case.  You mention that the structure of the platform is a selling point to investors.  I think the value of the idea is often overestimated, compared to the value of the execution.  That is, what you do with open-source software is more important than the software itself.  The number of users, and traffic to the site, will be the same regardless of the license you are under.

Think of it this way: someone could say, "How can edX make money if they give their software away?  Why wouldn't Coursera just take the open-source code from edX, and run a competing site?"  EdX makes money anyway, because of the value of the institutions and courses on edx.com.  Coursera doesn't use edX software, because they think they can do it better.  The software itself is important, but what we do with it is more important.  The same is probably true of your ideas.  How you execute them, and the relationships you build with your instructors and learners, are going to be the main value of your endeavor.

I hope you choose Open edX.  I hope you share with the world.  Let us know how we can help.

--Ned.
 

Wenting Ma

unread,
Dec 23, 2015, 1:16:28 PM12/23/15
to edx-...@googlegroups.com
Hi Ned,

Thanks for those insightful comments. I agree with you that building the value of supporting learning and teaching through  OpenEdx is more important than customizing OpenEdx itself. Software is to make learning more effective and enjoyable. I will take your advice and explore what values and impact we can build to support teaching and learning in an innovative way. Meanwhile, I will explore how to create more extension points which I would need to consult you later on. 

I think OpenEdx is an excellent tool with its commitment to openness and sharing. We, as part of it, can all contribute to make it better and more powerful.

Thanks again for your suggestions. 

Best,
Wenting   

Wenting Ma

unread,
Jan 13, 2016, 11:33:54 PM1/13/16
to edx-...@googlegroups.com
Hi Ned,

Thanks for all your informative notes. I have read related online docs for extending OpenEdx. In the following I have some inquiries about what components we should use to extend OpenEdx. Could you please help? Will those proposed changes be under AGPL or be on our own application?
 
  1. To extend user profiles to add more defining parameters to capture student characterics- should we extend User API?
  2. To extend student progress, what kind of component should we extend?
  3. For event tracking, if we extend it through Event tracking API, is the new code under AGPL?
  4. Build customized learning path for individual learners - any existing component to build on?
  5. Extending Individuals' learning repositories - display a library of learning objects  - any existing component to build on?
Thanks in advance!

Best,
Wenting

On Tue, Dec 22, 2015 at 10:37 PM, Ned Batchelder <n...@edx.org> wrote:

Ned Batchelder

unread,
Jan 14, 2016, 10:03:22 AM1/14/16
to edx-...@googlegroups.com
Wenting, I appreciate your careful approach to this sometimes difficult question.  To answer each component in turn:

1. To extend user profiles, I believe you will have to change the core code. This would be AGPL.  Perhaps the profile is already extendible, and I'm behind the times :)
2. I'm not sure what it means to "extend student progress", but that is outside the courseware, and so will require core changes. AGPL.
3. If you can do the event tracking you need using the existing Event tracking API, then your code can live in a separate repo under whatever license you want, including closed-source.
4. "Customized learning path" sounds intricate.  I imagine that will need core changes under AGPL.
5. A library of learning objects sounds like a separate application, which could be licensed as you want.  MIT is working on something called LORE to support this.

As always, I encourage you to build what you can in a sharable way.  Not only is it a way to give back to the community that gave you Open edX, but it means others will use and improve what you have built, and you will get the benefit of their work again.

--Ned.

Peter Pinch

unread,
Jan 14, 2016, 10:27:08 AM1/14/16
to edx-...@googlegroups.com
5. A library of learning objects sounds like a separate application, which could be licensed as you want.  MIT is working on something called LORE to support this.

https://github.com/mitodl/lore/ -- it's also AGPL. I'd be happy to talk about it more if it is of interest. 

I would also mention that there is a concept of "content libraries" within core edX (AGPL, I presume). So far, it's only been used to back-end problem banks.  

- Peter

Peter Pinch |  Associate Director of Engineering, Office of Digital Learning
Massachusetts Institute of Technology
One Main Street  |  Cambridge MA 02142
pdp...@mit.edu | T 617-253-6256C 617-652-0183

Wenting Ma

unread,
Jan 15, 2016, 12:43:54 PM1/15/16
to edx-...@googlegroups.com
Thanks for your quick reply, Ned. I really love OpenEdx and am hoping to contribute back to openEdx as we benefit from it and the community, also meanwhile meet our project goal. I just need to understand it more and see how those dual goals can be met. Here are some further discussions to your replies:

For #1, to extend user profile, I believe there is a User API. I just do not know how flexible it is to extend it with a few more variables capturing user chars. How is this User API different from the actual user profile component as you advised?
For #2, I believe there is a student progress feature. I am not sure if this is under enrollment API, or it is under a particular xblock?
For #4, I know in the xblocks, course contents are organized in the tree structure. In the current design, it allows to be referenced across courses. For this kind of references, where should changes be made, to LMS or studio ? 

One question for contributing to OpenEdx, when I develop new code to OpenEdx, as required by AGPL, how often do I need to merge it to the main repositories or I just need to make it available to the public? What is the process of doing it? What about the component under other licenses? 

I would like to really learn openEdx inside out and understand it thoroughly. In addition to the openEdx developer guide, are there any good developer training materials available to me to get deeper into openEdx? Do you have any advice how to best learn OpenEdx? I have run a sandbox myself so I can explore more by playing with it.

Thanks again for your help!

Best,
Wenting

Wenting Ma

unread,
Jan 15, 2016, 1:54:19 PM1/15/16
to edx-...@googlegroups.com
Hi Peter,

Thanks for sharing the LO repository API. I have some questions regarding this API:

1. What is the categorization/classification method of learning objects in this repository? How is LO defined in LORE? How granular can a learning object be?

2. How can it be used and shared within openEdx? Is it through Studio or core Openedx?

3. I noticed that there are group and members concepts. I assume it can be shared at both group and member levels within OpenEdx. How does it work?

4. is there a tracking within LORI for the reuse of LOs across courses/platforms?

Best,
Wenting

--
You received this message because you are subscribed to a topic in the Google Groups "General Open edX discussion" group.

Ned Batchelder

unread,
Jan 20, 2016, 4:11:43 PM1/20/16
to edx-...@googlegroups.com
Hi Wenting, I was just coming back to your message when I saw your plea for a response! Sorry it's taken so long.  My comments are interspersed below,

--Ned.


On Fri, Jan 15, 2016 at 12:43 PM, Wenting Ma <went...@gmail.com> wrote:
Thanks for your quick reply, Ned. I really love OpenEdx and am hoping to contribute back to openEdx as we benefit from it and the community, also meanwhile meet our project goal. I just need to understand it more and see how those dual goals can be met. Here are some further discussions to your replies:

For #1, to extend user profile, I believe there is a User API. I just do not know how flexible it is to extend it with a few more variables capturing user chars. How is this User API different from the actual user profile component as you advised?

​I'm not sure​ the User API you linked to can be extended from the outside. I'll get more information about it.

For #2, I believe there is a student progress feature. I am not sure if this is under enrollment API, or it is under a particular xblock?

​That feature is implemented in the LMS, without an API or an XBlock.  If you wanted to change it, you would be changing the core LMS code.
 
For #4, I know in the xblocks, course contents are organized in the tree structure. In the current design, it allows to be referenced across courses. For this kind of references, where should changes be made, to LMS or studio ? 

​I don't understand the question.  You want to add cross-course references?
 

One question for contributing to OpenEdx, when I develop new code to OpenEdx, as required by AGPL, how often do I need to merge it to the main repositories or I just need to make it available to the public? What is the process of doing it? What about the component under other licenses? 

​The AGPL license requires that you make your source code public.  You are not required to contribute it back to Open edX, although of course, the whole eco-system grows larger and stronger if people contribute what they've done.  The other license at work here is Apache.  When you change Apache-licensed code, you are not required to make your changes public.  You should really consult a lawyer if you are concerned about the details.
 

I would like to really learn openEdx inside out and understand it thoroughly. In addition to the openEdx developer guide, are there any good developer training materials available to me to get deeper into openEdx? Do you have any advice how to best learn OpenEdx? I have run a sandbox myself so I can explore more by playing with it.

​Open edX is a large Python/Django application.  Learning more about Python and Django will help you work in Open edX.  I think you've done a good job finding the developer materials that are specifically about Open edX.

Again, sorry for the delay,

--Ned.
 

Wenting Ma

unread,
Jan 20, 2016, 6:04:24 PM1/20/16
to edx-...@googlegroups.com
Hi Ned,

Thanks a lot for your reply. 

For #1, I will wait for your further update.

For #4, what I meant is as the course content are broken into smaller "learning objects" and they are structured in a tree structure. If I want to enable the feature of using a learning object residing in course A in course B, which is essentially cross-referencing the learning object from one course to another, which component should I modify, LMS or Xblock?

Thanks again for your informative reply.

Best,
Wenting

Ned Batchelder

unread,
Jan 21, 2016, 9:56:44 AM1/21/16
to edx-...@googlegroups.com
Hi Wenting,

For #1, we don't have a good way to extend the profile.  The fields there now are part of the database schema.  If you need to add more fields, you will be changing the Django models, and that may be difficult to maintain as you try to upgrade to future releases of Open edX.

For #4, I'm not sure what is already possible.  Perhaps others who are closer to the problem can comment.  Depending on how you wanted the experience to work, I suppose you could write an XBlock that provided the navigation, but I'm not sure it would be as smooth as you would like.

--Ned.

Peter Pinch

unread,
Jan 21, 2016, 10:35:25 AM1/21/16
to edx-...@googlegroups.com
On Jan 20, 2016, at 6:04 PM, Wenting Ma <went...@gmail.com> wrote:

For #4, what I meant is as the course content are broken into smaller "learning objects" and they are structured in a tree structure. If I want to enable the feature of using a learning object residing in course A in course B, which is essentially cross-referencing the learning object from one course to another, which component should I modify, LMS or Xblock?

Can you say a little more about your use case?

As a practical solution, we handle this at MIT by exporting courses, editing the OLX, and re-importing them. We use a bunch of different tools for this. We spoke off-list about LORE, which is one of them. 

There is also a "Custom Courses on edX" function that makes it easy to re-use parts of a course as a new course -- which may not be the same as what you're looking for. There are docs on this feature and a screencast https://goo.gl/Dynqpi

Finally, LMS has a feature called "content libraries" that is meant to provide a structural foundation for content re-use. However, the only block type that can use a content library currently is the Randomized Content Block, which is like a Problem Bank. 

I hope this helps. There's a lot of room for improvement in the content reuses, but there's also a lot of different use cases. 

Wenting Ma

unread,
Aug 1, 2016, 1:23:06 PM8/1/16
to edx-...@googlegroups.com
Hi Ned,

Hope you are doing well. It has been a long time since we last talked. Thanks for sharing me those insights before. 

Now I have my portal up running with some courses in the pipeline to be added. I have one more question regarding commercial use of openedx.  Based on our previous discussion, all constrictions come from AGPL that when modifying the code, we need to share it. Then, when there is no code change, we have the freedom to use it commercially. When I say commercially, I mean I can freely use it to charge individual students for the courses on the portal, and charge corporate members with monthly subscription etc.. There is no restriction how you run your business or the business model you choose.  Is this understanding correct?  Please advise. Thanks!  

Best,
Wenting  

Wenting Ma

unread,
Aug 2, 2016, 4:11:13 PM8/2/16
to edx-...@googlegroups.com, Ned Batchelder
Hi Ned,

Hope you are doing well. It has been a long time since we last talked. Thanks for sharing me those insights before. 

Now I have my portal up running with some courses in the pipeline to be added. I have one more question regarding commercial use of openedx.  Based on our previous discussion, all constrictions come from AGPL that when modifying the code, we need to share it. Then, when there is no code change, we have the freedom to use it commercially. When I say commercially, I mean I can freely use it to charge individual students for the courses on the portal, and charge corporate members with monthly subscription etc.. There is no restriction how you run your business or the business model you choose.  Is this understanding correct?  Please advise. Thanks!  

Best,
Wenting  

Ned Batchelder

unread,
Aug 3, 2016, 6:03:38 AM8/3/16
to edx-...@googlegroups.com
Wenting,

You are correct: there are no restrictions on your business model: you can run an Open edX instance, and charge users however you like.

--Ned.

Wenting Ma

unread,
Aug 3, 2016, 7:40:35 AM8/3/16
to edx-...@googlegroups.com
Hey Ned,

Thanks for your confirmation. Noted :)

Wenting 
Reply all
Reply to author
Forward
0 new messages