-
Notifications
You must be signed in to change notification settings - Fork 4.2k
Description
RFC Start Date
2026-01-27
Target Plan Accepted Date
2026-02-27
Target Transition Unblocked Date
2026-01-15 (Ulmo)
Earliest Breaking Changes Unblocked Date
For operators following master, the Legacy Libraries (V1) environment will become inaccessible on 2026-05-01, shortly after the Willow code freeze.
Earliest Open edX Named Release with Breaking Changes
Final named released with Legacy Libraries (V1) authoring environment: Verawood, to be released ~2026-06-09.
Final named release where legacy content can be migrated to Content Libraries (V2) environment: Xylon, to be released ~2027-06-09.
Rationale
Maintaining legacy (Django-built) frontend features is costly for maintenance and development of new features, so we are in the process of removing all legacy Studio pages, including the ones used for Legacy Libraries (V1). Furthermore, maintaining both the V1 and V2 environments on the backend adds maintenance burden and complexity. Legacy Libraries (V1) are implemented in a way that complicates the Course delivery subsystem and has been the source of multiple bugs over the years. Finally, removing Legacy Libraries (V1) is in the critical path of eventually removing MongoDB from the set of Open edX infrastructure dependencies.
As of Ulmo, all features of Legacy Libraries (V1) have been completely replicated within Content Libraries (V2). The latter supports all features that the former supported, including problem editing, randomization, advanced Python-evaluated problem support, and library backup+restore. Furthermore, Content Libraries (V2) supports libraries of significantly larger sizes, has more powerful organization options, supports more component types, lets content be re-used in more ways, and has better workflows for in-course content synchronization. There is now a user-friendly content migration workflow to this new environment.
Removal
After the Verawood cutoff, we will remove:
- All pages under "Legacy Libraries" (V1) in Studio, except the migration workflow
- All parts of the Randomized Content Block (V1), except those parts which are necessary to render existing blocks and offer their migration into Problem Banks (V2)
As part of a future DEPR ticket, after the Xylon cutoff:
- All backend code supporting Legacy Libraries (V1) storage and rendering
- All frontend and backend code supporting their migration to the Content Libraries (V2) environment
Replacement
As of Sumac, the Content Libraries (V2) environment is available out-of-the-box for all operators running Tutor. As of Ulmo, Legacy Library (V1) authors can migrate their content within the Studio UI.
If you are not running Tutor, Content Libraries (V2) environment requires some new infrastructure and configuration.
- Meilisearch, configured with Django settings
MEILISEARCH_URLandMEILISEARCH_API_KEY. - A private media storage backend, configured with Django setting
OPENEDX_LEARNING['MEDIA'].
See the Sumac operator release notes for details.
Deprecation
In Ulmo, authors are prompted to migrate their Legacy Libraries (V1) into Content Libraries (V2).
Starting in Verawood, there will be a warning banner above Legacy Libraries (V1). openedx/frontend-app-authoring#2563
Starting in Willow, operators may be actively warned that they must soon migrate Legacy Libraries (V1) or that they will lose access to them in the Xylon release.
Transition Unblocked Tasks
Transition is already unblocked as of Ulmo.
Appendix: Detailed Timeline
Please note that "(V1)" and "(V2)" are added to disambiguate.; you will not see those terms in the Studio UI.
Prior Releases
- Eucalyptus (2015):
- V1 Status: Content Libraries (V1) are introduced. V1 content can only be re-used via Randomized Content Blocks (V1), which randomly show content selected from the entire library.
- several releases go by...
- Sumac (2024):
- V2 Status: Content Libraries Beta (V2) are introduced, enabled by default on all sites. V2 has a modernized UI, can support significantly larger libraries, and supports powerful organizational features. V2 content can be re-used in courses directly. Their content can also be re-used via Problem Banks (V2), which randomly show content from an author-selected subset of the library.
- V1 Status: Legacy Libraries (V1) is the new name for Content Libraries (V1), and the Legacy Library block (V1) is the new name Randomized Content Block (V1).
- Teak (2025):
- V2 Status: Content Libraries Beta (V2) receives several enhancements, including Unit support and more Problem types. More sophisticated support for course-local overrides and update confirmation are added.
- V1 Status: No changes.
- Ulmo (Early 2026):
- V2 Status: Content Libraries Beta (V2) now supports all Legacy Libraries (V1) features, including Backup+Restore and Python-evaluated problems.
- V1 Status There is now a migration workflow from Legacy Libraries (V1) to Content Libraries Beta (V2), available via UI, Django Admin, and REST API. Randomized Content Blocks (V1) can be converted into Problem Banks (V2)
Upcoming Releases
- Verawood (Mid 2026):
- V2 Status: Content Libraries (V2) is the new name for Content Libraries Beta (V2).
- V1 Status: Legacy Libraries (V1) interfaces will contain deprecation warnings This is the final release supporting Legacy Libraries (V1).
- Willow (Late 2026):
- V2 Status: Content Libraries (V2) is the only library authoring environment.
- V1 Status: Legacy Libraries (V1) can no longer be created, viewed, or edited. However, they can still be migrated to Content Libraries (V2). Randomized Content Blocks (V1) can no longer be created. Existing Randomized Content Blocks (V1) will continue to work indefinitely, but cannot receive updates until they are converted to Problem Banks (V2).
- Xylon (Mid 2027) or later:
- V2 Status: No changes.
- V1 Status: Legacy Libraries (V1) can no longer be migrated on-platform. Course references to un-migrated V1 content will continue working, but they will be unable to receive updates with new content.
Feature Removal Tasks
- the legacy library listing
- the legacy library editor
- the legacy interface for configuring V1 (randomized) library content blocks
- the legacy library settings pages
- The parts of CMS which support V1 libraries
- The parts of modulestore which support V1 libraries
-
studio_post_duplicateRemovestudio_post_duplicateXBlock hook method #35192 - The various parts of the platform that are special-cased the deal with
library_root - Several other things -- TBD
Metadata
Metadata
Assignees
Labels
Type
Projects
Status