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-learningbackend, 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 infrontend-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-learningDjango 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
Relevant Repositories
| Repository | Role in This Feature | Activity Level | Notes |
|---|---|---|---|
| openedx/frontend-app-authoring | Library UI (v1 and v2) | High | Authoring interface |
| openedx/openedx-learning | Libraries v2 backend | High | New content model |
| openedx/openedx-platform | Libraries v1, LibraryContentBlock XBlock | High | Legacy library system |
Recent Changes
- Libraries v2 development actively ongoing in
openedx-learning frontend-app-authoringadding v2 library management UI
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
| Year | Milestone | Teams / People Involved |
|---|---|---|
| ~2016 | Libraries v1 ("Content Libraries") introduced | Unknown |
| ~2021–2022 | Libraries v2 design and openedx-learning development begins | Unknown |
| ~2023–2025 | Libraries v2 progressively released | Unknown |
People Who Shaped This Area
- Engineering: Unknown — open question for interview
- Product: Unknown — open question for interview
- Design: Unknown — open question for interview
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-learningproject'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?