Verawood - Operator Release Notes
The 22nd Open edX community release will be named Verawood. Consult the https://openedx.atlassian.net/wiki/spaces/COMM/pages/3613392957 for details around when the release master branch will be cut and the actual release will occur.
Put stuff here that we have to remember when we start packaging up Verawood. Especially important is information that system installers or operators will need to know. Please include your name when you add an item, so that we can get back to you with questions.
Operational
The
HELP_TOKENS_BOOKSsetting has been updated to reference the official Open edX documentation. Similarly, thehelp_tokens.inifile, which is specified in theHELP_TOKENS_INI_FILEsetting, was updated in both the LMS and CMS configurations to ensure the paths align with the official Open edX documentation.Note: This is a breaking change that many operators may want, but if you wish to retain the original values, you must provide overrides.
Possible failed migration during upgrade: Due to a bug that was present in the last several releases, it was possible for users to create multiple courses with similar course IDs that differed only in capitalization; however such courses would only appear as a single course in most parts of the system, and may not work properly at all. That bug has been fixed, and a new database constraint will prevent that from happening going forward. However, if you have any of these “case duplicate” courses, the
split_modulestore_djangomigration “0004_courseid_unique_ci" will fail with an IntegrityError. If you encounter this, follow these instructions to delete the invalid course record(s), and then you should be able to apply the migration and continue. (Contact: @Braden MacDonald )edx-search Typesense Server Requirement Update
The typesense-python client library was upgraded from 1.x to 2.0.0. This version is only compatible with Typesense Server >= v30.0.
Action required if you use the Typesense search backend (SEARCH_ENGINE = "search.typesense.TypesenseEngine"): upgrade your Typesense server to v30.0 or later before deploying this Open edX release. No action is needed if you use the default Elasticsearch backend.
See https://github.com/openedx/edx-search/pull/254 and the https://github.com/typesense/typesense-python#compatibility for details.
Upgrade/upsell ("notifications") panel from the Learning MFE core has been replaced with a pluggable widget registry system.
Instances using the upgrade panel: Add
SIDEBAR_WIDGETS: [upgradeWidgetConfig]to env.config.jsx.Plugin slot consumers:
Replace NotificationTraySlot / NotificationsDiscussionsSidebarSlot with RightSidebarSlot.
Replace NotificationsDiscussionsTriggerSlot with RightSidebarTriggerSlot.
localStorage: Old notificationStatus.{courseId} keys are not migrated to new key format upgradeWidget.{courseId} starts fresh.
Postgresql is now supported as a backend (for fresh installs only). For more detail see https://docs.openedx.org/en/latest/site_ops/how-tos/use_postgresql.html
Deprecations and Removals
Custom edx-val storage settings deprecated in favor of Django
STORAGESContributor: Muhammad Arslan Abdul Rauf
The
edx-valapplication previously relied on a custom setting (VIDEO_IMAGE_SETTINGS,VIDEO_TRANSCRIPTS_SETTINGS, etc.) to determine storage backends. This behavior is now deprecated in favor of the standard Django 5.2+STORAGESconfiguration. The key within theSTORAGESconfig for a custom video transcript location isvideo_transcripts.See https://github.com/openedx/edx-val/pull/593/files for the code change.
As of Verawood:
edx-val now correctly respects Django’s
STORAGESdict, giving it precedence over legacy per-feature storage settings.Custom edx-val storage settings will continue to function during the Verawood cycle but are officially deprecated and will be removed in a future release.
Operators should migrate their storage configuration to Django’s
STORAGESformat to ensure forward compatibility.
Required Action for Operators:
Update your environment configuration:
1. Define the required edx-val storages inside Django’s
STORAGESdictionary (e.g., for transcripts, videos, and images).2. Remove or stop relying on deprecated edx-val specific storage configuration variables.
3. Review any existing custom overrides in
lms/envs/common.pyor deployment-specific files to ensure compatibility.
NOTE: Failure to migrate before the legacy settings are removed may result in incorrect storage backends being used
Example minimal migration:
STORAGES:
video_transcripts:
BACKEND: storages.backends.s3boto3.S3Boto3Storage
OPTIONS:
bucket_name: your-transcript-bucket
video_image:
BACKEND: storages.backends.s3boto3.S3Boto3Storage
OPTIONS:
bucket_name: your-image-bucketThe
SERVICE_VARIANTsetting is no longer set from the environmentThe setting will be set to
'cms'incms/envs/common.pyand to'lms'inlms/envs/common.pyregardless of any environment variable set (DEPR).
CMS settings
ID_VERIFICATION_SUPPORT_LINK,PASSWORD_RESET_SUPPORT_LINK,ACTIVATION_EMAIL_SUPPORT_LINK, andLOGIN_ISSUE_SUPPORT_LINKare now set to the value of theSUPPORT_SITE_LINKsetting.Previously they defaulted to
''(PR).
The setting
USE_L10Nwas removed since it was removed in Django 5.0 (PR).Notifications
send_email_digestmanagement command deprecated in this PR.The management command still exists but is now a no-op with a deprecation warning.
See documentation on how to change default digest settings
REGISTRATION_EXTENSION_FORMReplacedThe
REGISTRATION_EXTENSION_FORMsetting will stop working starting with the next release. It has been replaced with thePROFILE_EXTENSION_FORMsetting.Previously, data was only stored as JSON in the
UserProfilemeta field. Moving forward, this information will also be stored in the custom model that extends the fields.Action for Operators
To prevent extended user fields from appearing empty or outdated after the update, you may need to:
Write and run a custom data migration script to move existing information from the
metafield to your custom model.Perform this migration before activating the new
PROFILE_EXTENSION_FORMsetting.
See https://github.com/openedx/openedx-platform/pull/37119 for more details.
Contact: @Bryann Valderrama
Default Changes for Verawood
The
pdfXBlock is now built into the platform core and installed by default. If you previously installed a third-partypdfimplementation such to open-craft’s xblock-pdf , then the built-in implementation will likely work as a drop-in replacement, so you can uninstall the third-party implementation. However, if you’d rather continue using a third-partypdfimplementation, then follow the steps to replace a preinstalled XBlock with a custom implementation. In either case, the third-party implementation must be removed from thexblock.v1entrypoint, otherwise you will see anAmbiguousPluginError. Implemented by @Fox Piacenti (Unlicensed) with support from @Kyle McCormick .Built-In blocks code has been extracted out to xblock-contrib
Aximprovements team has extracted several previously built-in XBlocks from
openedx-platforminto the shared xblock-contrib repository.In Verawood, the extracted implementations are used by default in
openedx-platform, and the legacy “built-in” block code is considered deprecated.If you encounter problems with the extracted blocks, you can temporarily revert to the built-in implementations using the feature flags in openedx/envs/common.py, following the pattern
USE_EXTRACTED_*_BLOCK(for example,USE_EXTRACTED_VIDEO_BLOCK).Starting in Willow, the deprecated built-in implementations are planned to be removed from
openedx-platform, leaving only the extracted variants inxblocks-contribThe following blocks have been extracted and now live in xblock-contrib:
HTML Block
Video Block
Problem Block
Word Cloud Block
Annotatable Block
LTI Block
Poll Block
Aspects Analytics
Upgrading to Aspects v4.0.0 will give you the latest Aspects functionality including Superset 6.0! See the upgrade instructions here: Upgrade Aspects.
This is a BREAKING CHANGE upgrade. Aspects will now use Python v3.12 which was introduced in the Tutor Verawood release.
Removal of Temporary SAML Toggle
The SAML feature toggle referenced here no longer exists. Any configuration setting this toggle has be removed (see fix: removal of temporary saml toggle by ktyagiapphelix2u · Pull Request #37651 · openedx/edx-platform).
Consolidation of several XBlock packages into xblocks-extra
While working on the epic the following standalone XBlock packages have been consolidated into xblocks-extra. Standalone repositories have already been marked deprecated.
Operators who have any of these packages installed should migrate to xblocks-extra.
Please follow the migration guideline
Furthermore: The following Open edX forked repositories have been archived and are no longer
maintained. Operators should refer to their respective upstream repositories for continued
support: