This is great news!  Thanks for all the work that has gone into this
and thanks in advance for continued support!

Greg Rundlett
https://eQuality-Tech.com
https://freephile.org

On Tue, Mar 16, 2021 at 7:27 PM Roan Kattouw <rkatt...@wikimedia.org> wrote:
>
> The Vue migration team is pleased to announce that MediaWiki finally has 
> built-in support for writing modern JavaScript with ES6.
>
> Up until now, all JavaScript code in MediaWiki has been written in ES5 (a 
> version of JavaScript standardized in 2009), because MediaWiki maintains 
> support for some browsers that don't support ES6. Over the years this has 
> become increasingly frustrating for developers, because ES6 (standardized in 
> 2015) adds new language features that make writing code easier and more 
> pleasant, but these features couldn't be used in MediaWiki. A lot of modern 
> code and tools are now written in ES6, and browsers that don't support ES6 
> have become obsolete. At this point, the only significant non-ES6 browser 
> that MediaWiki continues to support is Internet Explorer 11, whose usage is 
> relatively low, but not yet quite low enough for us to drop support for it. 
> In keeping with the IE11 announcement[1] from earlier this month, we will 
> continue to support IE11, but some new features will not support it.
>
> What this means for developers is that you can now use ES6 code in MediaWiki 
> core, extensions, and skins, as long as it's in a feature that doesn't need 
> to support IE11. ResourceLoader modules that use ES6 code have to be flagged 
> as such, and you will need to put ES6 code in a separate directory so that 
> different eslint rules can be applied. For detailed instructions on how to 
> start using ES6 in your code, see 
> https://www.mediawiki.org/wiki/ResourceLoader/ES6 .
>
> Unfortunately, ES6 code is not yet supported in on-wiki JavaScript (Gadgets, 
> user scripts, and site scripts), because we need to check that these scripts 
> are syntactically valid, and our current validator only understands ES5 [2].
>
> To make this possible, we added functionality[3] to ResourceLoader to allow 
> modules to mark themselves as ES6-only, and prevent those modules from being 
> loaded in browsers that don't support ES6. We also made significant 
> changes[4] to our JavaScript minifier[5] to support the minification of ES6 
> code, which previously generated invalid output[6] when confronted with ES6 
> syntax. And we updated our eslint ruleset[7] to add a linter configuration 
> for ES6 code[8]. Thank you to Timo Tijhof (Krinkle) and DannyS712 for code 
> reviewing the ResourceLoader and minifier changes, to Lucas Werkmeister for 
> finding a critical bug[9] in the minifier change, and to James Forrester and 
> Ed Sanders for code reviewing the linter changes and releasing new versions 
> of all these packages.
>
> Roan Kattouw
> On behalf of the Vue migration team (Anne Tomasevich, Eric Gardner, Volker 
> Eckl, and myself)
>
> [1] https://www.mediawiki.org/wiki/Compatibility/IE11
> [2] https://phabricator.wikimedia.org/T75714
> [3] https://gerrit.wikimedia.org/r/c/mediawiki/core/+/657953
> [4] https://gerrit.wikimedia.org/r/c/mediawiki/libs/Minify/+/664700
> [5] https://github.com/wikimedia/Minify/
> [6] https://phabricator.wikimedia.org/T255556
> [7] https://github.com/wikimedia/eslint-config-wikimedia
> [8] https://github.com/wikimedia/eslint-config-wikimedia/pull/358
> [9] https://phabricator.wikimedia.org/T277161
> _______________________________________________
> Wikitech-l mailing list
> Wikitech-l@lists.wikimedia.org
> https://lists.wikimedia.org/mailman/listinfo/wikitech-l

_______________________________________________
Wikitech-l mailing list
Wikitech-l@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

Reply via email to