Open edX Lilac Release#
These are the release notes for the Lilac release, the 12th community release of the Open edX Platform, spanning changes from November 12 2020 to April 9 2021. You can also review details about earlier releases or learn more about the Open edX Platform.
Learners can submit rich text responses
Grading status message
Allow viewing ORA steps after peer review
See the Authoring Experience section below for more ORA enhancements
The Account MFE is enabled by default and provides private user settings UIs, including:
Account settings page
IDV (Identity Verification)
The Checkout MFE is enabled by default. Prior checkout UIs may not be PCI compliant.
The Learning MFE is not enabled by default, because theming and internationalizations support is incomplete. However, we expect that this is the last named release to support the Legacy courseware frontend.
If the Learning MFE is installed using the MFE Deployer Ansible role then certain features can be opted in to the micro-frontend. 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 : Enable in conjunction with one or more of the following:
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.
Course Dates & Milestones#
When a learner reaches the end of the course, they will see a new navigation button directing them to “Complete the course” if they’ve passed or completed an audit course. The new Course Completion page also provides clarity for common learner questions - Did I complete the course? Did I achieve a certificate? Am I still eligible to upgrade?
The 3-day Streak Milestone is live and celebrates learners who engage with their course on 3 consecutive days. It also provides normative insights into how learners’ behavior connects to successful course outcomes. (TBD Image)
See https://edx.readthedocs.io/projects/edx-platform-technical/en/latest/featuretoggles.html#featuretoggle-FEATURES[‘ENABLE_MILESTONES_APP’] for information on how to turn on and configure these Milestones features.
The fonts, text and colors have been updated to match the rebrand, giving users a consistent cross platform experience.
Mobile learners can now understand the benefits of the upgrade option, especially when they encounter locked content.
Learners can now complete ORAs in their mobile devices without having to leave the application.
Learners can now complete Drag and Drop assessments on their mobile devices without having to leave the application. (iOS only)
When learners open the app, they are asked permission to enable notifications. Using firebase, notifications can be sent to all mobile app learners who have their notifications enabled.
Learners can now see green checkmarks next to the subsections and components in the course and section outline pages. (iOS only)
A resume button, similar to the one in web, is now available in the mobile application. When learners click on the resume button, they will be navigated to the component after the last completed one. The state of this resume button syncs across web and mobile. In other words, if a component is completed on web, the user can use the mobile application to resume to the next incomplete component.
Learners will not see a celebratory modal, similar to web, when they complete their first section.
Previously, the links to assignments shown in the course dates page in the app took learners to the mobile browser. Now, they are navigated directly to that component in the mobile application, removing the need to re-login to access the assignment.
Special Exams Experience#
Proctortrack Onboarding UX Improvements: Based on learner feedback, we’ve added new messaging and entrance locations to the Proctortrack onboarding experience to make the process more clear. (TBD image)
An index was added to the
courseware_studentmodule table. This can be a VERY EXPENSIVE MIGRATION which may take hours or days to run depending on size. Depending on your database, it may also lock this table, causing courseware to be non-functional during that time.
If you want to run this migration manually in a more controlled way (separate from your release pipeline), the SQL needed is:
CREATE INDEX `courseware_stats` ON `courseware_studentmodule` (`module_id`, `grade`, `student_id`);
You can then fake the migration.
Course Upsell Messaging and Payment#
Reduce PCI compliance burden by replacing checkout fields which collect relevant PII data with Cybersource hosted fields. This way we do not collect and sensitive information and do not have to
Allows setting default currency from environment
Get and pipe-through the current datetime from the server, so that we don’t need to use the browser time in preparation for the redesigned value proposition’s expiration box’s countdown to access expiration.
Settings and Toggles Documentation#
Documentation for settings and toggles is much improved, but still incomplete. See https://edx.readthedocs.io/projects/edx-platform-technical/en/latest/index.html
New settings introduced in Lilac include:
Mongo was upgraded from 3.0 to 4.0.
Switched from Elasticsearch 1 to Elasticsearch 7 across Open edX. This may require some syntax changes for custom scripts that used search APIs.
Please change queries that used
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 to pacing_type
Use of edx-proctoring with the ProctorTrack vendor now requires a setting PROCTORING_USER_OBFUSCATION_KEY – it should be initially set to the same value as SECRET_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.
Changes to edx-organizations#
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-op
For instances the DID enable FEATURES[‘ORGANIZATIONS_APP’], any Organizations with conflicting short_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 openedx/edx-organizations 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” in course-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 setting ORGANIZATIONS_AUTOCREATE to Falsewhen 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 and organizations_organizationcourse tables, for Open edX instances that did not previously enable FEATURES[‘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.
Various bug fixes and updates around course certificate generation
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
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.’
The sysadmin dashboard is no longer supported.
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 and can be used as an alternative to sysadmin dashboard.
CourseTalk integration has been removed.
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 of SECRET_KEY.
Open edX logos, colors and fonts have been updated.
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.
Import unqualified packages from lms/djangoapps, cms/djangoapps, or common/djangoapps is no longer supported. Doing so will cause instances of import_shims.warn.DeprecatedEdxPlatformImportError to be raised. See openedx/edx-platform for details and context.
In common.djangoapps.student.models, the save parameter is deprecated for functions anonymous_id_for_user and unique_id_for_user, and these functions will always save generated IDs to the database. This allows future decoupling of ID generation from SECRET_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).