ResourceLoader

ResourceLoader is a JavaScript/CSS delivery system for MediaWiki, available in version 1.17 and later. Code that has not been explicitly integrated into ResourceLoader should still function, with some caveats; migration is highly recommended.

Getting Started
A basic overview for using ResourceLoader with extensions can help most people get started. If you are porting your extension to ResourceLoader, please add it to the list of ResourceLoader compatible extensions. The extensions on this list should also be useful as examples. Other documentation is also being worked on.

Feature justification
On Wikimedia wikis, every page view includes hundreds of kilobytes of JavaScript, mostly for interface enhancements (written by the usability initiative). Parts of this will not be used, because e.g. the user doesn't click a certain button or because their old browser doesn't support a feature. In these cases, we are wasting bandwidth and loading time (for downloading, parsing and executing JS). This is especially bad on older browsers like IE6, where almost all features are unsupported (so a high percentage of all JS is 'wasted'), and parsing and executing JavaScript is extremely slow.

With on-demand loading, we can solve these problems. We can also make our resource loading more efficient by aggressively combining and minifying JavaScript and CSS, a practice employed by the UsabilityInitiative extension but not by MediaWiki core.

Specifications
Prior to and during development of the ResourceLoader, detailed design specifications were developed and maintained. During transition from legacy JavaScript code, please refer to the list of JavaScript deprecations. Input was taken from a variety of sources and developed into a list of requirements.

Todo

 * Test plan (in a Google document somewhere)
 * Documentation plan
 * Schedule (in a Google document somewhere)
 * Task management (Mostly in Google Docs. There is a tracking bug in Bugzilla)
 * Release management plan
 * Community management plan

Status

 * /Status