Introduction
In Moodle 3.7 the Bootstrapbase theme will be removed: https://moodle.org/mod/forum/discuss.php?d=373899 and more specifically https://moodle.org/mod/forum/discuss.php?d=373899#p1545199. It is Moodle HQ’s intent that it could go into the plugins database and be maintained by somebody. Having once included Bootstrap within Essential, in effect having Bootstrapbase within it, I found that was a lot of work to maintain. Therefore it is highly unlikely that I’ll maintain it.
Essential is a child theme of Bootstrapbase which in turn contains the Bootstrap 2.3.2 framework. The new core theme ‘Boost’ contains the Bootstrap version 4.0.0 framework. This is a much improved version of Bootstrap that has functionality that
is based upon the learning of the old and the issues it may have had.
Essential itself has evolved over the years, starting with its initial developer Julian Ridden, then David Bezemer took it over, shortly afterwards, I joined him. Then he left and I have been developing and maintaining the theme ever since. Over this
time I have attempted to stay true to the vision and functionality that Julian instigated.
The situation
Improving and maintaining Essential to cope with change is perhaps harder than the change itself. It is a complex theme and I do find that changing one element can unexpectedly break another.
The more changes between Moodle versions there is, the harder and more complex the changes required to Essential. Critically, quantifying the amount of time proves tricky as I simply don’t know how long it can take because: it’s bespoke unique code, the
changes have never been applied to this situation before. So even if I can estimate based upon past experience, it is an educated guess rather than a science. Also it is quite probable that 90% of the changes can be done only to find one
critical change that can’t and thus break the theme and upgrade process.
As Essential is complex there is a mental limitation on how much can be ‘up in the air’ during the change that one mind can cope with, making the upgrade process difficult.
Essential has the following technical differences to Boost:
- CSS is written in LESS and not SCSS that Bootstrap 4.0.0 is.
- Uses the Bootstrap 2.3.2 grid system rather than the Bootstrap 4.0.0 system.
- There is less use of templates.
- Some of the JavaScript does not use the AMD module methodology.
Of these, the first and second would be the biggest and hardest to upgrade.
To me, Essential from a look point of view is starting to feel dated and be like the web of the past. What really matters is what it does and the functionality / features that facilitate changes via the user interface.
I don’t know what functionality is used and what is not. There could be functionality that is simply not being used and yet taking up maintenance time.
The solution
I will be stopping development of Essential at Moodle 3.6. There will be no Moodle 3.7 or above version. I will maintain the theme for as long as I can. Instead I will progressively develop the new Foundation theme (https://moodle.org/plugins/theme_foundation) using functionality ported from both Essential and Shoelace (https://moodle.org/plugins/theme_shoelace - which will also stop development at Moodle 3.6).
If I apply the strategy of applying changes in defined conceptual functionality units to a code base that is known to be working then any issues should be with the new changes themselves. Having smaller single changes will bring a greater chance
of success.
I can reuse and refactor the existing functionality from Essential (and Shoelace) using this strategy and at the same time, modernise and improve on it. Functionality is therefore not written from scratch but rather ported from the past into the
future. This is a cleaner strategy with more certainty of success.
I will change the focus of ‘Foundation’ from being a small basic theme to that of one that has the ‘Foundation’ functionality you need before you make slight modifications to suit your styles. There will be a new version for M3.6 released soon with:
- Favicon setting to general settings. Provides the ability to use your own custom favicon.
- Login page background settings from Essential.
- Change login page forget password link styled like a button.
- Anti-gravity functionality from Essential.
- Alert system. Multiple dismissible alert types on all, course, dashboard or frontpage pages.
- Frontpage carousel similar to one I created for Essential.
- Reduced version (no sub-menus on BS4) of the 'My Courses menu' from Essential.
Child themes
Foundation has the same technology for implementing child themes as Essential does.
My philosophy
I believe that the user should be able to change and control their Moodle sites look and feel without having to become technical. Users do have a choice though if they do want to make technical changes. And sometimes it is not possible to have non-technical changes. But the belief still stands as much as practically possible.
I’m not a great believer in the Boost theme. It feels to me to be restrictive in that you either have to change it or spend effort removing functionality that you don’t want in a child theme. I find the flat navigation in the ‘nav drawer’
limited and frustrating. Boost feels like “You can have it in any colour you like as long as its ‘this’ model with optional extras”.
I consider that it is far better to only have the code that you need rather than a whole load that you don’t or can’t control.
Thank you
Thank you for taking the time to read this information. If you have any questions about this, then please don’t hesitate to reply below.
Gareth J Barnard