Maple
The Maple master branches were created on Oct 15, 2021. Changes on master should no longer be noted here. Put them on Nutmeg instead.
The 13th Open edX community release will be named Maple. It will be released December 20th, 2021. The maple.master branches will be created two months earlier, on October 9th. Code on master as of October 9th will be part of Maple. Code merged after that will need special handling to be part of Maple.
Put stuff here that we have to remember when we start packaging up for Maple. 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
Impeding Breaking Changes (Dec 2021): @Julia Eskew (Deactivated) @Connor Haugh (Deactivated)
The current LTI Component XBlock provides an option to "View resource in a New Window", which uses JS to launch a new window/tab. Our ORA XBlock opens modals via JS. These capabilities were removed in Chrome v92. Chrome provided a temporary work-around which we now use. The current work-around might cease to work on Dec 14th, 2021, but has been slated to continue until January 2022. A longer term fix is prioritized, and should make its way into Maple. Just want to flag this to make sure it gets included.
Studio login changed to OAuth: @Tim McCormack
Studio previously shared a session cookie with LMS, and redirected to LMS for login. Studio is changing to become an OAuth client of LMS, using the same SSO configuration that other IDAs use. (See ARCHBOM-1860; OEP-42.)
This is a breaking change; follow the Studio OAuth migration runbook as part of upgrading to Maple.
For devstack, run
./provision-ida-user.sh studio studio 18010
django-cors-headers version updgraded: @Awais Qureshi
django-cors-headers
version upgraded to 3.2.0.CORS_ORIGIN_WHITELIST
now requires URI schemes. You will need to update your whitelist to include schemes, for example from this:CORS_ORIGIN_WHITELIST = ["foo.com"]
toCORS_ORIGIN_WHITELIST = ["https://foo.com"]
Feature Changes
Learning Micro-Frontend
The Learning MFE (including both “courseware” and the “course home”) is planned to be the default course experience in Maple.
The Nutmeg release will likely entirely drop support for Legacy (that is, LMS-rendered) course experience entirely.
Details:
Contact People
Courseware: @Kyle McCormick (Deactivated) @Julia Eskew (Deactivated) @Connor Haugh (Deactivated)
Course Home: @Michael Terry (Deactivated)
Special Exams: @Zach Hancock (Deactivated)
Configuration
The
courseware.use_legacy_frontend
andcourse_home.course_home_use_legacy_frontend
Waffle flags can be toggled on (either globally or per-course-run) in order to revert to the Legacy (LMS Django-rendered) courseware experience.The domain name for your learning MFE should be added to the
CORS_ORIGIN_WHITELIST
for ecommerce, discovery, lms, and studio.
Removed Features:
Entrance Exams are slated to be deprecated and are never enabled on the MFE. Attempting to start a course with an entrance exam on the MFE results in an error. https://openedx.atlassian.net/browse/TNL-7046?atlOrigin=eyJpIjoiMzA5Nzk1ZGNjODE5NGNlNzgxOWFhZTMwY2E4NzM2MGEiLCJwIjoiamlyYS1zbGFjay1pbnQifQ Using the waffle flags to enable the legacy experience should enable their usage for the time being, but their deprecation is forthcoming.
Problemsets and videosequences, which are deprecated variations of the Sequence block will not render in the MFE: https://openedx.atlassian.net/browse/DEPR-151
Non-standard course hierarchies. Legacy courseware was willing to render some content that didn’t strictly follow that hierarchy, and that content will break in the MFE.
This should only affect courses authored directly in OLX. Studio-authored courses already follow these hierarchy requirements. Essentially, courses must follow a stricter hierarchy in order to work in the MFE:
The direct children of the root Course block should be Section (aka Chapter) blocks.
The children of the Sections must be Subsections (aka Sequence) blocks. Each Subsection must be part of at most one Section.
Children of the Subsections should be “Unit-like” blocks (most commonly Verticals, but HTML/Problem/etc are okay too)
Course search is not (yet?) available in the new Learning MFE Course Outline.
Altered Features:
The ability for course authors to preview units in the learner experience before they are published will preview in the legacy experience, not the MFE. Work enabling preview using the MFE is anticipated.
According to the HTML standard, <script> and <iframe> tags are not self-closing; they must be closed with </script> and </iframe> tags. Legacy courseware incidentally corrected this error when it occurred in course content. MFE courseware does not do that correction. Course authors should update their courses to use well-formed HTML if they happened to rely on self-closing <script> or <iframe> tags.
Courses which use the course key pattern
ORG/COURSE/RUN
instead of the new pattern,course-v1:ORG+COURSE+RUN
, are stored in our legacy storage service, Old Mongo, and will not be served by the new MFE. Instead they default to the legacy experience. But this pattern has been deprecated and will be removed.Author-written JS inside a Custom Javascript Problem block which acts outside the boundary of a unit will fail. Problem blocks will no longer be able to modify other problem blocks or access any parent elements using javascript. The main use case is pulling in content from a students’ previous answers or state. This is still possible with the get_statefn attribute all within the iframe. Although this may remove some small pieces of custom functionality, it is in the interests of adhering to security protocols.
Course Navigation on the MFE and legacy experience will have minor differences.
The breadcrumbs displayed at the top of a page in the legacy experience were organized by Course -> Sequence -> Unit -> Content Block Title, but in the new MFE breadcrumbs only includes Course -> Sequence -> Unit. This removes visual clutter of having the same title repeated in a small space on the page.
the MFE does change the URL scheme from:
LMS_BASE/courses/COURSE_KEY/courseware/SECTION_URLNAME/SEQUENCE_URLNAME/UNIT_INDEX?activate_block_id=COMPONENT_KEY
to:LEARNING_MFE_BASE/course/COURSE_KEY/SEQUENCE_KEY/UNIT_KEY
If all content inside a unit should be invisible to a cohort, but the sequence or the unit is not hidden, learners may be able to still see the titles of the content on the course outline, as well as the title of the sequence which contains only what should be hidden content to that learner. This issue can be removed by setting the
learning_sequences.use_for_outlines
waffle flag totrue
Maintained Features:
Features which remain functional within MFE courses, but still will be served by the legacy experience in Maple are:
The XBlock student view, as exposed via the unit iframe in MFE courseware
Static tabs (aka Custom Pages)
Discussions tab
Wiki tab
Teams tab
Notes tab
Instructor dashboard.
Special exams (timed and proctored) will be functional within the Learning MFE for MFE enabled courses.
Added Features:
Course outlines will now feature automatic effort estimates for subsections. Courses have to be republished before they show estimates, and all videos in the course must also have durations in edx-val.
There are some in-course celebrations of progress. A modal popup when a learner finishes their first section. And a 3-day streak celebration modal popup.
The end of a course now has its own landing page. It congratulates the learner and points them at what to do next (certificate status, other courses to pursue, etc)
Related Links:
https://github.com/openedx/build-test-release-wg/issues/81 : The BTR WG’s issue for Learning MFE in Maple.
<insert: DEPR for entrance exams>
Certificates
Various bug fixes and updates around course certificate generation (@crice (Deactivated), @Justin Hynes)
Removal of the allow_certificate field on the UserProfile model has been completed, and the column has been dropped (https://openedx.atlassian.net/browse/DEPR-140).
Note: if your UserProfile table has a lot of rows, the migration to drop the column could lock the table and necessitate a status page/downtime.
The temporary waffle flag
certificates_revamp.use_allowlist
has been removed, as testing during the rollout of this feature has been completed. All course runs now use the new allowlist behavior, which is described here.Code to generate a new or update an existing course certificate has been consolidated (https://openedx.atlassian.net/browse/DEPR-155 ).
The temporary waffle flag
certificates_revamp.use_updated
has been removed, as testing during the rollout of this feature has been completed. All course runs now use the new consolidated course certificate behavior, which is described here.Code to generate (create or update) PDF course certificates has been removed from edx-platform.
The fix_ungraded_certs, regenerate_user, resubmit_error_certificates, and ungenerated_certs management commands have been removed. In their place, please use the cert_generation command.
In an effort to be more inclusive, code referencing a Certificate Whitelist has been updated to instead refer to a Certificate Allowlist. The
CertificateWhitelist
model has been replaced by theCertificateAllowlist
model (data was automatically copied over to the new model).The management command named cert_whitelist has been removed. In its place, please use the Certificate Allowlist, which can be accessed from the Instructor tab on the course page in the LMS. (https://openedx.atlassian.net/browse/DEPR-156)
The Segment event
edx.bi.user.certificate.generate
will no longer emit from the courseware when self-generated certificate generation is attempted by a user. There was some overlap in this Certificate event with theedx.certificate.created
event sent during certificate generation. A self-generated certificate event will have ageneration_mode
ofself
(versusbatch
for certificates generated automatically).Removed use of the
modulestore
wherever possible in thecertificates
Django app of edx-platform. Changes include:Using a course’s
CourseOverview
over retrieving course data from themodulestore
Supporting change: Update the
list_with_level
function in the Instructor Dashboard to accept acourse-id
over the entirecourse
object (PR: 27646)
Removed the
AUDIT_CERT_CUTOFF_DATE
setting. Awarding Audit certificates will not be supported in V2 of Course Certificates (https://openedx.atlassian.net/browse/DEPR-159).Removed the
openedx/core/djangoapps/certificates
app by merging the singleapi.py
file intolms/djangoapps/certificates
.All APIs functions have been been moved as is, so if you have any code in a third party repository that used this API, please point them to the new path.
openedx/core/djangoapps/certificates/api.py
→lms/djangoapps/certificates/api.py
Removed
backpopulate_program_credentials
management command in place of an updatednotify_credentials
command (@Albert (AJ) St. Aubin (Deactivated) )LTI Config Model URL has been updated
URL of the LTI Config Model has been updated. This configuration is used to enable LTI PII sharing per course. The impact of this update is that anyone who has bookmarked the LTI Django Admin model will need to update their pointer. The new model admin is available in studio admin at : “admin/lti_consumer/courseallowpiisharinginltiflag/”.
Other
Studio: Course and library creation rights can now be granted on a per-organization basis.
Pull request: https://github.com/edx/edx-platform/pull/26616
Contact: @Farhaan Bukhsh @Kyle McCormick (Deactivated)
As before:
Controlled content creation rights feature must be enabled via the
FEATURES['ENABLE_CREATOR_GROUP']
flag.Creation rights are requested by new users on the Studio page.
Administrators handle requests by modifying records in the course_creators admin app:
<STUDIO_ROOT>/admin/course_creators/coursecreator/
However, administrators will now have a new capability when granting access:
Admins may now uncheck “All Organizations”, and instead select one or more particular organizations from the list.
Users granted creation access in this manner will only be able to create courses or libraries under the specified organizations.
This change is backwards-compatible: existing creation right grants will continue to apply to all organizations, and “All Organizations” remains the default option when granting new rights.
However, administrators can safely modify the organization settings on existing creation right grants if they would like to retroactively use this feature.
Deprecations and Removals
Based on estimated dates 2021-04-09 to 2021-11-15
Deprecations
Removals