Lilac
The 12th Open edX community release will be named Lilac.
Put stuff here that we have to remember when we start packaging up for Lilac. 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.
Schedule
The open-release/lilac.master branches were created on April 9th 2021.
The official release is scheduled to be June 9th 2021.
Operational
Tracking metrics based on the anonymized session ID will experience a discontinuity or other anomaly at the time of deployment, as the anonymized IDs will change. [PR] This will likely appear as if everyone logged out and back in again, although only from a metrics perspective. In a green-blue deployment scenario, it may briefly appear as if there are twice as many sessions active. (@Tim McCormack)
Use of edx-proctoring now requires a setting
PROCTORING_USER_OBFUSCATION_KEY
– it should be initially set to the same value asSECRET_KEY
, in both LMS and Studio. This allows it to be changed independently, although there is not yet a way to rotate it without breaking integration. (@Tim McCormack)Upgraded to mongo 4(point-of-contact: @Cory Lee (Deactivated) )
No changes were needed for us to move from mongo 3 to mongo 4 , but mongo 4 features may be used by edX developers going forward.
Import unqualified packages from
lms/djangoapps
,cms/djangoapps
, orcommon/djangoapps
is no longer supported. Doing so will cause instances ofimport_shims.warn.DeprecatedEdxPlatformImportError
to be raised. See https://github.com/edx/edx-platform/blob/master/docs/decisions/0007-sys-path-modification-removal.rst for details and context.LMS/Studio: Changes to edx-organizations (point-of-contact @Kyle McCormick (Deactivated) )
Uniqueness constraint added to
Organization.short_name
This was added in edx-organizations 6.0.0. See release notes for details.
For instances that did not enable
FEATURES['ORGANIZATIONS_APP']
, this is a no-opFor instances the DID enable
FEATURES['ORGANIZATIONS_APP']
, anyOrganizations
with conflictingshort_names
need to be removed (can be done via Django admin), else the migration for edx-organizations 6.0.0 will fail to apply.
Organizations feature globally enabled for all LMS and Studio instances.
See https://github.com/edx/edx-organizations/blob/master/docs/decisions/0001-phase-in-db-backed-organizations-to-all.rst for reasoning and details.
If you don’t care about this change, then it shouldn’t affect you, although we still recommend running the backfill command (see below).
Added
ORGANIZATIONS_AUTOCREATE
Django setting for Studio.Defaults to
True
.When
True
, creating a new course run or content library with an unrecognized org slug (that is, “edX” incourse-v1:edX+DemoX+2T2020
will silently auto-create an organization in the background.When
False
, creating a new course run or content library with an unrecognized org slug will raise an error. This is helpful if you wish to restrict the set of organizations under which course runs and content libraries may be created.
The
FEATURES['ORGANIZATIONS_APP']
is no longer supported.The Organization and OrganizationCourse model are now available on all instances.
If you previously enabled
FEATURES['ORGANIZATIONS_APP']
, then you should override the Studio settingORGANIZATIONS_AUTOCREATE
toFalse
when upgrading to Lilac to achieve the same functionality.
Added Studio management command:
./manage.py cms backfill_orgs_and_org_courses
This back-populates the
organizations_organization
andorganizations_organizationcourse
tables, for Open edX instances that did not previously enableFEATURES['ORGANIZATIONS_APP']
.It is not critical to run this for the Lilac upgrade, since no features depend on these tables being populated yet.
However, future releases may make use of the data in these tables; hence, it is best to run the backfill now.
The
sysadmin dashboard
is no longer supported (point-of-contact @Hamza Farooq).The feature has been deprecated according to DEPR-118, Its ADR can be found at ADR-DEPR-118 and related discussions at Discussion-DEPR-118.
The related feature flag
FEATURES['ENABLE_SYSADMIN_DASHBOARD']
is also removed.A separate pluggable app named
edx-sysadmin
has been developed at https://github.com/mitodl/edx-sysadmin and can be used as an alternative tosysadmin dashboard
.
Feature Changes
The Learning Micro-Frontend (MFE) may be installed for opt-in usage (@Kyle McCormick (Deactivated)).
By default, the course experience is still run in the legacy LMS templated frontend, so this should not affect the out-of-the-box Lilac experience.
However, edX expects that the Learning MFE will be the default course experience in Maple, with the legacy course experience candidate for removal in the N* release (https://openedx.atlassian.net/browse/DEPR-109 and https://openedx.atlassian.net/browse/DEPR-123). So, we encourage adventurous operators to install and try out the MFE in Lilac.
If the Learning MFE is installed using the MFE Deployer Ansible role (I lack the details on what entails) then certain features can be opted in to the Micro-Frontend, as noted below.
These LMS CourseWaffleFlags can be toggled on (globally, per-user, or per-course) to switch certain features over the Learning MFE:
courseware.courseware_mfe
: Enable to host courseware (ie, the learning sequence experience) in the MFE.courseware.microfrontend_course_team_preview
: Enable to show global and course-level staff members the ability to preview courseware in the MFE. Does not affect learners.course_home.course_home_mfe
andcourse_home.course_home_mfe.1
: Enable both of these in conjunction with one or more of the following (contact @Michael Terry (Deactivated) or @Jason Myatt (Deactivated) for details):course_home.course_home_mfe_dates_tab
: Display the “Dates” course tab in the MFE.course_home.course_home_mfe_outline_tab
: Display the course outline (the target of the “Course” course tab) in the MFE.course_home.course_home_mfe_progress_tab
: Display the “Progress” course tab in the MFE.
Switched from Elasticsearch 1 to Elasticsearch 7 across Open edX. This may require some syntax changes for custom scripts that used search APIs. (@Michael Terry (Deactivated) )
Please change queries that used
__not
to__exclude
Please properly URL-encode any plus signs in query URLs (like in course run key parameters) to %2b. Our Elasticsearch 7 implementation is more strict in that regard.
Please change queries against course-discovery that used
pacing
topacing_type
Xblock URL token signing can now be migrated to use a new multi-key mechanism rather than being tied to
SECRET_KEY
. It is recommended that you perform this migration, as it permits easier rotation ofSECRET_KEY
. (@Tim McCormack)Various bug fixes and updates around course certificate generation (@crice (Deactivated))
In an effort to be more inclusive, code referencing the course CertificateWhitelist model is being updated to instead refer to a Certificate Allowlist. The model itself has not yet been renamed.
Temporary CourseWaffleFlag added to control access to updated behavior of the CertificateWhitelist (aka Certificate Allowlist)
Temporary CourseWaffleFlag added to control access to updated behavior of the course certificates
The management command named create_fake_cert has been removed. The Certificate Allowlist should be used in its place.
The management command named gen_cert_report has been removed. To view the status of generated course certificates, query the certificates_generatedcertificate database table.
A user can no longer be added to both the Certificate Allowlist (meaning the user should be granted certificate) and the Certificate Invalidation list (meaning the user should not be granted a certificate) for the same course run.
Removal of the allow_certificate field on the UserProfile model has begun (https://openedx.atlassian.net/browse/DEPR-140)
Added a new export-course-metadata-to-storage feature. In order to use it set COURSE_METADATA_EXPORT_BUCKET and COURSE_METADATA_EXPORT_STORAGE. Useful for external services you might have that want to scrape course data.' (@Matthew Piatetsky (Deactivated))
In
common.djangoapps.student.models
, thesave
parameter is deprecated for functionsanonymous_id_for_user
andunique_id_for_user
, and these functions will always save generated IDs to the database. This allows future decoupling of ID generation fromSECRET_KEY
. Including the parameter will result in a DeprecationWarning; after Lilac we plan to remove the parameter (which will be a separate breaking change – DEPR-148). (@Tim McCormack)
Deprecations and Removals
Deprecations
Removals