NOTE: This blocks T251212, which blocks simplifying a lot of the Vector code. On the long term it should save us problems by keeping the footer contract stable.
The MobileFrontend and WhoIsWatching extensions make modifications to the footer. This is achieved via an incredible amount of indirection passing data between BaseTemplate and SkinTemplate as well as side effects from hooks. This makes it difficult to safely modify parts of the skin code that we need to refactor as part of desktop refresh. There's an opportunity to simplify all this code so it's safer to reason with.
= Acceptance criteria
[] A new hook and method will be introduced to the Skin class that provides footer data and allows modifications. To begin with no skins will use this method to allow them to safely migrate without worrying about backwards compatiblity (https://gerrit.wikimedia.org/r/594811)
[] MobileFrontend is updated to use the new hook (https://gerrit.wikimedia.org/r/594311)
[] Vector will be modified to use the new Skin::getFooterLinks method (https://gerrit.wikimedia.org/r/593070)
[] The old way of modifying the footer will continue to work (for now).
= Sign off steps
[] Setup a task to make sure we update Minerva to use the same hook (https://gerrit.wikimedia.org/r/#/c/mediawiki/skins/MinervaNeue/+/595067)
[] A patch exists for WhoIsWatching (used by 3rd parties) to use the new hook for generating its own footer.