Proposal: Right sidebar refactoring
Problem
In the Learning MFE, the right sidebar is part of the learning experience and currently shows two panels by default:
Discussions panel (part of core offering)
Upsell panel (related to paid courses, not part of the core offering).
This is not ideal because:
The upsell panel is visible by default, even though it is not part of the Open edX core offering, and there is no supported way to disable it.
In courses that don’t offer a paid track, the upsell panel is empty.
The upsell panel is titled “Notifications”, which conflicts with the platform’s actual notifications tray and causes confusion (see screenshots below).
Discussions and upsell panel code are tightly coupled to the sidebar, making refactoring and future evolution of the sidebar more difficult.
The sidebar imports the Upsell panel directly, and the visibility state is also shared.
Even though Discussions takes priority in course units where it is enabled, learners still run into inconsistent behavior:
On units where discussions are disabled, the upsell panel may appear as the default sidebar content.
When discussions are visible, learners still see the clock icon and can click through to “no new notifications”.
Current technical implementation
As of now, there are 3 plugin slots at work, as shown in the image below.
NotificationsDiscussionsSidebarTriggerSlot: This is where the code of triggers (buttons) for opening/closing discussions and upsell panel reside.
NotificationsDiscussionsSidebarSlot: This is where the code of discussions panel (as iframe) and upsell panel reside.
NotificationTraySlot: This plugin slot is within the upsell panel code (widget?) and can be used to insert content that is to be displayed in the upsell panel.
Proposed way forward
Must have
Instance managers are able to enable or disable upsell panel in a supported way. Its default state is disabled because it is not part of core offering.
Discussions panel is enabled by default and is visible if discussions are enabled for a unit.
Text in the upsell panel does not imply that it has anything to do with notifications.
Nice to have
Instances are able to easily add more widgets like LTI tools, etc., in the sidebar via plugin slots.
Default state (open/close) of both left and right sidebar is controlled by a single setting/waffle flag (e.g.,
ACTIVE_RIGHT_SIDEBAR_AS_DEFAULT). Only 1 sidebar is open at any given time (which is already the case).
From technical perspective
Implement a panel registry/slot adapter pattern for the right sidebar:
The sidebar becomes a generic host for panels, dynamically rendering triggers and content based on a registry.
Only the discussions panel remains the default and is visible to all users.
The upsell panel (confusingly named “NotificationTray”) and other optional panels can be injected explicitly by instances via the registry.
Benefits
Provides a clean default experience for the community.
Preserves upsell functionality for instances like 2U without having to maintain a new plugin.
New panels with tools can be added without touching the core sidebar code.
Simplifies maintenance and supports opt-in configuration.
Migration plan
Initially, the Upsell widget will continue to live within the Learning MFE codebase but will be disabled by default. It will be enabled explicitly via configuration using a plugin slot registered through env.config.js.
There will be a clear timeline to either:
move the Upsell widget configuration into their own
env.config.js, orpackage the Upsell widget as a standalone plugin that can be injected via the same mechanism.
Minor comments / notes but this is a welcome change IMO. Improving the pluggability of this side area while we are at it is great.
A few related notes below, and hwile not a part of the scope just something I wanted to echo while we are on the subject of the learner experience sidebar.
Conversion of Tool - Notes, Calculator
I hope we can get a proposal / feature idea for moving the student notes experience and the calculator to use the sidebar panel instead of its popup floater UI that exists today.
Conversion of Tool - Staff Debug
Similar to notes and calculator, staff debug could move to the sidebar and improve the experience (if you can even call it that) we include out of the box with the circa 2012 staff debug tools. (There is a related challenge with ORA that has its own custom versions of the inline content “staff debug” like tools, but that’s another improvement altogether.)
Future Sidebar Option - Metrics
Once pluggable, I could easily see the In-Context Metrics project. that brought Aspects data into Studio in Teak be extended to also allow instructors to see aspects views while in the LMS, since many educators browse / review the LMS as well as part of their authoring / content triage workflows.
Future Sidebar Option - Learning Materials Review
Related to https://openedx.atlassian.net/wiki/spaces/OEPM/pages/5138350123, a content review / comment feature for authors could exist both in studio and in the lms view sidebar area to review comments and feedback instructors have amongst each other abotu the content.
Easy Commercialization Tools (Not Currently)
It is too bad that there isn’t a discovery / commerce system out of the box that could let someone easily realize a commercializable learning platform without heavy customization, and things like this upsell / upgrade side panel would be part of that set of tools but without supported services to do this alas each instance needs to figure it out themselves or with the help of a provider. Hopefully in the future someone will have a project scope to justify an end to end review of the commerce options / tools, since I think today some of the plugins and options cover only the basics of the commerce tools, but not much / any of the downstream messaging and upsells that convert learners to the paid track as well as the up front pages like track selection.