This is a reference (n imperfect) glossary for various customization and extensibility mechanisms in the Open edX Platform. In the short term, this document is linked from an Extensibility and Customization Survey I (David Joy) am doing ahead of my talk on the subject at the 2023 Open edX Conference.
Configuration
Django Settings
Django Settings are the most fundamental way of configuring the Open edX Platform and customizing it to your environment.
Micro-frontend Environment Variables
Micro-frontends are configured via a set of environment variables that are baked into the MFE at build time. They can also be overridden via API at runtime using the MFE config API.
frontend-platform: https://openedx.github.io/frontend-platform/module-Config.html
Translations
Backend Translations
This is the server-side (and legacy frontend) way of doing i18n and localizations in the Open edX Platform. It uses the Django translation libraries and .po files checked into the backend service’s repository.
...
React-intl docs: https://formatjs.io/docs/react-intl
frontend-platform: https://openedx.github.io/frontend-platform/module-Internationalization.html
How-To: https://github.com/openedx/frontend-platform/blob/master/docs/how_tos/i18n.rst
APIs and Events
Event Bus
The “event bus” allows for decoupled, event-based communication between micro-services. Event hooks from the Hooks Extension Framework may be broadcast onto the event bus.
...
Theming and Branding
Comprehensive Theming
Comprehensive Theming is a mechanism by which you can overlay or override elements of a legacy frontend (i.e., not a micro-frontend) by creating a “theme” that mirrors the file structure of the application’s default UI elements (JavaScript, SASS/CSS, Django templates, etc.)
...
Components
Custom in-course JavaScript Apps
Allows course authors to embed custom JavaScript apps into their courses. (Also called custom JavaScript problems or JS Input problems)
https://edx.readthedocs.io/projects/edx-developer-guide/en/latest/extending_platform/javascript.html
LTI
Learning Tool Interoperability is a standard that allows the Open edX Platform to load third party tools into our courses and interfaces. It generally uses iframes to accomplish this.
...
(Documentation for this forthcoming, it was lost in the ReadTheDocs → docs.openedx.org transition.)
Applications
Django App Plugins
Description
...