Ulmo - Operator/Dev Notes

Ulmo - Operator/Dev Notes

This has been migrated to docs.openedx.org. Please add any additional notes on the PR: https://github.com/openedx/docs.openedx.org/pull/1349

 

The 21st Open edX community release will be named Ulmo. Consult the Open edX Release Schedule 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 Ulmo.  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 PROFILE_IMAGE_BACKEND setting will be replaced with the profile_image storage class defined in the STORAGES setting. For Ulmo it will still fall back to the values set in the PROFILE_IMAGE_BACKEND setting but it is recommended that you migrate to the profile_image setting in STORAGES now that it available. The PROFILE_IMAGE_BACKEND setting could be dropped as early as Verawood.

  • The COURSE_METADATA_EXPORT_STORAGE setting will be replaced with the course_metadata_export storage class defined in the STORAGES setting. For Ulmo it will still fall back to the values set in the COURSE_METADATA_EXPORT_STORAGE setting but it is recommended that you migrate to the course_metadata_export setting in STORAGES now that it available. The COURSE_METADATA_EXPORT_STORAGE setting could be dropped as early as Verawood.

  • The USER_TASKS_ARTIFACT_STORAGE setting is being deprecated in favor of the modern STORAGES dictionary introduced in Django 4.2.

    This update changes the logic to first look for a storage backend defined under STORAGES["user_task_artifacts"]. If not found, it will fall back to the previously supported USER_TASKS_ARTIFACT_STORAGE setting via the optional import_path parameter.

    It is recommended that you migrate to using the user_task_artifacts storage in the STORAGES dictionary. The legacy USER_TASKS_ARTIFACT_STORAGE setting may be removed as early as the Verawood release.

  • The SGA_STORAGE_SETTINGS configuration is being deprecated in favor of the modern STORAGES dictionary introduced in Django 4.2. This update prioritizes the STORAGES["sga_storage"] backend. If not defined, it falls back to the legacy SGA_STORAGE_SETTINGS for backward compatibility. It is recommended to migrate to the STORAGES-based configuration.
    Support for SGA_STORAGE_SETTINGS may be removed as early as the Verawood release.

  • In Credentials, the DEFAULT_FILE_STORAGE and STATICFILES_STORAGE settings are being deprecated in favor of the modern STORAGES dictionary introduced in Django 4.2.

  • The VERIFY_STUDENT["STORAGE_CLASS"] configuration used for the _storage property in the SoftwareSecurePhotoVerification class is being deprecated in favor of the modern STORAGES dictionary introduced in Django 4.2.

    The updated implementation prioritizes the STORAGES["verify_student"] backend. If this is not defined, it falls back to the legacy VERIFY_STUDENT["STORAGE_CLASS"] configuration for backward compatibility.

    Breaking change: Previously, the legacy setting defaulted to storages.backends.s3boto3.S3Boto3Storage. Now, it defaults to the global default storage instead.

  • The SEND_CATALOG_INFO setting has been removed. The behavior is now as if the settings is permanently set to True.

  • A getExternalLinkUrl function is provided in config.js which can be used to override default external links in MFEs. To make use of this function, provide an object that maps default links to custom links. This object should be added to the config object defined in the env.config.[js,jsx,ts,tsx], and must be named externalLinkUrlOverrides.

  • SAML Configuration Version Alignment Update [ @Krish Tyagi ]

A fix has been implemented to ensure that all SAML provider configurations always reference the latest version of the SAML configuration. Previously, some providers continued pointing to outdated versions after updates, causing inconsistencies. With this change, provider configurations will automatically align with the newest SAML configuration version, eliminating the need for manual updates and ensuring consistent authentication behavior.

A new management command is included to verify alignment:
./manage.py lms saml --run-check”

Temporary feature toggle added: ENABLE_SAML_CONFIG_SIGNAL_HANDLERS must be enabled to activate this behavior.

  • There is a change to the session_inactivity_timeout middleware. A new setting, SESSION_ACTIVITY_SAVE_DELAY_SECONDS, has been added with a default value of 15 minutes.
    This new setting modifies how the system handles the SessionInactivityTimeout. It prevents the session ID from changing with every request, which improves efficiency, while still correctly enforcing the session timeout. While this change resolves an existing issue, it's considered a "breaking change" to highlight the fact that the default behavior of the application's session middleware has been altered. The new default is a reasonable starting point, but it's important for to be aware of the change.

    For more context https://github.com/openedx/edx-platform/pull/36896

    Author - @Tarun Tak

  • For Libraries, access control is now represented as explicit, library scoped roles that are evaluated through the AuthZ service. These roles are mapped to permission sets that control what users can do in a given library, centralizing how roles and permissions are defined, stored and enforced, while keeping behavior aligned with the previous release. See <link to product release note>

Deprecations and Removals

  • newrelic as a baseline Python dependency in Django IDAs [@Tim McCormack]

    • Audience: Deployers who use New Relic for Python-based observability, or who have custom IDA code directly referencing the newrelic Python package.

    • Action: If you use New Relic from Python, ensure that you install the newrelic Python package, as it will no longer be installed by default.

    • Nothing else is changing with respect to New Relic support at this time; edx-django-utils continues to support New Relic telemetry (and even defaults to using it, if the package is present). For more context: https://github.com/openedx/public-engineering/issues/360

  • The variable CSRF_TRUSTED_ORIGINS_WITH_SCHEMES, added during the Django 3.2 to 4.2 upgrade, has been completely removed. Operators should replace any use of this setting with CSRF_TRUSTED_ORIGINS.

  • The cs_comments_service has been archived, and all calls to it have been removed from edx-platform. The MongoDB backend for forums is still supported via the new forums app, so no forums data migration is required for this release, but it is highly advised. We will not support serving forums data from MongoDB in Verawood. For more operational and migration details, please see the Administration section of the forum repo README.

  •  

Default Changes for Ulmo

  •  

Analytics

** this will need to be updated once we do the final release (will include paragon 23)

  • Upgrading to Aspects v2.5.0 will give you the latest Aspects functionality with Ulmo. See the upgrade instructions here: How-to Upgrade Aspects.

  • Then run this to update materialized views that have new/removed columns:
    tutor local do dbt --only_changed False -c 'run --full-refresh --select dim_learner_last_response dim_problem_results problem_events dim_subsection_problem_results'

Notes for Release Manager (not for release notes)