[Product Proposal] Phase 1: Modular Learning Paths
See Github ticket. Please provide feedback before Nov 3, 2025.
Join the discussion on Slack #modular-content-delivery
TL;DR Summary
We propose a foundational implementation of Learning Paths in Open edX. This will not be a full product, but a modular, plugin-ready sequencing architecture that supports courses as the first learning item type. It provides the extensible base needed for future capabilities such as CBE alignment, flexible authoring tools, and integrated credentialing.
This phase will adapt and refactor an existing HMS-funded implementation so it aligns with the Open edX community's long-term architecture goals.
We are using the name Learning Paths for now, but future UI will support configurable terminology (e.g. Path, Journey, Program).
Overview
A Learning Path is a curated, trackable sequence of learning items (courses, library components, assessments, and external tools) designed to guide learners toward specific skills, competencies, or outcomes. Items can be ordered, gated by prerequisites, and tracked for progress and completion.
Learning Paths also support Learning Path Runs, similar to how courses have course runs. Each Learning Path run contains course keys, so it always points to the correct course run, but does not manage course content itself. When a course is updated and its course key stays the same, those updates automatically apply to the Learning Path Run. When a new course run is introduced, a new Learning Path Run should be created if instructors want to ensure that learners keep their existing completion records and grades intact.
This proposal defines the backend foundation for Learning Paths, not a full-featured product or UI. We are building for modularity and interoperability, so that advanced use cases like competency-based education (CBE), microcredentials, branching logic, and custom credentialing can be added later through plugins or follow-up phases.
What Phase 1 is:
A transition from HMS-funded work to an upstream-ready foundation
A learning context–based abstraction (not course-bound)
A backend that supports plugin-driven growth for multiple future use cases
A path to higher-value features without re-architecture
Why we’re building on the HMS code:
Several comments questioned whether the current HMS implementation was too “course-coupled” to be reused. That’s a valid concern, and it’s exactly why this proposal includes architectural rework. But discarding the HMS code entirely would be wasteful. It contains useful logic that aligns with educator needs and gives us a head start on validation. Our approach is to retain the valuable structure, while abstracting away the course dependencies and aligning with the community’s long-term modular vision.
This is not about preserving legacy, it’s about evolving solid groundwork into a shared foundation.
What does the future hold?
Studio authoring experience for Learning Paths
Learner-facing experience for Learning Paths
Prerequisites, electives, and conditional sequencing (“any X of Y”)
Microcredentials and program-level recognition
Deeper RBAC for path-specific instructor roles
Extensions for mastery tracking and CBE workflows
Links to the HMS implementation
Problem
The platform lacks native support for flexible learning progression that spans multiple courses.
Institutions have independently built their own solutions, creating fragmentation, limiting adoption, and increasing maintenance cost.
Use Cases
These use cases reflect the functionality being delivered in Phase 1 of the MVP. Pathways will be managed through Django Admin interfaces for now, with frontend author and learner work to follow in Phase 2.
As a Platform Administrator…
I want to create and manage learning paths from existing courses so that learners can follow a curated journey.
I want to define whether courses in a learning path can be completed in any order. (Note: In Phase 1, only “any order” sequencing is supported. “Set order” logic can be added in a future iteration.)
I want to enroll learners in learning paths so they can access learning content.
I want to view a catalogue of all learning paths in the Django Admin (for Phase 1 MVP) so I can manage each learning path.
I want to bulk-enroll learners into a Learning Path and its associated courses via the API.
I want to create Learning Path Runs so I can offer multiple versions of the same learning path over time, without disrupting the progress or grades of learners already enrolled.
I want course content updates to automatically apply within a Learning Path Run when the course key stays the same, to minimise administrative friction for small improvements.
I want to create a new Learning Path Run when a new course run is available, so new learners can start the updated version, while existing learners continue in the original run with their progress and grades protected.
I want to archive a learning path while still maintaining credential eligibility, so learners can receive certificates even if a path is no longer enrollable.
I want to edit learning path details (such as the name, description, item order, and visibility) so I can keep the overall path accurate and relevant. (Note: The details of individual learning items (the course in this case) must still be edited at the source level, e.g. within the course itself.)
I want to manage user access (add/remove/enable/disable) so that participation stays up to date.
I want to track progress across learners and paths so I can monitor completion rates.
I want to download learning path credentials or certificates as proof of completion, so I can provide learners with verifiable recognition for their progress. For MVP: Basic support depends on integration with the Learning Credentials plugin, which is under separate community review.
As a Course Author…
In Phase 1, course authors will not interact directly with Learning Paths via Studio. Their use cases will be supported in Phase 2 when a dedicated UI is implemented. For now, all authoring and administrative functionality is handled through the Django Admin by Platform Administrators.
As a Learner…
In Phase 1, learners will not interact with Learning Paths directly. However, the backend will be built to support the following learner use cases, enabling the eventual implementation of a learner-facing UI in Phase 2.
I want to browse learning paths that I have access to, so I can choose which ones to follow.
I want to view learning path details (title, description, estimated time), so I can decide if it fits my goals.
I want to see the list of courses in a learning path, so I can understand the scope of the sequence.
I want to complete courses in any order, so I can follow a flexible learning experience.
I want to track my progress across each course and the overall learning path through a status indicator (e.g. Not Started, In Progress, Completed), so I can keep track of where I am.
I want my progress and grades to stay accurate and untouched when new versions of a learning path are released, so I can complete the version I started with confidence.
I want to receive a certificate or credential upon completing a learning path, if one is issued.
Proposed Solution and Implementation Plan
We do not intend to upstream the HMS implementation “as-is.” Instead, Phase 1 evolves the HMS-funded work into an upstream-ready, modular, platform-integrated backend foundation for Learning Paths, supporting full courses as the first learning item type and enabling future learner- and author-facing tools.
This work is split into two sub-phases. Funding is required for both discovery and implementation.
Phase 1.1: Technical Discovery
Confirm architectural alignment with community needs
Identify gaps between HMS code and MVP requirements
Scope refactors and new logic
Surface major risks and refine estimates
Phase 1.2: Architectural Rework (Funding Required)
Backend-only Architecture
Refactor and extend the backend into a reusable implementation supporting MVP use cases:
A generalised learning path model (using the “learning context” abstraction)
Django Admin and APIs for creating Learning Paths and Learning Path Runs, managing enrollment, and controlling access.
Basic sequencing (courses can be completed in any order; prerequisites and other sequencing rules will follow in a future iteration once the data model is established.)
Progress tracking and completion across courses
Path-completion triggers via the Learning Credentials plugin
Modular and Extensible Structure
This phase decouples sequencing logic from course containers and implements it around generic learning contexts, laying the groundwork for future additions like:
Course sections or units
Library content
Rule-based sequencing (e.g. “any 2 of 3”)
Program-level credentials
RBAC and tagging extensions
These are intentionally out of scope for Phase 1, to keep it small and manageable, but designed for in the foundation.
Code refactor and reuse plan:
Reuse validated logic from the HMS implementation (already in real-world use)
Replace course-coupled assumptions with generalised models
Align with upstream standards and plugin strategies
Architectural Goals
Upstream-ready (aligned with openedx repositories and opaque-keys)
Plugin-ready, allowing MFEs and external tools to interact with Learning Paths without tight coupling
Future-proof, so we can later support library content, microcredentials, sequencing logic, and more
Phase 1 delivers the foundation, not the full house. It ensures we can expand responsibly, without rewriting core architecture.
ERD envisioning future architecture:
This will be refined during Phase 1.
Other Approaches Considered
Upstream HMS code as-is: Not feasible. The current implementation is course-coupled and does not align with the community’s modular architecture vision.
Start from scratch: Discards existing work and slows progress toward validation and adoption.
Competitive Research
Canvas supports program-level outcomes but keeps them tightly coupled to courses.
Coursera enables Specialisations made up of modules and courses but has limited flexibility beyond predefined structures.
D2L Brightspace allows outcomes to be attached and surfaced at multiple levels (programs, courses, activities), adapting to institutional structures.
Moodle requires plugins for more advanced sequencing and competency workflows.
Open edX can differentiate through openness, extensibility, and learner-centred flexibility, especially in how learning paths and outcomes evolve over time.
Funding status
Funding will be required for architecture alignment (to be scoped)
Next steps
Secure Funding for Phase 1
Technical Discovery
Phase 1 Implementation
Parallel Proposal Development
Phase 2a: Studio authoring UI
Phase 2b: Learner-facing UI