TL;DR:
    * Review site scripts to verify that no wikibits methods[1] are used.
    * If you find usage of wikibits, refactor the code to use newer methods instead, or add a dependency on the 'mediawiki.legacy.wikibits' module.

Hi all,

The deprecation and eventual removal of the legacy "wikibits" JavaScript module has been a long time coming. This announces another step in that direction.

In 2011, wikibits was deprecated following the introduction of ResourceLoader in MediaWiki 1.17. To accommodate pre-ResourceLoader code that doesn't have a concept of dependencies, $wgIncludeLegacyJavaScript was created to allow existing sites (such as Wikimedia wikis) to load "mediawiki.legacy.wikibits" by default on all pages. While most code no longer uses wikibits, it remains set to this day.

In 2013, we introduced mw.log.deprecate in MediaWiki 1.23 to help you detect any use of deprecated methods in the browser's developer console.[2] We have seen a big reduction in the use of such methods.[3]

In 2015, we made significant performance improvements in MediaWiki 1.26, by running JavaScript asynchronously rather than blocking page rendering. To avoid breaking undeclared use of wikibits, we made an exception for wikibits and kept it as blocking other JavaScript modules on page views, re-purposing $wgIncludeLegacyJavaScript to mean "always load wikibits before other modules".

Now, as the last step before removing wikibits from MediaWiki, it will first no longer load by default in MediaWiki 1.27. This change will roll out on Wikimedia wikis in April 2016. If you find usage of wikibits features without a dependency, please refactor this code to use the modern replacements[1], or add an explicit dependency as temporary stop-gap while figuring out how to refactor the code.

Before re-factoring, please remember to first check whether the associated code is working. Many wikibits methods have become empty placeholders to avoid cascading failures. As such, blind updates may cause old or broken code that is currently invisible to re-activate itself. Removing dead code speeds up wikis for all users, and reduces the risk of things going wrong in future.

For third-party wikis, this will ship in MediaWiki 1.27.0. If needed, you can alter LocalSettings.php and set $wgIncludeLegacyJavaScript to true. This will give you time to fix missing dependencies on wikibits. In MediaWiki 1.28, to be released in November 2016, the wikibits module will be removed entirely.

-- Krinkle


[1] https://www.mediawiki.org/wiki/ResourceLoader/Legacy_JavaScript
[2] https://lists.wikimedia.org/pipermail/wikitech-l/2013-October/072776.html
[3] https://grafana.wikimedia.org/dashboard/db/mw-js-deprecate?from=now-10M