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.

3 Likes

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.

1 Like

I’d love to understand what the feature set would be of the simpler version, what are the parts of the enterprise system that you need vs things that come along for the ride? My guess is that even the combined usage of all 3 sets of folks that expressed interest, it may be much smaller than the extremely large footprint of the enterprise system as it stands today so maybe it makes sense to figure that out and just collaborate on a replacement that meets those needs?

@feanil Yeah, I was thinking that too. I’m not sure though, maybe @tecoholic you can speculate about that?

@feanil @braden Right. I think that would be the right way to go about this if we are really trying to build something from scratch. For our client, I would summarize the feature list as:

  1. Enterprise Catalog - that is private and potentially unique per enterprise customer.
  2. A self-service portal where learners of the enterprise can browse their catalog and self-enroll in the courses. The catch here is that the courses are “invitation only” by default. So it will be closed for “public” but allow enrollments for enterprise learners.
  3. Bulk purchase of seats - ability for an organization to bulk buy seats for their learners. [1]
  4. Pathways - a way to sequence courses that leads to a cumulative certificate at the end.
  5. Admin portal - A way for the admins to manage the above set of things.

To achieve this, we ended setting up every piece of enterprise software we got our hands on.

We also had another partner of the client come in for a LXP integration, and we were dabbling with xAPI data sharing for a while, but that didn’t go through, however, it is still something a new partner can ask for, so we have an interest in that area.


Footnote

[1] - We currently use the license-manager for the current setup. Licenses provide access to all the courses in the catalog, so it could theoretically be N*M enrollments (N=licenses, M=courses in the catalog). I am suspecting the customer will want to track these “enrollments” and price that as a “seat” instead of a “license” as a seat. At which point we might have to switch to enterprise-subsidy. This is the part which worries me about building something afresh. As the requirements can come really fast as the marketing teams dealing with organizations tend to promise unrealistic things to make a sale happen. That is not to imply that we shouldn’t attempt it. It might just be that our client is not the ideal use-case for such an attempt. They already had a lot of enterprise partner offerings that they were managing indepently, which they are now moving to the Open edX enterprise stack. So, they already have a big backlog of features they need.

@antoviaque I reached out to 2U about this, and they promptly put me in touch with George Babey, who seems to like the idea of collaboration. We are trying to find the right time for the initial meeting to happen.

@braden It would be nice to have you in the meeting. Can I loop you in in the next exchange?

2 Likes

@tecoholic yes please :).

1 Like