Course Creation
Overview
Course Creation covers the tools instructional designers and content authors use to build and publish individual courses — the course outline editor, unit editing interface, course settings, and the OLX-based content format. Studio is Open edX's course authoring environment and one of its most significant differentiators from competing LMS platforms.
The modern Studio experience is delivered by frontend-app-authoring (a React MFE), which has been progressively replacing the Django-rendered Studio since approximately 2022.
Split from v1.0. This file was created in v1.1 by splitting Course & Pathway Creation (archived). Pathway-specific authoring is now covered in Pathway Creation.
Current State (2026)
- Course outline:
frontend-app-authoringMFE provides the course outline with drag-and-drop section/subsection/unit organization - Unit editor: The unit editing page in
frontend-app-authoringreplaces the legacy Studio unit editor - Settings: Course dates, grading policy, and advanced settings migrating to MFE; some still in Django-rendered Studio
- OLX format: All course content stored as Open Learning XML (OLX) — XML + HTML + assets in a tarball
- Import/Export: Courses exportable as
.tar.gzOLX archives; importable between Open edX instances - XBlock content: All in-course content blocks — text, video, problems — are authored as XBlocks in the unit editor
Architecture
- Frontend:
frontend-app-authoringcommunicates with Studio (CMS) backend APIs inedx-platform - Backend: Studio (
cms/inedx-platform) is a Django application with its own database; shares MongoDB with LMS for course structure - Content storage: Course structure stored in MongoDB; assets stored in GridFS or S3
- Publishing: Authoring changes published from Studio to LMS via a publish signal; not real-time
- OLX: The canonical on-disk format; import/export uses tarball extraction/compression
Relevant Repositories
| Repository | Role in This Feature | Activity Level | Notes |
|---|---|---|---|
| openedx/frontend-app-authoring | Studio MFE: outline, units, settings | High | Primary authoring frontend |
| openedx/openedx-platform | Studio/CMS backend: course structure, OLX, assets | High | cms/ directory |
| openedx/olxcleaner | OLX validation and error checking tool | Low | Dev/migration tool |
| openedx/cc2olx | Common Cartridge to OLX converter | Low | Content migration tool |
| openedx/modular-learning | Experimental modular course structure | Low | Research/prototype |
Recent Changes
frontend-app-authoringprogressively replacing Django Studio pages- Unit editor migration from legacy to MFE
History
Origin
- Year introduced: 2012 (Studio launched alongside the LMS as edX's course creation tool)
- Initial implementation: Django-rendered web application (separate from LMS); authors accessed at
studio.subdomain - Context: Studio was a key innovation — a browser-based course editor for non-technical instructors; replaced earlier command-line or file-based course authoring
Key Milestones
| Year | Milestone | Teams / People Involved |
|---|---|---|
| 2012 | Studio (CMS) launched as Django web app | Unknown |
| 2013 | Open sourced along with LMS | Unknown |
| ~2022 | frontend-app-authoring MFE development begins | Unknown |
| ~2023–2025 | Progressive Studio → MFE migration page by page | 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
- [ ] Who designed Studio and what were the original authoring principles?
- [ ] Why was Studio built as a separate Django app rather than integrated into the LMS?
- [ ] What was the original course outline UX and how has it evolved?
- [ ] When did the decision to migrate Studio to an MFE happen and who drove it?
- [ ] What are the biggest usability challenges that instructors report with course creation?
- [ ] How does the OLX format constrain or enable course authoring compared to other platforms?