Flexible Content Libraries
Overview
Flexible Content Libraries allow course authors to create reusable content blocks that can be referenced across multiple courses — useful for shared questions, standardized content, and random problem selection. Libraries decouple content authoring from course structure.
The platform currently has two library implementations:
• Libraries v1: The original library system built on the Studio monolith
• Libraries v2: A complete rewrite on the `openedx-learning` backend, offering better versioning, publishing workflows, and hierarchical organization
Current State (2026)
• Libraries v1: Still supported; allows creating question banks and referencing blocks in courses via a "Randomized Content Block"
• Libraries v2: New implementation on `openedx-learning`; available in `frontend-app-authoring`; better component model and publishing workflow
• UI: Both v1 and v2 library management accessible from `frontend-app-authoring`
• Randomization: Libraries are the primary mechanism for randomized assessment — courses draw random blocks from a library for each learner
Architecture
• Libraries v1: Backed by MongoDB (same as course content); managed via Studio CMS in `edx-platform`
• Libraries v2: Backed by `openedx-learning` Django service (relational DB); new content component model with versioning and publishing states
• Course reference: Courses reference library blocks via "library content block" XBlock (`LibraryContentBlock`)
• Publishing: Libraries v2 introduces explicit publish states (draft/published) for each component
History
Origin
• Year introduced: ~2016 (Libraries v1 introduced as "Content Libraries" feature)
• Initial implementation: Studio-based library editor storing content in MongoDB, same storage as course content
• Context: Instructors needed reusable question banks for randomized assessments; libraries solved the copy-paste problem
Key Milestones
Libraries v1 ("Content Libraries") introduced
Libraries v2 design and `openedx-learning` development begins
Libraries v2 progressively released
Open Questions
- ?When were Content Libraries first introduced and what was the product motivation?
- ?What limitations of v1 drove the decision to rewrite as v2?
- ?What is the `openedx-learning` project's full scope beyond libraries?
- ?How does randomization from libraries work technically at the learner level?
- ?What are the most common use cases for content libraries in production deployments?