Future project idea: Headless LMS

We have had a lot of big clients and prospects (LabXchange, BB-4551 In-----, SE-2296 Au------, BB-499 “Yonkers”, and probably many more) that have come to us looking to build very unique, custom learning experiences on top of Open edX, and many have found that the platform doesn’t have sufficient flexibility to do what they want. If their budget is big enough, we can figure out a way to make it work, but it doesn’t feel as efficient as it could, and it often requires the client to simplify a lot of their requirements.

Now a big trend in recent years has been the headless CMS, like Strapi, but there are many others. They provide a nice WYSIWYG content editor, but leave the entire user-facing frontend up to you, so that it can be as custom as your want.

Yet, as far as I can tell, there is no open source LMS on the market that advertises itself as a “headless LMS”. As we know, Open edX can do it a bit, if you put in a ton of work, but is far from optimal for that use case. (For example, you cannot log into Studio without the LMS frontend running, and many instructor tools are in the LMS, not Studio, so one has to re-implement all of them or make instructors switch between the edX LMS and the custom LMS frontend.)

I don’t know if Canvas can work as a headless LMS - I could only find this which seems like a “maybe”.

All this is to say: I think there could be a big market for a new open source headless LMS, which provides a nice visual content editor (with reuse), instructor tools, and analytics; which uses very flexible models for “course” or “class” or “organization”; and which has no learner-facing UI at all (or only a basic template that can be modified). There are certainly many proprietary headless LMSes out there, which validates the demand.

But that’s a ton of work? Yes. But perhaps less than adapting an existing LMS in some cases. And you could start by using H5P as the interactive content format. It’s open source and has tons of components (more than XBlocks, I’d say), including highly-demanded ones like interactive videos. It’s not nearly as visually nice as proprietary ones like Storyline 360/Rise 360, but it’s a great start. And it emits xAPI events.

Anyhow, food for thought!

Ticket: MNG-2401.


I’d be game for this, but remember the reason why Open edX exists: The business angle came first. They started an online school and made the software they used to do it open source. Starting a project with ‘this is something that should exist, therefore we should build it’ seems a bit dangerous if we’re not going to be using it ourselves. We have no compelling business need for us to start an LMS from scratch, only an understanding there may be a market for it.

If we could find a sponsorship organization, maybe-- someone who would be actively using it and funding it as we go. Otherwise this could quickly get way out of hand, budget-wise.

Isn’t Open edX somewhat heading towards this? A lot of the UI is moving towards MFEs, which means the platform is more API-driven than ever.

I don’t see why someone with enough funds couldn’t create a new learning frontend based on the frontend-app-learning that has a completely different UI.

I the studio login issue can be solved a bit. There is now frontend-app-authn for authentication and registration, and some studio functionality is also moving to MFEs like frontend-app-course-authoring/ (which is something I’m actively working on). Studio should also be able to login in a similar manner, not sure if it already does.

I agree with you that at the moment we have no business need for this, though I’d raise that we had a big client complaining about the capabilities of Open EdX as a headless LMS as they needed only that one since they wanted to integrate with their own UI.

I share the opinion of @braden that there is a market hole, but the question is how many customers would prefer that instead.

Although it is true, I think it would not reach the “headless LMS” state in the upcoming ~4 years as the platform is quite robust and the changes they/we would need in the long run would heavily impact the existing APIs as well, which takes a lot of time to push through.

Don’t take me wrong, I like the platform, but I think the headless LMS could bring in other customers too.

“Headless” LMS does have a good point, I don’t know the depth of it but I guess “Yonkers” did try to build their own UI. Having said that I resonate with @kshitij that Open edX is moving towards MFEs which is making the platform API-driven, I did a similar discovery this year where we planned to move all the advanced settings available in the studio to APIs.

What I am trying to get attention to is I think Open edX is moving in the API-driven direction and we have clients that want that work to be done.

So as @Fox pointed out if we can find a client or clients who can sponsor this work that will be a perfect catalyst to this work.

Because if we develop this without dogfooding it there could definitely be possibilities that we might miss.

I think Fox has the crucial point. We either have to find somebody to pay for development, or build it and use it ourselves.

