Hello @team
As you may be aware, the Open edX project is steadily moving toward MFEs, to the point where now with each release, new MFEs are being enabled by default and legacy experiences are starting to be deprecated and removed.
The Learning MFE was enabled by default starting with the Maple Release and now the Account MFE has been enabled by default starting with the Nutmeg Release.
During the Maple upgrade, we had decided to continue using the legacy learning experience using appropriate waffle flags as MFEs were not yet fully themeable. We plan to continue doing the same during the Nutmeg upgrade for both the learning experience and the account pages.
However, with Olive Release both the legacy learning experience and the legacy account pages are slated to be removed. The legacy learning outline tab has already been dropped from the master branch.
The current state of themeability of MFEs are as follows:
-
Branding:
MFEs currently fully support brand customizations, i.e. relevant SCSS based colors can be overridden and custom logos and favicons can be included. This can be done through a branding package.
Branding package is fully implemented in our edx-simple-theme and is ready to be used to customize MFEs. -
Custom headers/footers:
Currently MFEs do seem to support customized headers and footers using frontend-component-header and frontend-component-footer packages respectively. We should however do a discovery to figure out how to use these packages and develop sample overrides. -
Custom templates:
With comprehensive theming, we had the ability to heavily customize html templates in the legacy experience. However, MFEs currently do not have any easy way to do such template customizations. The only way to implement such customizations right now is to fork each MFE and modify the contents therein. Maintaining such custom forks for a growing number of MFEs for each of our clients would be impractical.
As you can see, this could have a huge impact on almost all of our clients, since all of them use custom themes with varying amounts of customizations and starting Olive, we would not be able to avoid MFEs anymore.
Therefore, we need to start preparing right now, so that we are ready by the time we start doing the Olive upgrades. This post is intended to kickstart this process.
As discussed during the last Bebop Sprint Retrospective, these are some of potential steps we could start taking now to prepare for this shift:
-
Develop ways to easily customize templates of MFEs perhaps through NPM packages, similar to what was possible through comprehensive theming. This would be a complex project, but one which would benefit the entire community. Perhaps, we could explore if tCRIL, edx/2U or some of our clients would be willing to support such an endeavor.
-
Start porting parts of our client’s custom themes to edx-simple-theme. Currently edx-simple-theme can be used to customize almost all colors, logos, etc. for both MFEs and legacy experiences and is fully supported by Grove. So, this effort would mostly involve figuring out the appropriate override values for the different SASS variables.
-
Start developing header/footer override npm packages, for clients who use customized headers/footers using frontend-component-header and frontend-component-footer.
-
Start conversations with clients, to discuss with them how they would be impacted by the upcoming changes and the next steps to be taken.
Looking forward to your views on this.
Also, I created this post as private since we could be discussing client specifics here. I could make it public if there are no objections.