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_BACKENDsetting will be replaced with theprofile_imagestorage class defined in theSTORAGESsetting. For Ulmo it will still fall back to the values set in thePROFILE_IMAGE_BACKENDsetting but it is recommended that you migrate to theprofile_imagesetting inSTORAGESnow that it available. ThePROFILE_IMAGE_BACKENDsetting could be dropped as early as Verawood.The
COURSE_METADATA_EXPORT_STORAGEsetting will be replaced with thecourse_metadata_exportstorage class defined in theSTORAGESsetting. For Ulmo it will still fall back to the values set in theCOURSE_METADATA_EXPORT_STORAGEsetting but it is recommended that you migrate to thecourse_metadata_exportsetting inSTORAGESnow that it available. TheCOURSE_METADATA_EXPORT_STORAGEsetting could be dropped as early as Verawood.The
USER_TASKS_ARTIFACT_STORAGEsetting is being deprecated in favor of the modernSTORAGESdictionary 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 supportedUSER_TASKS_ARTIFACT_STORAGEsetting via the optionalimport_pathparameter.It is recommended that you migrate to using the
user_task_artifactsstorage in theSTORAGESdictionary. The legacyUSER_TASKS_ARTIFACT_STORAGEsetting may be removed as early as the Verawood release.The
SGA_STORAGE_SETTINGSconfiguration is being deprecated in favor of the modernSTORAGESdictionary introduced in Django 4.2. This update prioritizes theSTORAGES["sga_storage"]backend. If not defined, it falls back to the legacySGA_STORAGE_SETTINGSfor backward compatibility. It is recommended to migrate to theSTORAGES-based configuration.
Support forSGA_STORAGE_SETTINGSmay be removed as early as the Verawood release.In Credentials, the
DEFAULT_FILE_STORAGEandSTATICFILES_STORAGEsettings are being deprecated in favor of the modernSTORAGESdictionary introduced in Django 4.2.The
VERIFY_STUDENT["STORAGE_CLASS"]configuration used for the_storageproperty in theSoftwareSecurePhotoVerificationclass is being deprecated in favor of the modernSTORAGESdictionary introduced in Django 4.2.The updated implementation prioritizes the
STORAGES["verify_student"]backend. If this is not defined, it falls back to the legacyVERIFY_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_INFOsetting has been removed. The behavior is now as if the settings is permanently set toTrue.A
getExternalLinkUrlfunction is provided inconfig.jswhich 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 theconfigobject defined in theenv.config.[js,jsx,ts,tsx], and must be namedexternalLinkUrlOverrides.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.
For More Context:
https://github.com/openedx/edx-platform/pull/36954
https://github.com/openedx/edx-platform/pull/37294
https://github.com/openedx/edx-platform/pull/37377
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
newrelicas 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
newrelicPython package.Action: If you use New Relic from Python, ensure that you install the
newrelicPython 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 withCSRF_TRUSTED_ORIGINS.The
cs_comments_servicehas been archived, and all calls to it have been removed fromedx-platform. The MongoDB backend for forums is still supported via the newforumsapp, 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'