The next question would then be: why not start offering courses on a platform we build? We certainly have in-house knowledge of many different things, from developing using Typescript to managing sprints asynchronously to contributing to a large open source project. The project’s theme could be an Open Source Learning Hub of sorts, to differentiate itself from the competition.

If the underlying toolset then happens to be state-of-the-art and gets picked up by other users, so much the better. ;)

In any case, TIL about H5P. Looks like what XBlocks were meant to be. Thumbs up.

Opportunity cost is the primary objection here. We have a lot of big projects that clients are asking us to build and they are certain to yield payment. This idea is less certain. I still feel like an organization that has staff dedicated to doing instruction would be better placed as a sponsor than we would.

However we could start dipping our toes in the water here. What would it take to integrate H5P into Open edX? If the components were made available to the Open edX ecosystem (and if we could make whatever plugin we create modular in such a way that it could later be used to build out a new LMS), that would be great. It’d require relatively minimal investment up front and would be a solid contribution while wrapping our minds around the possibilities.

H5P is already available in the edX platform through LTI 1.1/LTI 1.3 integrations, we even have a blog post about it: Tutorial: Creating Course Content with H5P for the Open edX® platform | OpenCraft

The newer LTI Deep linking (present on LTI Advantage) allow the tools to display a nice UI for instructors without the need of any custom integrations (I’ve tested H5P with LTI Deep Linking, and H5P authoring becomes integrated with Studio, looks nice despite having a few bugs).


Yes, that’s basically why I’m throwing this idea out there. If a client comes along with a big budget and a request for a very custom LMS experience that’s quite different than what Open edX is designed for (see all the examples in the first post here for when this is happened before), rather than proposing a long and difficult project of building it on Open edX and working around the differences in platform goals, we could propose that we build this, and e.g. share the costs 50-50 with the resulting core platform being open source. Then they get the LMS that they want for similar cost to what they’d pay anyway, and we’d get a new project. I actually think this approach would have worked better for two or three of the specific clients I mentioned in the description, and ultimately saved them money and time.

Yes, Open edX is moving closer to this, but it hasn’t been designed as a headless LMS and won’t really function like that anytime soon.

  • As I mentioned, in a headless LMS, you want to have all the instructor/enrollment tools alongside the course authoring tools in the “staff UI” that comes with the platform; you only want the learner part to be re-implemented for each project. Open edX doesn’t have this same separation of concerns, although it may get there in the future.
  • Open edX is quite tightly coupled to the arrangement of “Program > Course > Section > Subsection > Unit > Block”. If you want a different hierarchy like LabXchange pathways or Yonkers which had only “Course > Subsection > Unit > Block”, you have to use some hacks, and train all your course authoring team on how to author in a weird way since authoring still assumes the Open edX default hierarchy. Flexibility with things like this would be a major goal of a headless LMS.

All that said, a second option is to work on making Open edX work better as a headless LMS, if there is buy-in from the community. e.g. move instructor tools to a separate MFE, make the course model more flexible, and so on. But one project cannot be good at everything (a lot of people want Open edX to be all things to all people), and it’s an open question which approach would be better.

Just to be clear, Open edX is still awesome and is the best fit for anyone building MOOCs or whose use case is similar to any of the well-supported use cases today. This is just about very different use cases.

+1 to many of the comments made – it’s definitely important to base it on an existing business case, and to have someone actively using it. If there is someone coming with a project that fits though, it could then be interesting to look into it.

On the from scratch vs getting Open edX to become more headless – one big flashing warning sign to consider is the sheer size of the work to reimplement something like a LMS from scratch. I would expect that project to be bigger, not smaller, than the work we had to do for LabXchange or McKinsey to build it with Open edX. Especially when taking into account making it a real product that can satisfy more than the one client sponsoring it - one of the trappings of enterprise custom software work is that the result tends to be highly specific to one organization, and can regularly conflict with the project itself (cf the reasons for edX to stop doing that type of work themselves, or what we saw with some of our own projects). Even if it looks bigger/harder, I would give more weight to the approach of adapting Open edX – which I would expect to be well received by the community, as it would be largely about accelerating a direction already taken.

We can rediscuss in front of a concrete case though. :slight_smile: