**Specific: What do we want to achieve?**
The Minerva skin operates in a hybrid mode using the new SkinMustache class we created for desktop improvements and a legacy MinervaTemplate which uses BaseTemplate. We'd like to remove the MinervaTemplate code from Minerva. Doing this will require moving functions/data from MinervaTemplate into SkinMinerva and/or SkinMustache in core.
**Measurable: How will we know when we've reached our goal?**
[] MinervaTemplate should no longer exist
[] When reviewing SkinMinerva::getTemplateData and SkinMustache::getTemplateData we should confirm that no duplicate template data gets generated. Any duplicate information if too difficult to migrate should be documented for a future time.
**Achievable: What support will we need to achieve our goal?**
No support from outside the team should be necessary.
**Relevant: Is this goal worthwhile?**
Doing this will:
* Improve performance - the hybrid mode means a lot of template data is generated twice
* Improve the template data in core that's available for Vector and other skins
* Reduce the overall amount of code the team maintains.
**Time-bound: What is the time frame? Can we achieve this goal in the timeframe I've set?**
Scoping this to the MinervaTemplate should make it possible to complete this within a month
# More background
Now SkinMinerva is using SkinMustache (T256083) slowly migrate the contents of MinervaTemplate piece by piece to the new SkinMinerva class. Wherever possible refer and use [[ https://github.com/wikimedia/mediawiki/blob/master/includes/skins/SkinMustache.php#L74 | the core SkinMustache template variables ]] or use names/data structures that mirror the [[ https://github.com/wikimedia/Vector/blob/master/includes/SkinVector.php#L118 | template variables used in SkinVector ]]
[] Unused template variables are removed
[] Replace subtitle with data provided by SkinMinerva
[] Replace all message keys variables defined inside getTemplateData e.g. main-menu-tooltip with definitions inside SkinMinerva::$options['message']
...
[] When MinervaTemplate has been reduced to a getTemplateData function and private functions, move these functions to SkinMinerva and remove the MinervaTemplate class
[] Review all triple brace template variables e.g. {{{search}}} and replace with templates and data where possible
[] Make sure all template keys provided by Minerva have "minerva-" in their title so they can be distinguished from values coming from core.