Hello,

TLDR: The following hooks are deprecated in 1.35:
SkinTemplateBuildNavUrlsNav_urlsAfterPermalink,
SkinTemplatePreventOtherActiveTabs, SkinTemplateTabAction,
BaseTemplateAfterPortlet, SkinTemplateToolboxEnd, BaseTemplateToolbox,
 SkinTemplateOutputPageBeforeExe.

The longer version:
As part of the desktop improvements project
<http://mediawiki.org/wiki/Desktop%20improvements> we've been making some
exciting changes in MediaWiki's skin architecture. This has involved
migrating away from the BaseTemplate PHP class to Mustache as the render
engine for Vector. In 1.36, the Vector skin plans to use the new SkinMustache
class
<https://github.com/wikimedia/mediawiki/blob/master/includes/skins/SkinMustache.php>
and do away with the BaseTemplate class. This meant that we had to
deprecate various BaseTemplate hooks, providing more suitable generic
alternatives in the shared Skin.php layer. We also took the opportunity to
reduce the number of active hooks that operate in the skin layer for
developer sanity.

From now on it is intended that any skin modifications are done *prior *to
rendering. The renderer whether it is BaseTemplate or SkinMustache will
simply render the data that's been provided.

As a result of this I have various changes to report!

The *SidebarBeforeOutput
<https://www.mediawiki.org/wiki/Special:MyLanguage/Manual:Hooks/SidebarBeforeOutput>
*hook now can be used to modify the toolbox and languages portals.
Previously these sidebar menus had their own bespoke hooks.

The SkinTemplateBuildNavUrlsNav_urlsAfterPermalink hook
<https://www.mediawiki.org/wiki/Manual:Hooks/SkinTemplateBuildNavUrlsNav_urlsAfterPermalink>
is deprecated and can be replaced with the new and improved
SidebarBeforeOutput hook.

The SkinTemplatePreventOtherActiveTabs and SkinTemplateTabAction hooks
<https://phabricator.wikimedia.org/T253814>were seldom used and replaced
with SkinTemplateNavigation::Universal .

All BaseTemplate hooks should now be considered deprecated per T253809
<https://phabricator.wikimedia.org/T253809>.

   - BaseTemplateAfterPortlet
   <https://www.mediawiki.org/wiki/Manual:Hooks/BaseTemplateAfterPortlet>
   is replaced with the template-rendering agnostic SkinAfterPortlet
   <https://www.mediawiki.org/wiki/Manual:Hooks/SkinAfterPortlet>
   - SkinTemplateToolboxEnd
   <https://www.mediawiki.org/wiki/Manual:Hooks/SkinTemplateToolboxEnd>is
   replaced with the new and improved version of SidebarBeforeOutput
   - BaseTemplateToolbox
   <https://www.mediawiki.org/wiki/Manual:Hooks/BaseTemplateToolbox> is
   replaced  with the new and improved version of SidebarBeforeOutput


Finally a big one:
The SkinTemplateOutputPageBeforeExec hook is now deprecated
<https://phabricator.wikimedia.org/T60137>. Previously this hook could do a
lot of things and often in ways that were hard to reason with. For example,
previously this hook was used alongside other hooks to add items to the
footer and to override skin internals to display portals that were normally
hidden. We looked through all the use cases for this hook and are confident
we've caught the most confident use cases. Migration depends on what it was
previously used for but are documented on mediawiki.org
<https://www.mediawiki.org/wiki/Manual:Hooks/SkinTemplateOutputPageBeforeExec#Migration_notes>.
It's possible there are other use cases, we missed and if so we plan to
cover those during the 1.36 release.

If you are an extension developer and have any questions about migration
please feel free to ping me on the associated Phabricator ticket or hook
talk page, we will be happy to improve the documentation and help you find
the right way to upgrade your code.

As we go into 1.36 we plan to make changes that simplify MediaWiki skin
development and make the ecosystem friendlier to frontend developers and
make skins easier to maintain. In fact, in future, it will be possible to
write skins without a single line of PHP. If you are excited or intrigued
by these changes and want to get involved in the conversations I urge you
to subscribe to our board.
<https://phabricator.wikimedia.org/project/board/4795/>

I'm particularly interested in hearing from developers who are keen to make
skins in the new ecosystem. Your input and creativity would be much
appreciated. Feel free to drop me a private mail or engage in open
conversations.

In addition to all the extension developers who helped review changes to
their hook contracts, I would like to especially thank the following people
for getting us to this landmark: Ammarpad, Timo, Volker and Mainframe98.
I'd like to give a specific shout out for Ammarpad who has been a huge
driving force here, preventing various bugs from occurring and swiftly
responding to many of the unexpected regressions that we encountered during
this work. We couldn't have done this without you!

Thanks for reading!
Jon
_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to