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"] to CORS_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 and course_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:

  • 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_KEYto: 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 to true

  • 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:

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 CertificateWhitelistmodel has been replaced by the CertificateAllowlistmodel (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 the edx.certificate.createdevent sent during certificate generation. A self-generated certificate event will have a generation_mode of self (versus batch for certificates generated automatically).

    • Removed use of the modulestore wherever possible in the certificates Django app of edx-platform. Changes include:

      • Using a course’s CourseOverview over retrieving course data from the modulestore

      • Supporting change: Update the list_with_level function in the Instructor Dashboard to accept a course-id over the entire course 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 single api.py file into lms/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.pylms/djangoapps/certificates/api.py

  • Removed backpopulate_program_credentials management command in place of an updated notify_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/”.

    • https://openedx.atlassian.net/browse/TNL-8524

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

key summary type created updated due assignee reporter priority status resolution
Loading...
Refresh

Removals

key summary type created updated due assignee reporter priority status resolution
Loading...
Refresh