edX Enterprise PR Reviews

I’ve seen several times that when we open PRs like this or this for edx-enterprise, we struggle to get any response from people with merge rights to the repo. And from this spreadsheet and backstage I believe it is officially unmaintained at the moment.

2U obviously relies heavily on this repo and develops it actively for their own uses, but don’t allocate much time for anything else. (At least 11 different developers from 2U merged PRs in the past two months, but pings on GitHub are ignored and there’s only one person - George Babey - who answers questions on Slack #enterprise). The repo also lacks documentation and is designed to integrate with a lot of MFEs that are explicitly specific to 2U.

Before I bring this up with 2U or Axim or the community, I wanted to hear from @Agrendalath @tecoholic @antoviaque and others about what you think the best path forward is.

  1. I’m unclear how widely used this repo is outside of 2U. Does anyone know? Do we just have the one client using it, or several?

  2. Would it make sense for one of us to offer to take on maintenance of the repo, so we get commit rights, and can start clearing the backlog of PRs, working on documentation, etc. ? (This would still require 2U to engage with us more often as we co-develop it, to ensure changes work for them and for the community.)

  3. Would it make sense to fork the repo into a simpler and more generic community version, and let 2U develop their version separately? I mean, my impression of edx-enterprise is that it’s more “source available” than “open source” (it’s required to be so by the AGPL license). That is not necessarily a terrible thing. IMHO if the maintainers of some project don’t have resources to accept community contributions and reply to bug reports etc., then it’s better for everyone to say that it’s “source available but not accepting contributions or bug reports” than to say that it’s “open source” but not allocate resources to actually engage with the community.

What do you think?

Ticket: MNG-4285

1 Like

I’m of the mind that we shouldn’t fork, per se, but should create a parallel, open source solution to the handful of things that edx-enterprise does that are important enough to generalize. All of the solutions in enterprise are VERY edX specific and while we can use enterprise for reference, I don’t think it’s going to be much faster to change it than to just make a clean, well documented version of the parts we care about and actually use. Since we don’t have to rewrite all of it, a rewrite is viable.

If I remember those parts have primarily to do with some metadata and catalog management. The first step would be determining what parts we found worth torturing ourselves to enable on client instances. We could make these into one or more plugins with good docs.

My 2¢ : I haven’t looked at edx-enterprise for a while – last time was probably Cloudera? They had data integration needs, but edx-enterprise seemed like overkill for them, so we continued using our custom integration code. But from what I remember, enterprise was useful for:

  1. Mass enrolment management, e.g for corporate online learning
  2. Learner data export integration (“integrated channels”) to 3rd party tools – e.g business tools like SAP, or other LMSs like Canvas and Moodle – and recording consent for learner data shared with 3rd parties.

So it’s potentially useful to the bulk of our client personas (corporate and schools), and integration with existing systems could help increase uptake of Open edX.

But I hesitate to say we should take on maintenance of the repo (or rewrite into another one) without a prospective client that needs it, or at least a clear use case.

1 Like

@braden Thanks for looking into all the enterprise stuff.

@feanil Recently tried to guage the usage on the Open edX forum as well. It has had a total of 3 voters, of which 1 is us.

We use the entire stack for one of the clients, from edx-enterprise plugin down to the learner portal and admin portal MFEs.

If we do this, then we would have to find the resources to invest in some or most or maybe even all other enterprise repos as well. From experience, any non-trivial change in edx-enterprise has side effects that need to be handled in other places.

I remember raising this same question a few months back in one of our internal JIRA tickets, and this is just about the same point where stopped. Our client doesn’t have the budget to take on this fully themselves. But they will be happy to collaborate with others.

A more broader view

The following are written mostly from personal experience of reading the code and trying to understand the features and figuring out how to use these software packages for our client.

Complexity - The entire enterprise stack has a huge tech debt that, I doubt, would be resolvable. Years of business decision have spread logic around in a bunch of places.

For eg., one of the most common issues that we encounter when setting up the enterprise stack is, the courses don’t show up in the final catalog in the learner portal MFE. Because, the course metadata is filtered when ingested by course-discovery and filtered again when indexed in elastic search, which is filtered again by enterprise-catalog when ingesting and then filtered again when pushed to Algolia - from where the learner portal MFE pulls it, and yes, it filters it again while querying. So every time a course doesn’t show up, we end up checking is 3 to 4 different places. After almost a year doing this, I am still not 100% sure I have a foolproof way to create a new course and add it to a catalog and the learner will see it.

Documentation - Almost all available documentation is the ADR decision documents the different repos. Unless we restrict ourselves to the feature set of edx-enterprise, we will have to create documentation covering all of these services. Something like Installing, Configuring, and Running the Open edX Platform — Installing, Configuring, and Running the Open edX Platform documentation. Because any serious enterprise offering will run into things like bulk licensing (license manager), bulk purchase of course seats (enterprise-subsidy) and tailored course offerings for their clients (enterprise-catalog).

Having spent probably hundreds of hours with this stack, I really don’t have the stomach to take up the maintainer role or recommend building this from the scratch.

  1. First, because of the complexity of the software
  2. Second, because anyone org which wants anything beyond “bulk enroll via CSV” and “push data to existing integrated channels”, that comes with edx-enterprise, will want features that can be made available with better documentation.

However, we need a way forward. So, unless we have someone willing to pay for the refactoring or reimplementation, I would recommend a shared maintainer ship, with the fallback to a hard-fork.

I was very much of this mind until very recently. But seeing how the business requirements can change in the real-world, and the amount of use cases that the existing stack supports, I suspect it would take a big effort to catch up.


Thanks for the thoughtful and detailed reply @tecoholic.

That’s insane.

For what it’s worth, I believe the introduction of the discovery service was one of the biggest architectural mistakes made in Open edX. And putting those layers on top of it led to this.

So it sounds like we’re stuck with trying to improve the status quo, unless someone were to come along with a really big budget. In that case, I think it makes sense to focus on our more tractable problems - like getting PRs merged in a timely fashion and getting some communication going with 2U.

@braden @tecoholic If we can’t take sole maintainership, but only have hours for collaborating - maybe it’s still worth trying to setup that collaboration? Maybe to start we could bring up the conversation with the 3 who have said in the poll that they use it, see what kind of collaboration they would be interested in, and their capacity for contributions? If it’s done publicly on the forum, it might attract others? There is a dedicated Collaborative Proposals section. Since the larger user of this currently seem to be 2U/edX, it could also indeed make sense to have a specific discussion with them.