Open edX — Codebase Overview
Repository Ecosystem
Unlike its competitors (Canvas, Moodle, Sakai, Chamilo, ILIAS) — which are each a single primary repository — Open edX is a distributed system composed of many repositories across the openedx GitHub organization. The codebase has evolved from a Django monolith into a platform with a core application, independent microservices (IDAs), and a micro-frontend (MFE) layer.
| Field | Detail |
|---|---|
| GitHub Org | github.com/orgs/openedx |
| Primary Repo | openedx/openedx-platform |
| Stars (platform) | 8,059 |
| Forks (platform) | 4,258 |
| License | AGPL-3.0 |
| Primary Language | Python (Django), JavaScript/TypeScript (React MFEs) |
| Governance | Axim Collaborative (non-profit) |
Data retrieved April 2026
Core Platform: openedx-platform
The heart of Open edX is openedx-platform (historically called edx-platform). This is a Django monolith that contains both the LMS (learner-facing) and Studio/CMS (author-facing) applications.
Tech Stack
- Backend: Django (Python) — one of the larger Django applications in production
- Database: MySQL (primary relational store); MongoDB (course block storage, actively being migrated away from)
- Cache / Queue: Redis for caching, sessions, and Celery task brokering
- Task Processing: Celery for async jobs (grade recalculation, bulk email, course exports)
- Search: Meilisearch (newer deployments) or Elasticsearch (legacy)
- Frontend: React + Paragon (for MFEs); legacy Mako templates still present in the core
- Build: Webpack (core templates), node/npm (MFEs)
- APIs: REST API (DRF) throughout; JWT-based authentication
- Standards: LTI 1.1 and 1.3 (consumer and provider), SCORM via XBlock, xAPI via event routing, Common Cartridge import/export
Architecture Highlights
- LMS + Studio: Both applications live in the same repo and share Django models. Studio is the course authoring interface; the LMS is the learner interface.
- XBlock system: Course content is built from XBlocks — pluggable Python components. The XBlock API separates content rendering and student state storage from the LMS core.
- Plugin architecture: Django apps can be added via
INSTALLED_APPSand platform hooks; the Hooks & Filters framework enables extension without forking. - MongoDB dependency: Course structure and content is stored in MongoDB (the
modulestore). A multi-year migration to MySQL-backed storage is underway via the newerlearning-coreblock system. - Celery workers: Multiple specialized queues (lms.default, cms.default, lms.high_priority, etc.) for different workloads.
Release Model
Open edX follows a named release cycle rather than semver. Releases are named alphabetically (Quince, Redwood, Sumac, Teak, …) and published approximately every 6 months. Each release is supported for one full release cycle. Named releases are cut from openedx-platform main and tagged; Tutor builds are provided for each named release.
Independently Deployable Applications (IDAs / Microservices)
Open edX has decomposed several capabilities into standalone Django services. Each IDA has its own database and communicates via REST APIs and events.
| Repository | Stars | Description |
|---|---|---|
| course-discovery | 60 | Course and program catalog / metadata service. Powers search and enrollment in multi-course deployments. |
| credentials | 25 | Issues and stores course and program certificates. Supports Open Badges. |
| edx-enterprise | 49 | Enterprise enrollment, licensing, reporting, and SSO integration for B2B deployments. |
| license-manager | 37 | Django service for managing subscription licenses (used by edX for Business and enterprise deployments). |
| forum | 5 | Discussion forum service — a Python/Django rewrite of the legacy Ruby/MongoDB forum. |
| xqueue | 38 | Interface between the LMS and external code grader services (for programming assignments). |
Micro-Frontend Applications (MFEs)
The Open edX frontend is being migrated from server-rendered Mako templates to standalone React applications (MFEs). Each MFE is a separate repository, deployed independently, and communicates with backend services via REST APIs.
| Repository | Stars | Description |
|---|---|---|
| frontend-app-learning | 70 | The primary learner course experience — courseware, navigation, sequence rendering. |
| frontend-app-authoring | 16 | Studio course authoring MFE — the modern React replacement for the legacy Django-rendered Studio. |
| frontend-app-learner-dashboard | — | Learner dashboard (My Courses, program enrollment). |
| frontend-app-discussions | — | Discussion forum frontend, paired with the forum IDA. |
| frontend-app-instructor-dashboard | — | Instructor tools — bulk grade, cohort management, data downloads. |
| frontend-app-ora | — | Open Response Assessment (ORA2) student-facing MFE. |
All MFEs are built with React, use Paragon for UI components, and share the frontend-platform framework for authentication, logging, and i18n.
Core Framework Libraries
| Repository | Stars | Description |
|---|---|---|
| XBlock | 468 | The XBlock Python framework — the extensible component system for building custom learning content. |
| openedx-events | 12 | Open edX Events (Hooks Extension Framework) — Django signals with Avro schemas for event-driven extensions. |
| openedx-filters | 10 | Open edX Filters (Hooks Extension Framework) — pipeline filters for modifying platform behavior at defined extension points. |
| paragon | 136 | Accessible, theme-ready React design system for all Open edX frontends. |
| edx-ora2 | 65 | Open Response Assessment suite — peer review, staff grade, self-assessment workflows. |
| opaque-keys | — | Key system for uniquely identifying courses, blocks, and users across the platform. |
| codejail | 474 | Secure sandboxed Python code execution using Linux namespaces (used by CodeResponse and custom graders). |
Development Activity
openedx-platform is actively maintained with multiple commits per day as of April 2026. The project operates through a community governance model:
- Axim Collaborative: Non-profit steward, manages the project roadmap and working groups
- Core Committers: Trusted contributors with merge access; many employed by Open edX providers (OpenCraft, eduNEXT, Edly, etc.)
- OEPs (Open edX Proposals): Architectural decisions documented via the openedx-proposals repo
- BTR (Build-Test-Release) working group: Manages the named release process
- Named release cadence: ~6-month release cycle with LTS support for institutional deployers
Recent development areas (early 2026):
- MongoDB → MySQL migration: The multi-year effort to eliminate the MongoDB
modulestoredependency continues via the new block storage system - MFE consolidation: Merging multiple MFE repos into fewer applications via
frontend-base - Hooks & Filters maturation: More extension points being added to reduce the need for platform forks
- AI integrations: Community contributions adding AI tutor, AI content generation, and assessment assistance features
- Aspects (analytics): ClickHouse-based learning analytics stack replacing the legacy data pipeline
Architecture Comparison: Open edX vs. Competitor LMS Platforms
| Dimension | Open edX | Canvas | Moodle | Sakai |
|---|---|---|---|---|
| Core architecture | Django monolith + IDAs + MFEs | Rails monolith + some microservices | PHP monolith | Java multi-module monolith |
| Primary database | MySQL + (MongoDB being phased out) | PostgreSQL | MySQL/PostgreSQL | MySQL/Oracle |
| Frontend approach | React MFEs (migrating from Mako templates) | React (migrating from CoffeeScript/Backbone) | Vanilla JS + Mustache | Vue.js (new) + Handlebars (legacy) |
| Plugin/extension model | XBlocks + Django plugins + Hooks & Filters | Rails engine plugins | 40+ plugin types, 2,000+ community plugins | Maven module tools |
| License | AGPL-3.0 | AGPL-3.0 | GPL-3.0 | ECL-2.0 |
| Repo count | 100+ (distributed ecosystem) | 1 primary + satellite repos | 1 primary (+ 2,000+ plugin repos) | 1 primary multi-module repo |
| Release model | Named releases every ~6 months | Date-based continuous (SaaS); quarterly (OSS) | Biannual (6-month cycle) | Annual |
Licensing Implications
Open edX (openedx-platform) is licensed AGPL-3.0, the same as Canvas LMS. This means:
- Any modifications deployed as a network service must be open-sourced
- Plugins and XBlocks can use compatible licenses; many commercial XBlocks use proprietary licenses for the business logic while exposing a standards-compliant interface
- Operators who only deploy without modifying the core are not required to publish changes — the copyleft is triggered only by modification + deployment
The AGPL-3.0 license has occasionally deterred enterprise adopters compared to GPL or Apache-licensed alternatives, but the Open edX ecosystem of commercial providers effectively addresses this by offering managed deployments where operators don't need to modify the core.
Hosting Complexity
Open edX is among the most complex of the open-source LMS platforms to self-host:
- Multiple services (LMS, Studio, IDAs, MFEs, Celery workers, Redis, MySQL, Elasticsearch/Meilisearch, MongoDB)
- Significant memory requirements (8GB+ for a minimal production setup)
- Tutor (the official deployment tool) substantially reduces this complexity via Docker Compose and a plugin architecture for adding IDAs and MFEs
- Managed hosting by providers (OpenCraft, eduNEXT, Edly, etc.) is the common path for organizations without dedicated DevOps capacity