Administrator console for Open edX
View the Github ticket for proposal status updates
Overview:
The proposed project involves the creation of an administrator console for the Open edX platform, a dedicated interface for site administrators to manage and configure their Open edX instances. While the platform currently provides LMS for learners and Studio for course authors, there is a gap in the administrative capabilities that calls for a separate, user-friendly console.
Problem
There is currently no unified place to manage configurations and day to day operations, and some of these things need to happen anyways, leaving the administrator with a scattered set of mechanisms, including altering model records via the multiple Django sysadmin consoles, doing things via Command line interfaces, changing configuration files and redeploying the applications etc. For some important operations there isn't even a way of getting things done. This increases complexity, limits adoption and success with the platform.
Regardless of how it is done, you currently need superadmin permissions to make any configuration changes, and this is too much clearance in some cases. For example, in order to unlock a user that for some reason did not get the activation email, you need to have staff access and this ends up in a situation where there are many users with unnecesary broad levels of access.
Some of the functionality or additional extensions that are built for the platform will need a place for their platform level configurations to be handled, and since this currently does not exists, different solutions will try to solve this need in different ways, adding unnecesary complexity to the platform and reducing the likelihood of adoption.
Key Use cases
As a platform administrator I need to see the status of my platform at a glance in order to understand the landscape and identify improvement opportunities, for example see what release is currently running, what xblocks are installed, where is the studio application parked, whether or not it has Aspects/discovery/credentials and where are they it parked, what theme is being used, branding package, paragon variables, etc.
As a platform administrator, I need to be able to discover the different global settings options and be able to change them in order to optimize the adaptation of the platform to my specific needs.
As a platform administrator I need to be able to configure and reconfigure some of the features in the platform without the need of redeploying the application, this increases exploration and usage of the advanced features and increases overall efficiency.
As a program manager, I need to create new organizations or manage the existing ones and also configure the certificate templates applied to each organization.
As a program manager, I need to grant my instructors with course creation permissions or remove course creation permissions for users that should no longer have them.
As a program manager, I need to check what courses a particular instructor is assigned to in order to be able to oversee their activity.
As a program manager I need to be able to do certain day to day operations with my user records in order to be able to support users and maintain control of the operation, for example, force reset a user password, activate a user manually, unlock users after they have tried the wrong password too many times, process account removals, batch import user accounts, etc.
As a program manager I need to be able to access some aggregated reports about the operation of the courses under my administration.
As a platform administrator I need a place to find and manage some key admin operations such as viewing the status of async tasks, checking for security updates, viewing the application logs, running django commands, etc. This allows me to efficiently manage the platform, resolve issues, maintain data security compliance and more.
Supporting market Data
At eduNEXT, we have worked with a diverse range of initiatives trying to adopt the open edX platform over the span of 10 years, including companies, NGOs, universities, and independent sites. Across these different types of organizations, a common challenge has always been identified, administrators consistently struggle with managing their Open edX sites effectively. Even basic configurations, such as student management, present significant challenges. Part of our business model has been to sell our support services to help them overcome these challenges, but you can argue that this model makes a pretty bad experience for adopters or the Open edX platform, making it inefficient and costly, and contributing to the high rate of initiatives that desist after a while.
An advantage of this approach is that everything our customers request assistance with becomes a ticket that is classified into a special taxonomy that we built, and we have processed over 27000 tickets to day, which has given us a lot of insight into the kind of things that are needed and how they are prioritized.. Here are the analysis of some specific items in the taxonomy that received the most requests in the past year:
Proposed solution
Overview
The use cases for an administrator console are very diverse and we are not proposing a single project will address them all. The first thing we are proposing is to have a centralized and extensible place for all these use cases to be addressed.
We refer to this place for now as the “administrator console”, but even the name can be iterated and improved.
Key elements of the proposed solution are:
It leverages the core + extensions framework, so There will be an “admin core” first, that will be ideally part of the core open edX product, and a number of “admin extensions” that certain Open edX operators may want to leverage, as well as the possibility built in from the get go, to build your own “admin extensions” when needed (We envision that the code to add your admin extension is co-located with the code of your extension.)
Here are potential examples of “admin extensions”, in no particular order:an extension to add learner management capabilities to the admin core.
an extension to add certain reports to the admin core
an extension to add Aspects charts or dashboards to be integrated into the admin core
an extension to add roles and permissions definition and management (once RBAC goes through)
an extension to add configurable theming capabilities to the admin core
an extension to add mass email configuration and sending capabilities
an extension to add advanced configuration capabilities for a particular extension of the platform (a plugin, an Xblock, etc)
an extension to allow the discovery and setting of feature switches and flags.
an extension to centrally manage the available LTI tools course authors can reuse in studio
It will not need to be built all at once. we’ll start with the first version of the admin core and perhaps a few extensions, as well as a well defined set of ground rules for additional extensions to be created later on.
It will leverage Django and APIs for the backend, and React+paragon for the frontend.
It will leverage the platform auth and user models, the way Studio does.
It will allow to integrate other pieces of the extended platform into the administrator experience, for example one “admin extension” could allow certain Aspects dashboards, charts or reports to be served inside the adminstrator console.
Technical feasibility
In terms of “How can this solution be built”, besides what was mentioned in the previous section, here some the initial assumptions and considerations:
The “admin core component will need to have the following capabilities.
be able to access the different models in lms and studio
be able to access the different models in all the openedx services (credentials or discovery), to enable the extensions posibilities in the admin console.
be able to “read” or “be aware of” the settings that are not stored in data models, but in lower layers such as django configs or python package entry points.
TBD - comments and contributions are most welcome
UX / UI considerations
The UX / UI should be simple and convenient for administrators, who are often used to handling this kind of consoles in many other applications.
The UX / UI should be able to accomodate all the flexibility that comes with the “core + extensions” approach.
Include any UX/UI designs. COMING SOON.
Proposed plan for any relevant usability/UX testing
Other approaches considered
We explored the possibility of integrating administrative functionalities directly into Studio and / or the LMS. This approach was also dismissed because it would add unnecessary complexity to these platforms, which are already intricate in their own right. By distributing administrative functionalities across Studio and the LMS, administrators would lack a unified and user-friendly interface, leading to fragmented workflows and reduced efficiency. Instead, a dedicated Admin Console will centralize these tools, providing a streamlined and accessible experience.
Another approach we have explored and pursued is to build some of the missing funtionality in our external product, the console we built to deal with our customer dossiers, payments, contracts, etc. We built and shiped a small portion of theses capabilities, but this proved to be on the one hand confusing and even unacceptable for the users, to go to a different platform to make configurations for their Open edX platform, and on the other hand, this approach is not well aligned with the collective construction of a product that serves the needs of all.
Competitive research
Implementation Plan:
Edunext is commited to drive this proposal through the initial stages, gathering community reviews and support or critics as part of its core contribution commitments.
As the proposal gains traction and it is improved with all the community reviews and comments, we'd hope that Axim considers to commit some FC resources to speed up its development.
Over time, as it has been the case with other parts of the platform, we plan for the core - extensions framework to be the right environment in which other adopters of the open edX platform that want to accelerate innovation and specific features will also contribute funding or technical resources to build and maintain additional admin extensions.
Plan for long-term ownership/maintainership
TBD - comments and contributions are most welcome
Open questions for rollout/releases
TBD - comments and contributions are most welcome
Authors
Proposal prepared by @Juan Camilo Montoya and @Santiago Suarez . Initial review by @Felipe Montoya