Currently MobileFrontend(Minerva) has various [[ https://github.com/wikimedia/mediawiki-extensions-MobileFrontend/tree/master/resources | starter modules ]].
They are arranged by feature or page.
For instance if the user cannot watch a certain page we do not load the module skins.minerva.watchstar
After discussing this as a team we concluded that we would prefer to group these by page and move this logic into frontend code. This will mean more JS is loaded by default, but there will be less fragmentation across pages.
To start with the following modules will be merged into a single starter module `skins.minerva.scripts` which will be renamed `skins.minerva.page`
= A/C
[] Merge the following modules into one single entry module:
* skins.minerva.scripts
* skins.minerva.scripts.top
* skins.minerva.tablet.scripts
* skins.minerva.notifications
* skins.minerva.newusers
* skins.minerva.fontchanger
* skins.minerva.editor
* skins.minerva.categories
* skins.minerva.backtotop
* skins.minerva.talk
* skins.minerva.toggling
* skins.minerva.watchstar
= Test plan
[] The entry points should load without errors under the following circumstances
* MobileFormatter is not available e.g. useformat=desktop&useskin=minerva (impacts toggling)
* A feature is disabled (for example...):
** if categories is disabled the categories code should not work
** if talk is disabled the talk code should not work
** if back to top is disabled back to top should not work
[] Rename skins.minerva.scripts to skins.minerva.page and make sure an alias is left (with single dependency) to deal with cached HTML.
[] Any entry point that loads in stable/anon must have an alias to avoid JS errors in cached HTML
[] Document any increase in JS bytes before merging.
[] Please take this opportunity to follow up with patchsets that shift more logic into the generic modules e.g. mobile.toggling, provided that they remain testable and without side effects
= Sign off checklist
[] How did this impact [[ https://grafana.wikimedia.org/dashboard/db/mobile-2g | performance ]] in particular first paint / bytes shipped
[] Create cleanup task to remove aliases in a week