Verawood - Operator Release Notes

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_BOOKS setting has been updated to reference the official Open edX documentation. Similarly, the help_tokens.ini file, which is specified in the HELP_TOKENS_INI_FILE setting, was updated in both the LMS and CMS configurations to ensure the paths align with the official Open edX documentation.

  • 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_django migration “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 STORAGES

    • Contributor: Muhammad Arslan Abdul Rauf

    • The edx-val application 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+ STORAGES configuration. The key within the STORAGES config for a custom video transcript location is video_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 STORAGES dict, 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 STORAGES format to ensure forward compatibility.

    • Required Action for Operators:

      • Update your environment configuration:

        • 1. Define the required edx-val storages inside Django’s STORAGES dictionary (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.py or 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-bucket
  • The SERVICE_VARIANT setting is no longer set from the environment

    • The setting will be set to 'cms' in cms/envs/common.py and to 'lms' in lms/envs/common.py regardless of any environment variable set (DEPR).

  • CMS settings ID_VERIFICATION_SUPPORT_LINK, PASSWORD_RESET_SUPPORT_LINK, ACTIVATION_EMAIL_SUPPORT_LINK, and LOGIN_ISSUE_SUPPORT_LINK are now set to the value of the SUPPORT_SITE_LINK setting.

    • Previously they defaulted to '' (PR).

  • The setting USE_L10N was removed since it was removed in Django 5.0 (PR).

  • Notifications send_email_digest management 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_FORM Replaced

    • The REGISTRATION_EXTENSION_FORM setting will stop working starting with the next release. It has been replaced with the PROFILE_EXTENSION_FORM setting.

    • Previously, data was only stored as JSON in the UserProfile meta 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 meta field to your custom model.

        • Perform this migration before activating the new PROFILE_EXTENSION_FORM setting.

    • See https://github.com/openedx/openedx-platform/pull/37119 for more details.

    • Contact: @Bryann Valderrama

Default Changes for Verawood

  • The pdf XBlock is now built into the platform core and installed by default. If you previously installed a third-party pdf implementation 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-party pdf implementation, then follow the steps to replace a preinstalled XBlock with a custom implementation. In either case, the third-party implementation must be removed from the xblock.v1 entrypoint, otherwise you will see an AmbiguousPluginError. 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-platform into 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 in xblocks-contrib

    • The 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

Consolidation of several XBlock packages into xblocks-extra

Notes for Release Manager (not for release notes)