On Fri, Apr 7, 2017 at 7:46 AM, Felipe Schenone schenonef@gmail.com wrote:
Hi all! I'm the main developer of the ProveIt gadget https://commons.wikimedia.org/wiki/Help:Gadget-ProveIt, a reference manager for Wikipedia. The code is tracked via Phabricator, reviewed via Gerrit, and served to the various Wikipedias from Commons. Each wiki has a unique initialization code https://en.wikipedia.org/wiki/MediaWiki:Gadget-ProveIt.js that sets some local config and then requests the main code from Commons (JavaScript, CSS and JSON). Every time I merge a new change via Gerrit, I need to manually update the Commons pages so that the Wikipedias have the latest code.
While updating ("deploying") to the wiki is indeed an extra step, I don't think running in real-time from master is desirable, either. The wiki could be updated with a semi-automated build script you run locally from time to time (e.g. "npm run deloy" or some such). Alternatively, we could consider using a post-merge Jenkins job that would automatically run it (e.g. by storing a BotPassword in Jenkins secure env variables).
In addition, by keeping it stored on-wiki as a real gadget and loading with ResourceLoader there are various benefits. * Combining files into one request. * Minification and compression. * Automatic CSS flipping for LTR/RTL. * Localisation (in Gadgets 2.0).
The first three points you can get now already by loading it from Commons using load.php instead of individual action=raw requests. This can also perform CSSJanus directionality flipping for you when load.php?lang= is set to that of an RTL language.
For ProveIt: https://commons.wikimedia.org/w/load.php?debug=false&lang=en&modules...
Loading this one url with mw.loader.load (potentially using wgUserLanguage and skin from mw.config) would make it a bit more efficient already.
Example for RTRC (deployed to/loaded from mediawiki.org) https://meta.wikimedia.org/wiki/User:Krinkle/RTRC-dev.js.
-- Krinkle