At OpenCraft we’ve been investigating improvements to the way theming works on Open edX with the aim of making it faster, easier to use, easier to maintain, and more flexible. A more detailed overview of our goals can be found here
One of the first things we’ve investigated is the way forward with creating a consistent theme across edx-platform and MFEs. The results of the initial investigation can be found here. As we do further
We would love feedback on this so do leave any comments on the PR here:.
We wanted to ensure that the theming system is forward-compatible, such that upgrading a theme from one release to another should be simple and straightforward. Furthermore, we want the ability to allow deep modifications while still ensuring that maintenance burden of upgrade costs are as low as possible.
Currently, our primary theming mechanism is the simple_theme role. It is a pretty straightforward system. The role takes a base theme (we have a skeleton theme for it here), and an arbitrary list of variable names and values. It sets up the base theme, and adds the variables as SASS variables to the theme.
This allows us to set up a base theme that support customisation via variables, and then use the role to provide those variables as part of deployment. OCIM our tool for managing Open edX deployments includes a UI that allows customising these variables, and redeploying those changes to a new instance.
We would like to extend the above approach to work with MFEs as well, since it would allow us to have a single theme configuration that applies across all UIs. With OEP-48 this with within reach.
We would love to get community feedback on this effort as it progresses. Our future goals involve creating an open source UI for light theme customisations, that provides quick previews and feedback, and automatically deploys the latest theme changes. Community feedback will be essential in determining how we further develop and prioritise the work here.