On Fri, Apr 7, 2017 at 7:46 AM, Felipe Schenone <schenonef(a)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&moduleā¦
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