⚓ T55120 Remove deprecated sajax js library from MediaWiki core
Article Images
Remove deprecated sajax js library from MediaWiki core
Remove deprecated sajax js library from MediaWiki core
This cannot go forwards until time has been given to fix (core, extension, gadgets, user) scripts that will break, which requires notification.''
Cloning this bug from T42785 comment 7.
Core is no longer using Sajax and anyone else trying to use it will get JS console warnings if debug=true.
However, the sajax library is still in core. It can't be removed until extensions have stopped using it - particularly SecurePoll, which is in use on Wikimedia wikis, but maybe we should also allow time for BlogPage, CommunityVoice, DonationInterface (this seems sort of used on Wikimedia sites, not 100% sure about that), Drafts, OnlineStatus, and ReaderFeedback (there may be others that I've missed) to stop using it.
Timeline:
- Deprecate interface with warnings. – T42785, 35b6b63e48b (MediaWiki 1.22 in 2013)
- Remove usage:
- Remove from MediaWiki. – 5472c66d7831f9e (MediaWiki 1.26 in 2015)
Event Timeline
There are a very large number of changes, so older changes are hidden. Show Older Changes
krenair@terbium:~$ mwgrep sajax [...] (total: 297, shown: 100)hmm :/
It's trending in the right direction at least
Reedy added a comment.EditedJul 6 2015, 11:02 PM
reedy@terbium:~$ mwgrep sajax --max-results 300 | grep -v \) | cut -c21- | sort -n | uniq -c 1 MediaWiki:AjaxTranslation.js 1 MediaWiki:AlertFreeUseImage.js 4 MediaWiki:AlertProtected.js 3 MediaWiki:Comments.js 20 MediaWiki:Common.js 5 MediaWiki:Common.js/documentation tab.js 1 MediaWiki:Common.js/edit.js 1 MediaWiki:Common.js/Edit tools.js 1 MediaWiki:Common.js/mwbot.js 1 MediaWiki:Common.js/Tm.js 3 MediaWiki:Dictionary.js 1 MediaWiki:Gadget-afchelper.js 1 MediaWiki:Gadget-AJAX-esikatselu.js 1 MediaWiki:Gadget-AjaxMassRB.js 1 MediaWiki:Gadget-ajaxrecentchanges.js 1 MediaWiki:Gadget-AlertaRev.js 1 MediaWiki:Gadget-api.js 2 MediaWiki:Gadget-autocomplete.js 1 MediaWiki:Gadget-BandeauxPages.js 3 MediaWiki:Gadget-BandeauxPortails.js 1 MediaWiki:Gadget-bracketmatch.js 1 MediaWiki:Gadget-Bracketmatch.js 4 MediaWiki:Gadget-catinsert.js 1 MediaWiki:Gadget-ChangeCategorie.js 1 MediaWiki:Gadget-checkVoteRights.js 1 MediaWiki:Gadget-closeAFD.js 5 MediaWiki:Gadget-CommentWatch.js 1 MediaWiki:Gadget-Contributions.js 1 MediaWiki:Gadget-CustomSideBarLinks.js 1 MediaWiki:Gadget-DeveloppementJavaScript.js 23 MediaWiki:Gadget-dropdown-menus.js 2 MediaWiki:Gadget-dropdown-menus-nonvector.js 3 MediaWiki:Gadget-EnhancedInterwikis.js 2 MediaWiki:Gadget-Flickrfixr.js 5 MediaWiki:Gadget-hotcat.js 46 MediaWiki:Gadget-HotCat.js 1 MediaWiki:Gadget-HotCats.js 2 MediaWiki:Gadget-HotCatsMulti.js 6 MediaWiki:Gadget-InterwikiOrder.js 2 MediaWiki:Gadget-LiveRC.js/Extensions/HotCatsMulti.js 4 MediaWiki:Gadget-markblocked.js 1 MediaWiki:Gadget-massblock.js 2 MediaWiki:Gadget-massdelete.js 11 MediaWiki:Gadget-metadata.js 4 MediaWiki:Gadget-modrollback.js 1 MediaWiki:Gadget-PagesSansBandeauDePortail.js 1 MediaWiki:Gadget-PageWatcher.js 3 MediaWiki:Gadget-patrollinks.js 1 MediaWiki:Gadget-Pratik menu.js 1 MediaWiki:Gadget-PrettyLog.js 6 MediaWiki:Gadget-preview.js 5 MediaWiki:Gadget-QPreview.js 1 MediaWiki:Gadget-qualityArticles.js 1 MediaWiki:Gadget-QualityRibbon.js 1 MediaWiki:Gadget-quickpreview.js 1 MediaWiki:Gadget-rcPatrol.js 2 MediaWiki:Gadget-readyAlert.js 1 MediaWiki:Gadget-sablonmester.js 2 MediaWiki:Gadget-saveandedit.js 1 MediaWiki:Gadget-show-patrol-log.js 1 MediaWiki:Gadget-Suggest.js 9 MediaWiki:Gadget-TemplatePreloader.js 2 MediaWiki:Gadget-TrollOptions.js 7 MediaWiki:Gadget-userinfo.js 1 MediaWiki:Gadget-util.js 1 MediaWiki:Gadget-VigilaComentario.js 2 MediaWiki:Mwapilib.js 3 MediaWiki:Notifier.js 16 MediaWiki:RefToolbarLegacy.js 8 MediaWiki:Ticker.js 2 MediaWiki:UploadForm.js 1 MediaWiki:UploadFormTest.js 1 MediaWiki:Upload.js 1 MediaWiki:Voting10.js 1 MediaWiki:Voting11.js 1 MediaWiki:Voting12.js 1 MediaWiki:Voting2.js 1 MediaWiki:Voting3.js 1 MediaWiki:Voting4bis.js 1 MediaWiki:Voting4.js 1 MediaWiki:Voting6.js 1 MediaWiki:Voting7.js 1 MediaWiki:Voting8.js 1 MediaWiki:Voting9.js 1 MediaWiki:Voting.js 1 MediaWiki:Wikibugs.js reedy@terbium:~$
Reedy added a comment.EditedJul 6 2015, 11:05 PM
And incase anyone is wanting to fix some...
reedy@terbium:~$ mwgrep sajax --max-results 300 acewiki MediaWiki:Common.js arwiki MediaWiki:Gadget-BandeauxPortails.js arwiki MediaWiki:Gadget-InterwikiOrder.js arwiki MediaWiki:Gadget-saveandedit.js arwiki MediaWiki:Gadget-userinfo.js arwikinews MediaWiki:Gadget-HotCat.js arwikinews MediaWiki:Gadget-HotCat.js aswiki MediaWiki:Gadget-dropdown-menus.js aswiki MediaWiki:Notifier.js aswiki MediaWiki:RefToolbarLegacy.js aswikisource MediaWiki:Gadget-TemplatePreloader.js azwiki MediaWiki:Gadget-HotCat.js azwikiquote MediaWiki:Gadget-HotCat.js azwikisource MediaWiki:Gadget-HotCat.js bawiki MediaWiki:Common.js/documentation tab.js bdwikimedia MediaWiki:Gadget-HotCat.js be_x_oldwiki MediaWiki:RefToolbarLegacy.js bgwiki MediaWiki:Common.js/edit.js bgwikinews MediaWiki:Common.js bgwikiquote MediaWiki:Common.js bgwikiquote MediaWiki:Common.js/Tm.js bgwiktionary MediaWiki:Common.js bhwiki MediaWiki:Gadget-dropdown-menus.js bjnwiki MediaWiki:Common.js bjnwiki MediaWiki:Gadget-HotCat.js bnwiki MediaWiki:Notifier.js bnwiki MediaWiki:RefToolbarLegacy.js bnwikisource MediaWiki:Gadget-TemplatePreloader.js bswiki MediaWiki:Gadget-checkVoteRights.js bswiki MediaWiki:Gadget-patrollinks.js bugwiki MediaWiki:Gadget-HotCat.js bxrwiki MediaWiki:Gadget-HotCat.js cawiki MediaWiki:Common.js/documentation tab.js cawiki MediaWiki:RefToolbarLegacy.js cawikiquote MediaWiki:Common.js/documentation tab.js cawikiquote MediaWiki:RefToolbarLegacy.js cawiktionary MediaWiki:Common.js/documentation tab.js cewiki MediaWiki:Gadget-HotCat.js cewiki MediaWiki:Gadget-dropdown-menus.js commonswiki MediaWiki:Gadget-Flickrfixr.js commonswiki MediaWiki:Notifier.js commonswiki MediaWiki:UploadFormTest.js dewiki MediaWiki:Gadget-PrettyLog.js dewikiversity MediaWiki:Gadget-PageWatcher.js elwikinews MediaWiki:Comments.js elwikinews MediaWiki:Gadget-CommentWatch.js elwikisource MediaWiki:Gadget-TemplatePreloader.js enwiki MediaWiki:Gadget-dropdown-menus-nonvector.js enwiki MediaWiki:RefToolbarLegacy.js enwikibooks MediaWiki:Gadget-markblocked.js enwikinews MediaWiki:Gadget-CommentWatch.js enwikinews MediaWiki:Gadget-bracketmatch.js enwikinews MediaWiki:Gadget-readyAlert.js enwikiquote MediaWiki:Gadget-EnhancedInterwikis.js enwikiquote MediaWiki:Gadget-EnhancedInterwikis.js enwikisource MediaWiki:Dictionary.js enwikisource MediaWiki:Gadget-TemplatePreloader.js enwikisource MediaWiki:Gadget-massdelete.js eowiki MediaWiki:Common.js/documentation tab.js eowikisource MediaWiki:Gadget-TemplatePreloader.js eswikinews MediaWiki:Gadget-AlertaRev.js eswikinews MediaWiki:Gadget-VigilaComentario.js fawiki MediaWiki:Gadget-InterwikiOrder.js fawiki MediaWiki:Gadget-LiveRC.js/Extensions/HotCatsMulti.js fawiki MediaWiki:Gadget-Suggest.js fawiki MediaWiki:Gadget-dropdown-menus.js fawiki MediaWiki:Gadget-metadata.js fawiki MediaWiki:Gadget-userinfo.js fawiki MediaWiki:RefToolbarLegacy.js fawiki MediaWiki:UploadForm.js fawikibooks MediaWiki:Gadget-HotCat.js fawikinews MediaWiki:Comments.js fawikinews MediaWiki:Gadget-CommentWatch.js fawikinews MediaWiki:Gadget-HotCat.js fawikinews MediaWiki:Mwapilib.js fawikiquote MediaWiki:Gadget-dropdown-menus.js fawikisource MediaWiki:Gadget-HotCat.js fawikivoyage MediaWiki:Gadget-userinfo.js fawikivoyage MediaWiki:Ticker.js fawiktionary MediaWiki:Gadget-HotCat.js fawiktionary MediaWiki:Gadget-userinfo.js fawiktionary MediaWiki:RefToolbarLegacy.js fiwiki MediaWiki:Gadget-util.js fiwikibooks MediaWiki:Gadget-AJAX-esikatselu.js fiwikinews MediaWiki:Common.js frwiki MediaWiki:Gadget-DeveloppementJavaScript.js frwiki MediaWiki:Gadget-PagesSansBandeauDePortail.js frwikibooks MediaWiki:Gadget-HotCats.js frwikinews MediaWiki:Gadget-BandeauxPages.js frwikinews MediaWiki:Gadget-HotCatsMulti.js frwikisource MediaWiki:Gadget-BandeauxPortails.js frwikisource MediaWiki:Gadget-ChangeCategorie.js frwikisource MediaWiki:Gadget-HotCatsMulti.js frwikisource MediaWiki:Gadget-QualityRibbon.js gagwiki MediaWiki:Gadget-HotCat.js hewiki MediaWiki:AlertFreeUseImage.js hewiki MediaWiki:AlertProtected.js hewiki MediaWiki:Gadget-TrollOptions.js hewikibooks MediaWiki:AlertProtected.js hewikibooks MediaWiki:Gadget-InterwikiOrder.js hewikibooks MediaWiki:Gadget-QPreview.js hewikibooks MediaWiki:Gadget-TrollOptions.js hewikinews MediaWiki:AlertProtected.js hewikiquote MediaWiki:Gadget-CustomSideBarLinks.js hewikiquote MediaWiki:Gadget-InterwikiOrder.js hewikiquote MediaWiki:Gadget-QPreview.js hewikiquote MediaWiki:Gadget-rcPatrol.js hewikisource MediaWiki:Gadget-InterwikiOrder.js hewikisource MediaWiki:Gadget-QPreview.js hewikivoyage MediaWiki:AlertProtected.js hewikivoyage MediaWiki:Gadget-Contributions.js hewikivoyage MediaWiki:Gadget-HotCat.js hewikivoyage MediaWiki:Gadget-QPreview.js hiwiki MediaWiki:Gadget-dropdown-menus.js hiwiki MediaWiki:Gadget-metadata.js hrwiki MediaWiki:Gadget-patrollinks.js hrwikiquote MediaWiki:Gadget-HotCat.js hrwikisource MediaWiki:Gadget-HotCat.js hrwiktionary MediaWiki:Gadget-HotCat.js huwiki MediaWiki:Gadget-api.js huwiki MediaWiki:Gadget-autocomplete.js huwiki MediaWiki:Gadget-catinsert.js huwiki MediaWiki:Gadget-sablonmester.js huwikinews MediaWiki:Gadget-autocomplete.js huwikinews MediaWiki:Gadget-catinsert.js huwikisource MediaWiki:Gadget-hotcat.js huwiktionary MediaWiki:Gadget-catinsert.js huwiktionary MediaWiki:Gadget-hotcat.js idwiktionary MediaWiki:Common.js idwiktionary MediaWiki:Gadget-HotCat.js incubatorwiki MediaWiki:Gadget-massdelete.js itwiktionary MediaWiki:Gadget-AjaxMassRB.js itwiktionary MediaWiki:Gadget-dropdown-menus.js jvwiki MediaWiki:Common.js kawiki MediaWiki:Common.js kawiki MediaWiki:Gadget-dropdown-menus.js kawiki MediaWiki:Gadget-preview.js kbdwiki MediaWiki:Gadget-HotCat.js kkwiki MediaWiki:Gadget-QPreview.js lezwiki MediaWiki:Gadget-HotCat.js ltwiki MediaWiki:Gadget-markblocked.js ltwiktionary MediaWiki:Gadget-HotCat.js lvwiki MediaWiki:RefToolbarLegacy.js maiwiki MediaWiki:Gadget-dropdown-menus.js maiwiki MediaWiki:Gadget-metadata.js map_bmswiki MediaWiki:Common.js map_bmswiki MediaWiki:Gadget-HotCat.js mediawikiwiki MediaWiki:Gadget-ajaxrecentchanges.js metawiki MediaWiki:Gadget-markblocked.js mgwiktionary MediaWiki:Common.js mgwiktionary MediaWiki:Gadget-HotCat.js minwiki MediaWiki:Common.js mkwiki MediaWiki:Gadget-HotCat.js mkwiki MediaWiki:Gadget-dropdown-menus.js mkwiki MediaWiki:Gadget-metadata.js mkwiki MediaWiki:Gadget-modrollback.js mkwiki MediaWiki:RefToolbarLegacy.js mkwikisource MediaWiki:Gadget-HotCat.js mkwikisource MediaWiki:Gadget-dropdown-menus.js mkwikisource MediaWiki:Gadget-metadata.js mkwikisource MediaWiki:Gadget-modrollback.js mrjwiki MediaWiki:Gadget-HotCat.js mtwiktionary MediaWiki:Common.js mznwiki MediaWiki:Gadget-HotCat.js mznwiki MediaWiki:Gadget-userinfo.js ndswiktionary MediaWiki:Common.js newiki MediaWiki:Gadget-dropdown-menus.js newiki MediaWiki:Gadget-metadata.js nnwiktionary MediaWiki:Common.js nowiki MediaWiki:Gadget-InterwikiOrder.js nowiki MediaWiki:Gadget-show-patrol-log.js nvwiki MediaWiki:Gadget-HotCat.js orwiki MediaWiki:Gadget-dropdown-menus.js orwiki MediaWiki:Gadget-metadata.js orwiki MediaWiki:RefToolbarLegacy.js orwiktionary MediaWiki:Common.js plwikinews MediaWiki:Common.js pswiki MediaWiki:Gadget-afchelper.js pswiki MediaWiki:Gadget-dropdown-menus.js pswiki MediaWiki:Gadget-metadata.js pswiktionary MediaWiki:Gadget-userinfo.js ptwiki MediaWiki:Ticker.js ptwikinews MediaWiki:Ticker.js ptwiktionary MediaWiki:Common.js rowikinews MediaWiki:Ticker.js ruwiki MediaWiki:Gadget-HotCat.js ruwiki MediaWiki:Gadget-dropdown-menus.js ruwiki MediaWiki:Gadget-qualityArticles.js ruwiki MediaWiki:Voting.js ruwiki MediaWiki:Voting10.js ruwiki MediaWiki:Voting11.js ruwiki MediaWiki:Voting12.js ruwiki MediaWiki:Voting7.js ruwiki MediaWiki:Voting8.js ruwiki MediaWiki:Voting9.js ruwikibooks MediaWiki:Gadget-preview.js ruwikimedia MediaWiki:AjaxTranslation.js ruwikimedia MediaWiki:Gadget-HotCat.js ruwikinews MediaWiki:Gadget-preview.js ruwikinews MediaWiki:Mwapilib.js ruwikinews MediaWiki:Ticker.js ruwikiquote MediaWiki:Gadget-dropdown-menus.js ruwikiquote MediaWiki:Gadget-preview.js ruwikisource MediaWiki:Dictionary.js ruwikisource MediaWiki:Gadget-HotCat.js ruwikisource MediaWiki:Gadget-preview.js ruwiktionary MediaWiki:Gadget-HotCat.js ruwiktionary MediaWiki:Gadget-dropdown-menus.js sawikisource MediaWiki:Gadget-TemplatePreloader.js shwiktionary MediaWiki:Common.js shwiktionary MediaWiki:Gadget-patrollinks.js simplewiki MediaWiki:Gadget-Bracketmatch.js simplewiki MediaWiki:Gadget-EnhancedInterwikis.js simplewikibooks MediaWiki:Gadget-HotCat.js siwiki MediaWiki:Gadget-dropdown-menus.js siwiki MediaWiki:UploadForm.js siwikibooks MediaWiki:Gadget-HotCat.js slwiki MediaWiki:Gadget-modrollback.js slwikibooks MediaWiki:Gadget-HotCat.js slwikisource MediaWiki:Gadget-HotCat.js sourceswiki MediaWiki:Dictionary.js sourceswiki MediaWiki:Gadget-HotCat.js sqwikinews MediaWiki:Gadget-CommentWatch.js sqwikinews MediaWiki:Ticker.js srwikibooks MediaWiki:Common.js/Edit tools.js srwikibooks MediaWiki:Common.js/mwbot.js srwikinews MediaWiki:Gadget-CommentWatch.js srwikinews MediaWiki:Gadget-readyAlert.js srwikinews MediaWiki:Ticker.js strategywiki MediaWiki:Gadget-hotcat.js svwikibooks MediaWiki:Gadget-HotCat.js svwikiquote MediaWiki:Gadget-hotcat.js svwikiversity MediaWiki:Common.js svwikiversity MediaWiki:Gadget-hotcat.js test2wiki MediaWiki:Gadget-Flickrfixr.js test2wiki MediaWiki:Gadget-dropdown-menus.js test2wiki MediaWiki:Gadget-metadata.js testwiki MediaWiki:Gadget-closeAFD.js testwiki MediaWiki:Gadget-dropdown-menus.js testwiki MediaWiki:Gadget-massblock.js testwiki MediaWiki:RefToolbarLegacy.js testwiki MediaWiki:Ticker.js testwiki MediaWiki:Wikibugs.js tewiki MediaWiki:RefToolbarLegacy.js tewikisource MediaWiki:Gadget-TemplatePreloader.js trwiki MediaWiki:RefToolbarLegacy.js trwikinews MediaWiki:Gadget-HotCat.js trwikinews MediaWiki:Gadget-Pratik menu.js ttwiki MediaWiki:Gadget-HotCat.js ttwikibooks MediaWiki:Gadget-preview.js ttwikibooks MediaWiki:Upload.js ukwiki MediaWiki:Voting2.js ukwiki MediaWiki:Voting3.js ukwiki MediaWiki:Voting4.js ukwiki MediaWiki:Voting4bis.js ukwiki MediaWiki:Voting6.js ukwikisource MediaWiki:Gadget-TemplatePreloader.js urwiki MediaWiki:Gadget-BandeauxPortails.js urwiki MediaWiki:Gadget-LiveRC.js/Extensions/HotCatsMulti.js urwiki MediaWiki:Gadget-catinsert.js urwiki MediaWiki:Gadget-dropdown-menus-nonvector.js urwiki MediaWiki:Gadget-metadata.js urwiki MediaWiki:Gadget-saveandedit.js urwiki MediaWiki:Gadget-userinfo.js urwiki MediaWiki:RefToolbarLegacy.js viwiki MediaWiki:RefToolbarLegacy.js viwikibooks MediaWiki:Gadget-dropdown-menus.js viwikisource MediaWiki:Gadget-TemplatePreloader.js wikidatawiki MediaWiki:Gadget-dropdown-menus.js wikimania2010wiki MediaWiki:Gadget-HotCat.js yiwiki MediaWiki:Gadget-HotCat.js zh_min_nanwiki MediaWiki:Gadget-HotCat.js zh_yuewiki MediaWiki:Gadget-dropdown-menus.js zh_yuewiki MediaWiki:Gadget-modrollback.js zhwiki MediaWiki:Gadget-markblocked.js zhwiki MediaWiki:Gadget-metadata.js zhwiki MediaWiki:Gadget-quickpreview.js zhwikibooks MediaWiki:Gadget-HotCat.js zhwikinews MediaWiki:Comments.js (total: 279, shown: 279) reedy@terbium:~$
HotCat on Commons has not been using sajax since 2012: https://commons.wikimedia.org/wiki/?diff=66523265.
I guess most local versions can simply be replaced with a mw.loader.load() to the canonical one.
I suspect a lot of them just want a newer version copying over them OR changing to load the version from commons/similar
The software development model whereby it falls on MediaWiki core developers to chase down and fix users of deprecated APIs is fundamentally broken. Part of our responsibility as developers is to keep the MediaWiki platform attractive to new users and comprehensible to new developers, and we are going to fail to meet this responsibility if we continue to put a higher priority on backward-compatibility for user-maintained scripts than the flexibility, simplicity, and modernity of our platform.
The only requirements for removing Sajax are an e-mail notice to wikitech-l and/or wikitech-ambassadors.
The software development model whereby it falls on MediaWiki core developers to chase down and fix users of deprecated APIs is fundamentally broken.
Yep, I agree with this.
Part of our responsibility as developers is to keep the MediaWiki platform attractive to new users and comprehensible to new developers, and we are going to fail to meet this responsibility if we continue to put a higher priority on backward-compatibility for user-maintained scripts than the flexibility, simplicity, and modernity of our platform.
Also mostly agree with this.
The only requirements for removing Sajax are an e-mail notice to wikitech-l and/or wikitech-ambassadors.
This, however, would probably result in a huge community backlash when people's scripts stopped working. Most users don't care whether a script uses a deprecated API - they just care whether it works or not. At the least, there needs to be a message to community noticeboards on all affected WMF wikis and a lengthy period of time (3 months?) to allow people to migrate their scripts.
For scripts like HotCat that no longer use the deprecated code, it should be easy enough to update copies on other wikis so that they will work after Sajax is disabled. But many scripts will need new code, and switching from Sajax to $.ajax or mw.Api is not necessarily easy.
I'd be interested to see how many uses of Sajax there are when you include the User namespace on all WMF wikis, instead of just the Mediawiki namespace as was done on the searches above. On enwiki at least, the numbers are alarming: there are 458 hits for a search of "sajax" in the User namespace, compared to 2 in the Mediawiki namespace.
The software development model whereby it falls on MediaWiki core developers to chase down and fix users of deprecated APIs is fundamentally broken. Part of our responsibility as developers is to keep the MediaWiki platform attractive to new users and comprehensible to new developers, and we are going to fail to meet this responsibility if we continue to put a higher priority on backward-compatibility for user-maintained scripts than the flexibility, simplicity, and modernity of our platform.
Part of our responsibility as software engineers supporting the Wikimedia community is to not pull out the rug from under them without a good reason. The interest we're paying on the Sajax technical debt is trivial compared to some other problems. I'm comparably new here, and joining the developer community a few years ago, I didn't even know that something like Sajax exists; it did not impede me in any way.
We should live up to the standard you want to enforce ourselves first. MediaWiki is still compatible with PHP 5.3 rather than 5.5 only because the Wikimedia Foundation still runs 5.3. The Sajax removal was, for the longest time (over two years!), blocked on its usage in SecurePoll, which is used (AFAIK) exclusively by the WMF and which nevertheless receives almost no maintenance from us.
I'm not saying we should fix any odd script on the hundreds of wikis every time we make a backwards-incompatible change, but I am saying we should support those that will have to do it, and make some effort to fix the simple cases. (In this case, I have a hunch that globally replacing sajax_init_object() with new XMLHttpRequest() will fix 85% of these scripts, another 10% are probably relying on other APIs we've already removed and are thus already broken, and only the last 5% will need any real thought to evaluate.)
The only requirements for removing Sajax are an e-mail notice to wikitech-l and/or wikitech-ambassadors.
I think it would be good to at least include it in Tech News. Would be nice to include the lists of scripts which may be affected with the announcement, too.
Reedy added a comment.EditedAug 6 2015, 11:09 AM
reedy@tin:~$ mwgrep sajax --max-results 300 ## Public wiki results acewiki MediaWiki:Common.js arwiki MediaWiki:Gadget-BandeauxPortails.js arwiki MediaWiki:Gadget-InterwikiOrder.js arwiki MediaWiki:Gadget-saveandedit.js arwiki MediaWiki:Gadget-userinfo.js arwikinews MediaWiki:Gadget-HotCat.js arwikinews MediaWiki:Gadget-HotCat.js aswiki MediaWiki:Gadget-dropdown-menus.js aswiki MediaWiki:Notifier.js aswiki MediaWiki:RefToolbarLegacy.js aswikisource MediaWiki:Gadget-TemplatePreloader.js azwiki MediaWiki:Gadget-HotCat.js azwikiquote MediaWiki:Gadget-HotCat.js azwikisource MediaWiki:Gadget-HotCat.js bawiki MediaWiki:Common.js/documentation tab.js bdwikimedia MediaWiki:Gadget-HotCat.js be_x_oldwiki MediaWiki:RefToolbarLegacy.js bgwiki MediaWiki:Common.js/edit.js bgwikiquote MediaWiki:Common.js bgwikiquote MediaWiki:Common.js/Tm.js bgwiktionary MediaWiki:Common.js bhwiki MediaWiki:Gadget-dropdown-menus.js bjnwiki MediaWiki:Common.js bjnwiki MediaWiki:Gadget-HotCat.js bnwiki MediaWiki:Notifier.js bnwiki MediaWiki:RefToolbarLegacy.js bnwikisource MediaWiki:Gadget-TemplatePreloader.js bswiki MediaWiki:Gadget-checkVoteRights.js bswiki MediaWiki:Gadget-patrollinks.js bugwiki MediaWiki:Gadget-HotCat.js bxrwiki MediaWiki:Gadget-HotCat.js cawiki MediaWiki:Common.js/documentation tab.js cawiki MediaWiki:RefToolbarLegacy.js cawikiquote MediaWiki:Common.js/documentation tab.js cawikiquote MediaWiki:RefToolbarLegacy.js cawiktionary MediaWiki:Common.js/documentation tab.js cewiki MediaWiki:Gadget-HotCat.js cewiki MediaWiki:Gadget-dropdown-menus.js commonswiki MediaWiki:Gadget-Flickrfixr.js commonswiki MediaWiki:Notifier.js commonswiki MediaWiki:UploadFormTest.js dewiki MediaWiki:Gadget-PrettyLog.js dewikiversity MediaWiki:Gadget-PageWatcher.js elwikinews MediaWiki:Comments.js elwikinews MediaWiki:Gadget-CommentWatch.js elwikisource MediaWiki:Gadget-TemplatePreloader.js enwiki MediaWiki:Gadget-dropdown-menus-nonvector.js enwiki MediaWiki:RefToolbarLegacy.js enwikibooks MediaWiki:Gadget-markblocked.js enwikinews MediaWiki:Gadget-CommentWatch.js enwikinews MediaWiki:Gadget-bracketmatch.js enwikinews MediaWiki:Gadget-readyAlert.js enwikiquote MediaWiki:Gadget-EnhancedInterwikis.js enwikiquote MediaWiki:Gadget-EnhancedInterwikis.js enwikisource MediaWiki:Dictionary.js enwikisource MediaWiki:Gadget-TemplatePreloader.js enwikisource MediaWiki:Gadget-massdelete.js eowiki MediaWiki:Common.js/documentation tab.js eowikisource MediaWiki:Gadget-TemplatePreloader.js eswikinews MediaWiki:Gadget-AlertaRev.js eswikinews MediaWiki:Gadget-VigilaComentario.js fawiki MediaWiki:Gadget-InterwikiOrder.js fawiki MediaWiki:Gadget-LiveRC.js/Extensions/HotCatsMulti.js fawiki MediaWiki:Gadget-Suggest.js fawiki MediaWiki:Gadget-dropdown-menus.js fawiki MediaWiki:Gadget-metadata.js fawiki MediaWiki:Gadget-userinfo.js fawiki MediaWiki:RefToolbarLegacy.js fawiki MediaWiki:UploadForm.js fawikibooks MediaWiki:Gadget-HotCat.js fawikinews MediaWiki:Comments.js fawikinews MediaWiki:Gadget-CommentWatch.js fawikinews MediaWiki:Gadget-HotCat.js fawikinews MediaWiki:Mwapilib.js fawikiquote MediaWiki:Gadget-dropdown-menus.js fawikisource MediaWiki:Gadget-HotCat.js fawikivoyage MediaWiki:Gadget-userinfo.js fawikivoyage MediaWiki:Ticker.js fawiktionary MediaWiki:Gadget-HotCat.js fawiktionary MediaWiki:Gadget-userinfo.js fawiktionary MediaWiki:RefToolbarLegacy.js fiwiki MediaWiki:Gadget-util.js fiwikibooks MediaWiki:Gadget-AJAX-esikatselu.js fiwikinews MediaWiki:Common.js frwiki MediaWiki:Gadget-DeveloppementJavaScript.js frwiki MediaWiki:Gadget-PagesSansBandeauDePortail.js frwikibooks MediaWiki:Gadget-HotCats.js frwikinews MediaWiki:Gadget-BandeauxPages.js frwikinews MediaWiki:Gadget-HotCatsMulti.js frwikisource MediaWiki:Gadget-BandeauxPortails.js frwikisource MediaWiki:Gadget-ChangeCategorie.js frwikisource MediaWiki:Gadget-HotCatsMulti.js frwikisource MediaWiki:Gadget-QualityRibbon.js gagwiki MediaWiki:Gadget-HotCat.js hewiki MediaWiki:AlertFreeUseImage.js hewiki MediaWiki:AlertProtected.js hewiki MediaWiki:Gadget-TrollOptions.js hewikibooks MediaWiki:AlertProtected.js hewikibooks MediaWiki:Gadget-InterwikiOrder.js hewikibooks MediaWiki:Gadget-QPreview.js hewikibooks MediaWiki:Gadget-TrollOptions.js hewikinews MediaWiki:AlertProtected.js hewikiquote MediaWiki:Gadget-CustomSideBarLinks.js hewikiquote MediaWiki:Gadget-InterwikiOrder.js hewikiquote MediaWiki:Gadget-QPreview.js hewikiquote MediaWiki:Gadget-rcPatrol.js hewikisource MediaWiki:Gadget-InterwikiOrder.js hewikisource MediaWiki:Gadget-QPreview.js hewikivoyage MediaWiki:AlertProtected.js hewikivoyage MediaWiki:Gadget-Contributions.js hewikivoyage MediaWiki:Gadget-HotCat.js hewikivoyage MediaWiki:Gadget-QPreview.js hiwiki MediaWiki:Gadget-dropdown-menus.js hiwiki MediaWiki:Gadget-metadata.js hrwiki MediaWiki:Gadget-patrollinks.js hrwikiquote MediaWiki:Gadget-HotCat.js hrwikisource MediaWiki:Gadget-HotCat.js hrwiktionary MediaWiki:Gadget-HotCat.js huwiki MediaWiki:Gadget-api.js huwiki MediaWiki:Gadget-autocomplete.js huwiki MediaWiki:Gadget-catinsert.js huwiki MediaWiki:Gadget-sablonmester.js huwikinews MediaWiki:Gadget-autocomplete.js huwikinews MediaWiki:Gadget-catinsert.js huwikisource MediaWiki:Gadget-hotcat.js huwiktionary MediaWiki:Gadget-catinsert.js huwiktionary MediaWiki:Gadget-hotcat.js idwiktionary MediaWiki:Common.js idwiktionary MediaWiki:Gadget-HotCat.js incubatorwiki MediaWiki:Gadget-massdelete.js incubatorwiki MediaWiki:Wp/bgn/Gadget-dropdown-menus.js itwiktionary MediaWiki:Gadget-AjaxMassRB.js itwiktionary MediaWiki:Gadget-dropdown-menus.js jvwiki MediaWiki:Common.js kawiki MediaWiki:Common.js kawiki MediaWiki:Gadget-dropdown-menus.js kawiki MediaWiki:Gadget-preview.js kbdwiki MediaWiki:Gadget-HotCat.js kkwiki MediaWiki:Gadget-QPreview.js lezwiki MediaWiki:Gadget-HotCat.js ltwiki MediaWiki:Gadget-markblocked.js ltwiktionary MediaWiki:Gadget-HotCat.js lvwiki MediaWiki:Gadget-massedit.js lvwiki MediaWiki:RefToolbarLegacy.js maiwiki MediaWiki:Gadget-dropdown-menus.js maiwiki MediaWiki:Gadget-metadata.js map_bmswiki MediaWiki:Common.js map_bmswiki MediaWiki:Gadget-HotCat.js mediawikiwiki MediaWiki:Gadget-ajaxrecentchanges.js metawiki MediaWiki:Gadget-markblocked.js mgwiktionary MediaWiki:Common.js mgwiktionary MediaWiki:Gadget-HotCat.js minwiki MediaWiki:Common.js mkwiki MediaWiki:Gadget-HotCat.js mkwiki MediaWiki:Gadget-dropdown-menus.js mkwiki MediaWiki:Gadget-metadata.js mkwiki MediaWiki:Gadget-modrollback.js mkwiki MediaWiki:RefToolbarLegacy.js mkwikisource MediaWiki:Gadget-HotCat.js mkwikisource MediaWiki:Gadget-dropdown-menus.js mkwikisource MediaWiki:Gadget-metadata.js mkwikisource MediaWiki:Gadget-modrollback.js mrjwiki MediaWiki:Gadget-HotCat.js mtwiktionary MediaWiki:Common.js mznwiki MediaWiki:Gadget-HotCat.js mznwiki MediaWiki:Gadget-userinfo.js ndswiktionary MediaWiki:Common.js newiki MediaWiki:Gadget-dropdown-menus.js newiki MediaWiki:Gadget-metadata.js nnwiktionary MediaWiki:Common.js nowiki MediaWiki:Gadget-InterwikiOrder.js nowiki MediaWiki:Gadget-show-patrol-log.js nvwiki MediaWiki:Gadget-HotCat.js orwiki MediaWiki:Gadget-dropdown-menus.js orwiki MediaWiki:Gadget-metadata.js orwiki MediaWiki:RefToolbarLegacy.js plwikinews MediaWiki:Common.js pswiki MediaWiki:Gadget-afchelper.js pswiki MediaWiki:Gadget-dropdown-menus.js pswiki MediaWiki:Gadget-metadata.js pswiktionary MediaWiki:Gadget-userinfo.js ptwiki MediaWiki:Ticker.js ptwikinews MediaWiki:Ticker.js ptwiktionary MediaWiki:Common.js rowikinews MediaWiki:Ticker.js ruwiki MediaWiki:Gadget-HotCat.js ruwiki MediaWiki:Gadget-dropdown-menus.js ruwiki MediaWiki:Gadget-qualityArticles.js ruwiki MediaWiki:Voting.js ruwiki MediaWiki:Voting10.js ruwiki MediaWiki:Voting11.js ruwiki MediaWiki:Voting12.js ruwiki MediaWiki:Voting7.js ruwiki MediaWiki:Voting8.js ruwiki MediaWiki:Voting9.js ruwikibooks MediaWiki:Gadget-preview.js ruwikimedia MediaWiki:AjaxTranslation.js ruwikimedia MediaWiki:Gadget-HotCat.js ruwikinews MediaWiki:Gadget-preview.js ruwikinews MediaWiki:Mwapilib.js ruwikinews MediaWiki:Ticker.js ruwikiquote MediaWiki:Gadget-dropdown-menus.js ruwikiquote MediaWiki:Gadget-preview.js ruwikisource MediaWiki:Dictionary.js ruwikisource MediaWiki:Gadget-HotCat.js ruwikisource MediaWiki:Gadget-preview.js ruwiktionary MediaWiki:Gadget-HotCat.js ruwiktionary MediaWiki:Gadget-dropdown-menus.js sawikisource MediaWiki:Gadget-TemplatePreloader.js shwiktionary MediaWiki:Common.js shwiktionary MediaWiki:Gadget-patrollinks.js simplewiki MediaWiki:Gadget-Bracketmatch.js simplewiki MediaWiki:Gadget-EnhancedInterwikis.js simplewikibooks MediaWiki:Gadget-HotCat.js siwiki MediaWiki:Gadget-dropdown-menus.js siwiki MediaWiki:UploadForm.js siwikibooks MediaWiki:Gadget-HotCat.js slwiki MediaWiki:Gadget-modrollback.js slwikibooks MediaWiki:Gadget-HotCat.js slwikisource MediaWiki:Gadget-HotCat.js sourceswiki MediaWiki:Dictionary.js sourceswiki MediaWiki:Gadget-HotCat.js sqwikinews MediaWiki:Gadget-CommentWatch.js sqwikinews MediaWiki:Ticker.js srwikibooks MediaWiki:Common.js/Edit tools.js srwikibooks MediaWiki:Common.js/mwbot.js srwikinews MediaWiki:Gadget-CommentWatch.js srwikinews MediaWiki:Gadget-readyAlert.js srwikinews MediaWiki:Ticker.js strategywiki MediaWiki:Gadget-hotcat.js svwikibooks MediaWiki:Gadget-HotCat.js svwikiquote MediaWiki:Gadget-hotcat.js svwikiversity MediaWiki:Common.js svwikiversity MediaWiki:Gadget-hotcat.js test2wiki MediaWiki:Gadget-Flickrfixr.js test2wiki MediaWiki:Gadget-dropdown-menus.js test2wiki MediaWiki:Gadget-metadata.js testwiki MediaWiki:Gadget-closeAFD.js testwiki MediaWiki:Gadget-dropdown-menus.js testwiki MediaWiki:Gadget-massblock.js testwiki MediaWiki:RefToolbarLegacy.js tewiki MediaWiki:RefToolbarLegacy.js tewikisource MediaWiki:Gadget-TemplatePreloader.js trwiki MediaWiki:RefToolbarLegacy.js trwikinews MediaWiki:Gadget-HotCat.js trwikinews MediaWiki:Gadget-Pratik menu.js ttwiki MediaWiki:Gadget-HotCat.js ttwikibooks MediaWiki:Gadget-preview.js ttwikibooks MediaWiki:Upload.js ukwiki MediaWiki:Voting2.js ukwiki MediaWiki:Voting3.js ukwiki MediaWiki:Voting4.js ukwiki MediaWiki:Voting4bis.js ukwiki MediaWiki:Voting6.js ukwikisource MediaWiki:Gadget-TemplatePreloader.js urwiki MediaWiki:Gadget-BandeauxPortails.js urwiki MediaWiki:Gadget-LiveRC.js/Extensions/HotCatsMulti.js urwiki MediaWiki:Gadget-catinsert.js urwiki MediaWiki:Gadget-dropdown-menus-nonvector.js urwiki MediaWiki:Gadget-metadata.js urwiki MediaWiki:Gadget-saveandedit.js urwiki MediaWiki:Gadget-userinfo.js urwiki MediaWiki:RefToolbarLegacy.js viwiki MediaWiki:RefToolbarLegacy.js viwikibooks MediaWiki:Gadget-dropdown-menus.js viwikisource MediaWiki:Gadget-TemplatePreloader.js wikidatawiki MediaWiki:Gadget-dropdown-menus.js wikimania2010wiki MediaWiki:Gadget-HotCat.js yiwiki MediaWiki:Gadget-HotCat.js zh_min_nanwiki MediaWiki:Gadget-HotCat.js zh_yuewiki MediaWiki:Gadget-dropdown-menus.js zh_yuewiki MediaWiki:Gadget-modrollback.js zhwiki MediaWiki:Gadget-markblocked.js zhwiki MediaWiki:Gadget-metadata.js zhwiki MediaWiki:Gadget-quickpreview.js zhwikibooks MediaWiki:Gadget-HotCat.js zhwikinews MediaWiki:Comments.js (total: 277, shown: 277) reedy@tin:~$
I posted a list of all scripts affected on WMF wikis ;)
Whoops. All Praise to the Reedy! ;)
I'd be interested to see how many uses of Sajax there are when you include the User namespace on all WMF wikis, instead of just the Mediawiki namespace as was done on the searches above. On enwiki at least, the numbers are alarming: there are 458 hits for a search of "sajax" in the User namespace, compared to 2 in the Mediawiki namespace.
@Reedy or @Krenair: can you please run mwgrep sajax --user and report the number of results across all public Wikimedia wikis?
The software development model whereby it falls on MediaWiki core developers to chase down and fix users of deprecated APIs is fundamentally broken. Part of our responsibility as developers is to keep the MediaWiki platform attractive to new users and comprehensible to new developers, and we are going to fail to meet this responsibility if we continue to put a higher priority on backward-compatibility for user-maintained scripts than the flexibility, simplicity, and modernity of our platform.
You're setting up another false dichotomy here. Nobody is suggesting that it's MediaWiki core developers' responsibility to fix every user script. What several people (including @MrStradivarius and @matmarex) are trying to explain to you is that it's unacceptable to make breaking changes without sufficient warning unless there are exigent circumstances (unavoidable security or performance implications).
In both the cases of document.write() and sajax, for how long have we been telling users directly (in the browser console, on their talk pages, via e-mail) that these interfaces are no longer supported? @MrStradivarius suggested a three-month warning period. I'd go a bit further and suggest six months. What's the rush? If we really need a formal policy that spells this out, I'm sure we can create one on mediawiki.org.
The only requirements for removing Sajax are an e-mail notice to wikitech-l and/or wikitech-ambassadors.
No. This is wrong. I'll repeat: it's unacceptable to make breaking changes without sufficient warning unless there are exigent circumstances (unavoidable security or performance implications). Nobody is saying that we can't ever modernize the codebase; people are saying that if you want to do that, you first need to make sure that users have an opportunity to correct their current code before you come along and break it. This is basic courtesy.
Agreed. Processes affected include, [[:en:Wikipedia:Featured picture candidates]] and - it would appear - a good section of [[:en:WP:TWINKLE]]. These are perfectly fixable, but '''there is literally no reason whatsoever on the developer's part to break them without any warning whatsoever.
You have a responsibility here to your users. Warnings *are* required.
Unless the removal is reverted, I don't see the point in keeping this task (to remove sajax) as "Open, Stalled".
I posted a list of all scripts affected on WMF wikis ;)
@Reedy: Those are only the scripts in the Mediawiki namespace - there are a lot more in the User namespace, especially on enwiki. My list is actually for all WMF wikis (but cobbled together from API search queries, rather than using mwgrep), and in both User and Mediawiki namespaces. It gets 739 results. If you (or anyone else) could confirm that number with mwgrep, that would be great. :)
Processes affected include ... a good section of [[:en:WP:TWINKLE]].
Actually, Twinkle isn't affected - it's people's old copies of Twinkle that are affected. People using the gadget directly will be fine.
In both the cases of document.write() and sajax, for how long have we been telling users directly (in the browser console, on their talk pages, via e-mail) that these interfaces are no longer supported?
... there is literally no reason whatsoever on the developer's part to break them without any warning whatsoever.
You have a responsibility here to your users. Warnings *are* required.
I think the problem is that while these functions have been deprecated for years, and while there have been warnings in the JavaScript console and on the mailing lists for years, the message hasn't been getting through to our end users at all. Most users don't read the mailing lists, and most probably don't even know that their browser has a JavaScript console. Even people who write user scripts will often ignore warnings in the console, either because they never check them after writing the script, because they may not know how to fix the problems, or because they retire from their respective wikis.
However, these scripts are often still in use for workflows that are important to the various communities (the scripts for enwiki's Featured picture candidates that Adam Cuerden mention are a good example). This means that someone in the community will need to fix scripts that they didn't write, otherwise their community's processes will break. And that takes time. If everyone who wrote a script using Sajax was around and able to update it, then a week might be enough. But unfortunately, we don't have that luxury.
I posted a list of all scripts affected on WMF wikis ;)
@Reedy: Those are only the scripts in the Mediawiki namespace - there are a lot more in the User namespace, especially on enwiki. My list is actually for all WMF wikis (but cobbled together from API search queries, rather than using mwgrep), and in both User and Mediawiki namespaces. It gets 739 results. If you (or anyone else) could confirm that number with mwgrep, that would be great. :)
Looks like your figure is out by quite an amount. 1367 for user pages. List incoming
Reedy added a comment.EditedAug 6 2015, 4:06 PM
## Public wiki results alswiki User:DerHexer/monobook.js alswiki User:DerHexer/vector.js alswiki User:Strommops/monobook.js alswiki User:Terfili-bötli/vector.js arwiki User:ASammour/user.js arwiki User:Aiman titi/qpreview.js arwiki User:Ciphers/HotCat-dev.js arwiki User:Ciphers/HotCat.js arwiki User:Elph/InterwikiOrder.js arwiki User:Ibrahim.ID/test.js arwiki User:Lupo/c.js arwiki User:Rami.Awad/gadget-bandsportals.js arwiki User:موسى المكناسي/saveandedit.js arwiki User:موسى المكناسي/userinfo.js arwikiquote User:Ciphers/Gadget-HotCat.js arwiktionary User:Badr alkabir/edittools.js aywiki User:Diego Grez-Cañete/Hotcat.js azwiki User:Koc61/HotCat.js azwiki User:Zscout370/batchdelete.js bewiki User:Rave/Gadget-HotCat.js bgwikinews User:Bawolff/opinion.js bjnwiki User:Ezagren/vector.js bnwiki User:Ctg4Rahat/common.js bnwiki User:Priyanka Nag/RefToolbarLegacy.js bowiki User:Viskonsas/Gadget-HotCat.js cawiki User:Anskar/scripts/vriullop.js cawiki User:Coet/scripts/vriullop.js cawiki User:Coet/tw:statuschanger.js cawiki User:Joancreus/milloraVista.js cawiktionary User:Vriullop/proves.js cebwiki User:Abastillas/monobook.js cewiki User:Sasan700/undocomment.js commonswiki User:AVRS/ajaxPreview.js commonswiki User:AVRS/diffs.js commonswiki User:Animum/easyblock.js commonswiki User:Animum/moveRV-severe.js commonswiki User:Animum/revdelete.js commonswiki User:Animum/speedytag.js commonswiki User:Arbitrarily0/cat-a-lot.js commonswiki User:Arbitrarily0/custom-hotcat.js commonswiki User:Avicennasis/HotCatMod.js commonswiki User:Brian/monobook.js commonswiki User:Bryan/EditPage.js commonswiki User:Bryan/Scripts/ExtendedWatchlist/userwatch.js commonswiki User:Bryan/Scripts/ExtendedWatchlist/watchlist.js commonswiki User:Bryan/Scripts/Poty anon.js commonswiki User:Bryan/Scripts/upload.js commonswiki User:Butko/monobook.js commonswiki User:Captainofhope/qui.js commonswiki User:Cobija/userinfo.js commonswiki User:Croquant/monobook.js commonswiki User:Croquant/vector.js commonswiki User:CuteHappyBrute/monobook.js commonswiki User:DerHexer/monobook.js commonswiki User:DerHexer/numberofcategories.js commonswiki User:DerHexer/vector.js commonswiki User:DieBuche/details.js commonswiki User:Docu/t.js commonswiki User:Dr Brains/NewPagePatrol.js commonswiki User:Emil76~commonswiki/monobook.js commonswiki User:Erik Baas/HotCat.js commonswiki User:Eug/ajaxPreview.js commonswiki User:Ex13/monobook.js commonswiki User:Exagren/vector.js commonswiki User:Ezagren/vector.js commonswiki User:Fetchcomms/delete.js commonswiki User:Fetchcomms/speedy.js commonswiki User:Flibbertigibbet/monobook.js commonswiki User:Foxj/omnitag.js commonswiki User:Juliancolton/easyblock.js commonswiki User:Kalan/poty.js commonswiki User:Kanonkas/ajaxbatchmove.js commonswiki User:Kanonkas/ajaxbatchundelete.js commonswiki User:Kanonkas/ajaxmassrollback.js commonswiki User:Kanonkas/ajaxpatrollinks.js commonswiki User:Kanonkas/batchdelete.js commonswiki User:Kanonkas/filemove.js commonswiki User:Kanonkas/moverevert2.js commonswiki User:Kanonkas/projectscope.js commonswiki User:Kanonkas/stalkcontribs.js commonswiki User:Kanonkas/wikibrowser.js commonswiki User:Lamberhurst/monobook.js commonswiki User:Lampak/DelReqHandler.js commonswiki User:Lupo/gd0.js commonswiki User:Lupo/gdh.js commonswiki User:Mailer diablo/monobook.js commonswiki User:Matanya/common.js commonswiki User:Merlissimo/monobook.js commonswiki User:MichaelMaggs/monobook.js commonswiki User:Mifter/test.js commonswiki User:Mr.Z-man/closeDR.js commonswiki User:Nixeagle/monobook.js commonswiki User:Otourly/NewPagePatrol.js commonswiki User:Patstuart/Extrascripts.js commonswiki User:Platonides/Notifier.js commonswiki User:Tgr/catinsert.js commonswiki User:Thehelpfulone/omnitag.js commonswiki User:Tim1357/Vector.js commonswiki User:Trixt/monobook.js commonswiki User:Verdy p/HotCat.js commonswiki User:Was a bee/test.js cswiki User:Mormegil/Ajaxpopup/ajaxpopup.js dawiki User:Dk-2100/hotcat.js dawiki User:Dk-2100/monobook.js dewiki User:Abadent/monobook.js dewiki User:Agruwie/monobook.js dewiki User:Arkanosis/iKiwi.js dewiki User:Arktest/monobook.js dewiki User:Avoided/twinklefluff.js dewiki User:Basilocetacea/DÜP-monobook.js dewiki User:BenBE1987/monobook.js/markadmins.js dewiki User:Bernstein 92/monobook.js dewiki User:C-M/twinklefluff.js dewiki User:Der Buckesfelder/saveandedit.js dewiki User:DerHexer/OPs.js dewiki User:DerHexer/cas.js dewiki User:DerHexer/countarticlesincategory.js dewiki User:DerHexer/deletereason.js dewiki User:DerHexer/fixlinks.js dewiki User:DerHexer/massenmail.js dewiki User:DerHexer/newarticles.js dewiki User:DerHexer/testfixlinks.js dewiki User:Dietzel/refman.js dewiki User:Dschwen/apitest.js dewiki User:EcceNux/wp sk.js dewiki User:Euku/AJAX transclusion.js dewiki User:EvaK/monobook.js dewiki User:EvaK/vector.js dewiki User:Faenny*/simple.js dewiki User:Fomafix/Gadget-HotCat.js dewiki User:Forrester/düp-monobook.js dewiki User:Ghilt/fixlinks.js dewiki User:Halbarath/monobook/weiterleitungen.js dewiki User:Herr von Quack und zu Bornhöft/twinklefluff.js dewiki User:Hx87/wp sk.js dewiki User:Ireas/düp-monobook.js dewiki User:Kinley/monobook.js dewiki User:Lindi44/vm.js dewiki User:Lupo/c.js dewiki User:Martinvdputten/monobook.js dewiki User:Merlissimo/export.js dewiki User:Merlissimo/scripts/cat.js dewiki User:Merlissimo/scripts/iw.js dewiki User:Merlissimo/scripts/manualarchive.js dewiki User:Merlissimo/scripts/quickrc.js dewiki User:Mythology1986/vector.js dewiki User:P.Copp/scripts/manualarchive.js dewiki User:P.Copp/scripts/substnow.js dewiki User:P.Copp/scripts/wiki.js dewiki User:Phixweb/düp-monobook.js dewiki User:Quedel/monobook-bilder.js dewiki User:Revolus/monobook.js/markadmins.js dewiki User:Revvar/VM/vorlagenmeister.js dewiki User:Schneeschieber/monobook.js dewiki User:Steavor/monobook.js dewiki User:SteveK/VM/vorlagenmeister.js dewiki User:SteveK/Vorlagenmeister.js dewiki User:Tafkas/twinklefluff.js dewiki User:Thine Antique Pen/endyk.js dewiki User:Tilla/fixlinks.js dewiki User:Tim Freitag/monobook.js dewiki User:Weberma/monobook.js dewiki User:Yellowcard/duep.js dewiki User:संतोष दहिवळ/vector.js dewiki User:✓/monobook/weiterleitungen.js dewikinews User:Mabdul/monobook.js dewikiversity User:Axmann8/monobook.js dsbwiki User:Tlustulimu/documentation tab.js elwiki User:Geraki/Edit tools.js elwiki User:Geraki/HotCat.js elwiki User:Geraki/metadata.js enwiki User:2D/afdvote2.js enwiki User:2D/road.js enwiki User:2D/statusupdater.js enwiki User:2D/tc.js enwiki User:55david/monobook.js enwiki User:AA/monobook.js enwiki User:Adam Cuerden/closeFPC.js enwiki User:Adjwilley/cactions.js enwiki User:Ahecht/massmove.js enwiki User:Airbring/vector.js enwiki User:Ais523/bracketmatch.js enwiki User:Alanl/mergeHelper.js enwiki User:Alanl/mergeHelper2.js enwiki User:Alex Smotrov/iwiki.js enwiki User:Alex Smotrov/qpreview.js enwiki User:Alexia Death/monobook.js enwiki User:Alpha Quadrant/cactions.js enwiki User:Alpha Quadrant/rollback.js enwiki User:Amalthea/MakeAutopatroller.js enwiki User:Amalthea/MakeReviewer.js enwiki User:Amalthea/MakeRollbacker.js enwiki User:Amalthea/Twirl.js enwiki User:Amorymeltzer/ajaxsendcomment.js enwiki User:Amorymeltzer/userinfo.js enwiki User:Andrea105/monobook.js enwiki User:Andrew Powers/script installer core.js enwiki User:AndrewN/qui-mod.js enwiki User:Animum/count.js enwiki User:Animum/moveRV-severe.js enwiki User:Animum/usergroups.js enwiki User:Animum/watchlistUpdate.js enwiki User:Ansumang/reference.js enwiki User:Apoc2400/refToolbarPlus.js enwiki User:Arbitrarily0/checkDYK.js enwiki User:Arbitrarily0/custom-hotcat.js enwiki User:Arbitrarily0/filemove.js enwiki User:Aremisasling/popupBookmarks.js enwiki User:Arkanosis/aTrans.js enwiki User:Arkanosis/iKiwi.js enwiki User:Arktest/monobook.js enwiki User:Arr4/ajaxfilemove.js enwiki User:Arr4/common.js enwiki User:Assasin Joe/status.js enwiki User:Atama/massblock.js enwiki User:Atama/massedit.js enwiki User:Atama/spihelper.js enwiki User:Atama/strikeblocked.js enwiki User:AutomaticStrikeout/common.js enwiki User:AvicPublic/HotCatMod.js enwiki User:Axmann8/PageWatcher.js enwiki User:AzaToth/testcase.js enwiki User:BanRay/monobook.js enwiki User:Basalisk/vector.js enwiki User:Beany/global.js enwiki User:Beetstra/MediaWiki:Gadget-SBHandler.js enwiki User:Beetstra/twinklearv.js enwiki User:Beetstra/twinklediff.js enwiki User:Beetstra/twinklefluff.js enwiki User:Beetstra/twinklespeedy.js enwiki User:Ben 28920/monobook.js enwiki User:Bill william compton/delsort.js enwiki User:Bill william compton/vector.js enwiki User:Billinghurst/MediaWiki:Gadget-SBHandler.js enwiki User:Bradv/AjaxPatrolLinks.js enwiki User:Bradv/Scripts/CategoryMonitor.js enwiki User:Bradv/Scripts/MetaPagePreview.js enwiki User:Bradv/sidebar.js enwiki User:Bradv/sprint.js enwiki User:Bradv/wikiBrowser.js enwiki User:BranStark/popupBookmarks.js enwiki User:Brobdingnag~enwiki/monobook.js enwiki User:BrownHairedGirl/Gadget-HotCat.js enwiki User:CBM/quickpreview.js enwiki User:CBM/twinklespeedy.js enwiki User:Caknuck/monobook.js enwiki User:Caknuck/vector.js enwiki User:Canadian Paul/monobook.js enwiki User:Chase me ladies, I'm the Cavalry/vector.js enwiki User:Ciannicay/ajaxrecentchanges.js enwiki User:Ciphers/HotCat-dev-ar.js enwiki User:Citicat/monobook.js enwiki User:Cobija/userinfo.js enwiki User:Coemgenus/monobook.js enwiki User:Coffee/arkansas.js enwiki User:Coffee/louisiana.js enwiki User:Colchicum/tagwpa.js enwiki User:Crest of London/qui.js enwiki User:D'Ranged 1/script/SnipManager.js enwiki User:Dalisays/common.css enwiki User:Dalisays/common.js enwiki User:Darkwind/easyblock-test.js enwiki User:David Condrey/edit-tools.js enwiki User:DavidHOzAu/votescript/code.js enwiki User:Davipo/wikipast.js enwiki User:Dcoetzee/Gadget-dropdown-menus.js enwiki User:Decltype/test.js enwiki User:Deerstop/monobook.js enwiki User:Deerstop/vector.js enwiki User:DeltaQuad/Scripts/Markblockedold.js enwiki User:DendroNaja/vector.js enwiki User:Digwuren/tagwpe.js enwiki User:Dispenser/disambig.js enwiki User:DoubleO711/monobook.js enwiki User:Dr Brains/ListPages.js enwiki User:Drilnoth/tabs.js enwiki User:Drilnoth/toolkit.js enwiki User:Drilnoth/toolkit/old.js enwiki User:Dtrebbien/vector.js enwiki User:Dusti/vector.css enwiki User:Dusti/vector.js enwiki User:Dycedarg/easyprod.js enwiki User:Dylanfromthenorth/common.js enwiki User:Ebe123/GA.js enwiki User:EdoDodo/hotcat.js enwiki User:Elemesh/quickpreview.js enwiki User:Ely1/vector.js enwiki User:Emil76~enwiki/monobook.js enwiki User:Epicgenius/stubtag.js enwiki User:Epsilon60198/monobook.js enwiki User:Equazcion/assesslinks.js enwiki User:Equazcion/metadata.js enwiki User:Equazcion/userinfo.js enwiki User:Eraserhead1/hangon.js enwiki User:EricEttensohn/vector.js enwiki User:Erik Jesse/monobook.js enwiki User:Erik9/monobook.js enwiki User:EuroCarGT/ajaxfilemove.js enwiki User:EvaK/monobook.js enwiki User:F.trott/monobook.js enwiki User:FT2/cactions.js enwiki User:Feezo/easyblock.js enwiki User:Feezo/markblocked.js enwiki User:Fiiiisch!/vector.js enwiki User:Fl/qui.js enwiki User:Flatscan/rescueTag.js enwiki User:Flying Saucer/editcount.js enwiki User:Fran Rogers/dimorphism.js enwiki User:Frenchwhale/monobook.js enwiki User:Frietjes/masspurge.js enwiki User:Fry/monobook.js enwiki User:GabeMc/ajaxfilemove.js enwiki User:Gary/mark edits after my own.js enwiki User:Gary/metadata.js enwiki User:Gary/script installer core.js enwiki User:Gary/script installer source.js enwiki User:GateKeeper/monobook.js enwiki User:Gene93k/delsort.js enwiki User:Gigs/delsort.js enwiki User:Gijs Kruitbosch/monobook.js enwiki User:Gijs Kruitbosch/twinkletest.js enwiki User:Gimmetrow/qprev.js enwiki User:Giselle/monobook.js enwiki User:Gnorthup/monobook.js enwiki User:GoRight/Wordcount.js enwiki User:Goodvac/reftoolbar.js enwiki User:Gracenotes/changesSince.js enwiki User:Gracenotes/twinklefluff.js enwiki User:GreenStork/monobook.js enwiki User:Gregbard/monobook.js enwiki User:Gregbard/twinklespeedy.js enwiki User:GrooveDog/vector.js enwiki User:Gutza/quickUnwatch dev.js enwiki User:Gutza/quickUnwatch.js enwiki User:H2ppyme/monobook.js enwiki User:Hallows AG/afchelper4.js enwiki User:Hans2520/MyWikiSpace.js enwiki User:Hans2520/WikiSocial.js enwiki User:Hans2520/vector.js enwiki User:Happysailor/afchelper4.js enwiki User:Haza-w.debug/Gadget-dropdown-menus.js enwiki User:Haza-w.debug/cactions.js enwiki User:Haza-w/cactions.js enwiki User:Hdt83/customrevert.js enwiki User:Hdt83/twfluff.js enwiki User:Hdt83/twmorebits.js enwiki User:HectorMoffet/DYKcheck.js enwiki User:HelloAnnyong/cumassblock.js enwiki User:HelloAnnyong/markblocked.js enwiki User:Hersfold/gwpblock.js enwiki User:Hghyux/quickpreview.js enwiki User:Highspeedrailguy/aiv.js enwiki User:Hpvpp/monobook.js enwiki User:IJReid/vector.js enwiki User:Iamunknown/image-templates.js enwiki User:Illuminatusds/monobook.js enwiki User:In Transit/ajaxfilemove.js enwiki User:Iune/monobook.js enwiki User:Jac16888/vector.js enwiki User:JackSchmidt/JS Ajax.js enwiki User:JamieS93/biography.js enwiki User:Jarry1250/ajaxsendcomment.js enwiki User:Javierito92/monobook.js enwiki User:Jeremyb/User:Lady Aleena/bracketmatch.js enwiki User:Jerry/delsort.js enwiki User:Jigesh/Gadget-HotCat.js enwiki User:Jimp/vector.js enwiki User:Joe Gazz84/afchelper4.js enwiki User:Joe N/monobook.js enwiki User:John Vandenberg/delsort.js enwiki User:JohnSRoberts99/monobook.js enwiki User:Jongleur100/monobook.js enwiki User:Jorgecarleitao/common.js enwiki User:Joshua Scott/Scripts/pageage.js enwiki User:Joshurtree/createwatchlist.js enwiki User:Js/patroller.js enwiki User:Js/popupBookmarks.js enwiki User:Jujutacular/closeFPC.js enwiki User:Julessp/common.js enwiki User:Juliancolton/capitaldistrict.js enwiki User:Juliancolton/tc.js enwiki User:Juliancolton/usernames.js enwiki User:Jumpytoo/monobook.js enwiki User:Kanonkas/moverevert.js enwiki User:Kanonkas/moverevert2.js enwiki User:Kanonkas/speedyblock.js enwiki User:Kanonkas/stalkcontribs.js enwiki User:Kapidis/monobook.js enwiki User:Khanson/qpreview.js enwiki User:Kingpin13/kill.js enwiki User:Koryu Obihiro/monobook.js enwiki User:Lady Aleena/bracketmatch.js enwiki User:Laughing Man/revert.js enwiki User:Lcmortensen/monobook.js enwiki User:Liangent/User:Pyrospirit/metadata.js enwiki User:Lightdarkness/aiv.js enwiki User:Little Professor/monobook.js enwiki User:Liz/spihelper.js enwiki User:Logicalthinker33/vector.js enwiki User:Lucky102/common.js enwiki User:Luk/moverevert2.js enwiki User:Madnessfan34537/common.js enwiki User:MalwareSmarts/monobook.js enwiki User:Manishearth/GadgetUS/generate.js enwiki User:MarcusBritish/metadata.js enwiki User:Marek69/monobook.js enwiki User:Marek69/vector.js enwiki User:Marian Dan/vector.js enwiki User:Martial75/Revert.js enwiki User:Master of Puppets/monobook.js enwiki User:Mdale/wikitrust.js enwiki User:Mdann52/PermissionOTRS.js enwiki User:Mercury~enwiki/AzaToth/twinklearv.js enwiki User:Mercury~enwiki/AzaToth/twinklediff.js enwiki User:Mercury~enwiki/AzaToth/twinklefluff.js enwiki User:Mercury~enwiki/AzaToth/twinkleprod.js enwiki User:Mercury~enwiki/AzaToth/twinkleprotect.js enwiki User:Mercury~enwiki/AzaToth/twinklespeedy.js enwiki User:Mercury~enwiki/AzaToth/twinklexfd.js enwiki User:Microchip08/PermissionOTRS.js enwiki User:Milkyface/twinklefluff.js enwiki User:Misza13/votingToolbar.js enwiki User:Mnmazur/monobook.js enwiki User:Molerat/monobook.js enwiki User:Mr.Z-man.sock/funcs.js enwiki User:Mr.Z-man/gwp.js enwiki User:Mr.Z-man/moverevert2.js enwiki User:Mr.Z-man/test.js enwiki User:MuffledThud/Gadget-HotCat.js enwiki User:MusikPuppet2/dropdowns.js enwiki User:Mwilso24/public/ticker.js enwiki User:NJA/monobook.js enwiki User:NahidSultan/ajaxfilemove.js enwiki User:Nathan2055/afc stable.js enwiki User:Nathan2055/afc.js/core.js enwiki User:Nathan2055/afc.js/submissions.js enwiki User:Neko-chan/QuiforUS.js enwiki User:Neurolysis/markblocked.js enwiki User:Nixeagle/twinkletest.js enwiki User:Northern Antarctica/common.js enwiki User:NuclearWarfare/gwp killer.js enwiki User:Nug/monobook.js enwiki User:Nux/wp sk.js enwiki User:Nx/LinkSuggest.js enwiki User:Oakley77/common.js enwiki User:Od Mishehu/markblocked.js enwiki User:Odie5533/SnipManager.user.js enwiki User:Odie5533/WAjaxInterface.user.js enwiki User:Odie5533/userinfo-mod.js enwiki User:OranL/monobook.js enwiki User:OrenBochman/Scripts/afc beta.js enwiki User:PIL1987/monobook.js enwiki User:Paranomia/checkblocked.js enwiki User:Paranomia/editcount.js enwiki User:Paranomia/rights.js enwiki User:Paranomia/samepageedit.js enwiki User:Paranomia/stubtagtab.js enwiki User:Parkerdr/popupBookmarks.js enwiki User:Petrb/gadget-testing-afc.js enwiki User:PiRSquared17/Rollback.js enwiki User:Piandcompany/ajaxfilemove.js enwiki User:Platonides/vector.js enwiki User:PleaseStand/recent2.js enwiki User:Poccil/myskin.js enwiki User:Porchcorpter/qui.js enwiki User:Prillen/monobook.js enwiki User:Prodego/Sandbox.js enwiki User:Prodego/moverevert.js enwiki User:Prosperosity/monobook.js enwiki User:Public Juju/test script.js enwiki User:Puffin/ajaxfilemove.js enwiki User:Pxma/simpleajax.js enwiki User:Pyrospirit/metadata-fr.js enwiki User:Pyrospirit/metadata.js enwiki User:QwerpQwertus/altmessages.js enwiki User:QwerpQwertus/contenteditable.js enwiki User:QwerpQwertus/js.js enwiki User:Rahk EX/instaedit.js enwiki User:Ramu50/monobook.js enwiki User:RandomStringOfCharacters/Scripts/test.js enwiki User:Reactivity/monobook.js enwiki User:Richwales/dropdown-menus.js enwiki User:Richwales/markusers.js enwiki User:Richwales/markusers2.js enwiki User:Riley Huntley/massblock.js enwiki User:Rjd0060/PermissionOTRS.js enwiki User:Rmhermen/monobook.js enwiki User:Ronhjones/OTRSpermission.js enwiki User:Ronhjones/OTRSreceived.js enwiki User:RoryHC/vector.js enwiki User:Roux/popupBookmarks.js enwiki User:Rschmertz/monobook.js enwiki User:Rupert'sscribe/vector.js enwiki User:RyanB88/twinklediff.js enwiki User:RyanB88/twinklefluff.js enwiki User:RyanB88/twinklespeedy.js enwiki User:Rzuwig/ajaxfilemove.js enwiki User:SQL/simpleajax.js enwiki User:ST47/twinklefluff.js enwiki User:Sadads/modern.js enwiki User:Saintrain/bracketmatch.js enwiki User:Saintrain/bracketmatch2.js enwiki User:SakyaTrizin/vector.js enwiki User:Salsero35/iKiwi.js enwiki User:Sameboat/customEdittools.js enwiki User:Sander Säde/allest.js enwiki User:Sander Säde/allest4test.js enwiki User:Sander Säde/assess.js enwiki User:Sander Säde/common.js enwiki User:Sander Säde/editcount.js enwiki User:Sander Säde/monobook.js enwiki User:Sander Säde/pagesCreated.js enwiki User:Sander Säde/quickpreview.js enwiki User:Sander Säde/viewsource.js enwiki User:SanderTest/monobook.js enwiki User:Schmloof/vector.js enwiki User:Secrecy/kill.js enwiki User:Seren-dipper/userinfo.js enwiki User:Seresin/monobook.js enwiki User:Simeondahl/common.js enwiki User:Sintaku/Scripts/userpage stats.js enwiki User:Skittleys/cactions.js enwiki User:Smser-ENG/qui.js enwiki User:Someonewiki/monobook.js enwiki User:SounderBruce/vector.js enwiki User:Souravmohanty2005/Gadget-HotCat.js enwiki User:SpK/vector.js enwiki User:Sparky007/monobook.js enwiki User:Spidern/monobook.js enwiki User:Splarka/ajaxbatchdelete.js enwiki User:Splarka/ajaxbatchmove.js enwiki User:Splarka/ajaxbatchundelete.js enwiki User:Splarka/ajaxfilemove.js enwiki User:Splarka/ajaxmassrollback.js enwiki User:Splarka/ajaxrecentchanges.js enwiki User:Splarka/ajaxsendcomment.js enwiki User:Splarka/quicktag.js enwiki User:Splarka/stalkcontribs.js enwiki User:Starship.paint/vector.js enwiki User:Status/ajaxfilemove.js enwiki User:Steel/easyblock.js enwiki User:Steel359/salt.js enwiki User:Steel359/twinkle.js enwiki User:Steven Zhang/qui.js enwiki User:Stmrlbs/bracketmatch.js enwiki User:Suffusion of Yellow/HotCat.js enwiki User:Suffusion of Yellow/evenmorebits.js enwiki User:Suffusion of Yellow/patrol.js enwiki User:Syncategoremata/watchlistnotifier.js enwiki User:T. Canens/afchelper4.js enwiki User:Tacosunday/monobook.js enwiki User:Tarheel95/afchelper4.js enwiki User:Teraom/MyWikiSpace.js enwiki User:That Guy, From That Show!/monobook.js enwiki User:That Guy, From That Show!/vector.js enwiki User:The Placebo Effect/monobook.js enwiki User:TheFearow/simpleajax.js enwiki User:Theopolisme/afc test.js enwiki User:Theopolisme/afch-ffu.js/core.js enwiki User:Theopolisme/afch-ffu.js/submissions.js enwiki User:Timotab/morebits.js enwiki User:Timotab/twinklearv.js enwiki User:Timotab/twinklediff.js enwiki User:Timotab/twinklefluff.js enwiki User:Timotab/twinkleprod.js enwiki User:Timotab/twinklespeedy.js enwiki User:Timotab/twinklewarn.js enwiki User:Timotheus Canens/afchelper3.js enwiki User:Timotheus Canens/delsort.js enwiki User:Timotheus Canens/massblock.js enwiki User:Timotheus Canens/massedit.js enwiki User:Timotheus Canens/massprotect.js enwiki User:Timotheus Canens/massrestore.js enwiki User:Timotheus Canens/massunblock.js enwiki User:Timotheus Canens/spicaselist.js enwiki User:Timotheus Canens/spihelper.js enwiki User:Timotheus Canens/test.js enwiki User:Tinucherian/Gadget-HotCat.js enwiki User:Tnxman307/monobook.js enwiki User:Tom Morris/delsort.js enwiki User:Toohool/monobook.js enwiki User:TrendyLegs/monobook.js enwiki User:Tryptophane06/Gadget-LiveRC.js/Extensions/Gadget-Suggest.js enwiki User:Tryptophane06/Gadget-LiveRC.js/Extensions/HotCatsMulti.js enwiki User:Twinzor/wikimark.js enwiki User:Twinzor/wikimarkbeta.js enwiki User:Tygrrr/monobook.js enwiki User:UncleDouggie/aiv-test.js enwiki User:UncleDouggie/aiv.js enwiki User:UncleDouggie/refToolbarPlus.js enwiki User:VasilievVV/metadata/assesslinks.js enwiki User:Vibhijain/common.js enwiki User:Vibhijain/vector.js enwiki User:VoA2/debug/twinklefluff.js enwiki User:Waggers/aaiv.js enwiki User:Weberma/monobook.js enwiki User:Widr/common.js enwiki User:Widr/monobook.js enwiki User:Wikidudeman/arv.js enwiki User:Wikidudeman/fluff.js enwiki User:Wikidudeman/morebits.js enwiki User:Wikidudeman/speeedy.js enwiki User:Wikidudeman/warn.js enwiki User:Willy Weazley/monobook.js enwiki User:Wittylama/monobook.js enwiki User:Writ Keeper/Scripts/easyBlock.js enwiki User:X!/closeRFA.js enwiki User:X!/nograwp.js enwiki User:X!/vermont.js enwiki User:Xaradnam/menus.js enwiki User:Xavier Combelle/monobook.js enwiki User:Xil/monobook.js enwiki User:YauKwanKiu/monobook.js enwiki User:Zeke Essiestudy/common.js enwiki User:Zeus/monobook.js enwiki User:Zeus/vector.js enwiki User:Zscout370/Gadget-GalleryDetails.js enwiki User:Zscout370/Notifier.js enwiki User:Zyma/common.js enwiki User:Æk/urldecoder.js enwiki User:संतोष दहिवळ/chick.js enwikibooks User:Arlen22/Gadget-dropdown-menus.js enwikibooks User:Arlen22/caction.js enwikibooks User:Mabdul/fiximages.js enwikibooks User:Mabdul/fixlinks1.js enwikibooks User:Wordsthink~enwikibooks/qpreview.js enwikinews User:Bawolff/mwapilib.js enwikinews User:Bawolff/sandbox/catdates.js enwikinews User:Bawolff/sandbox/opinion.js enwikinews User:Bawolff/sandbox/readyAlert.js enwikinews User:FellowWikiNews/monobook.js enwikinews User:J~enwikinews/qui.js enwikinews User:RedXII/qui.js enwikinews User:Spidern/monobook.js enwikinews User:TheFearow/autoping.js enwikinews User:TheFearow/bigtick.js enwikisource User:Arlen22/Gadget-dropdown-menus.js enwikisource User:Krenakarore/monobook.js enwikisource User:MohandesWiki/common.js enwikisource User:Mr. Absurd/hotcat.js enwikisource User:Phe/Author fill.js enwikisource User:Phe/Auto create page.js enwikisource User:Zyephyrus/monobook.js enwikiversity User:Wikiguru/monobook.js enwiktionary User:Cirt/Gadget-HotCat.js enwiktionary User:Conrad.Irwin/edittools.js enwiktionary User:Daniel Carrero/Gadget-HotCat.js enwiktionary User:Eirikr/edittools.js enwiktionary User:Mike Dillon/Scripts/topicCats.js enwiktionary User:Prillen/monobook.js enwiktionary User:Sack36/edittools.js enwiktionary User:Stephen G. Brown/edittools.js eowiki User:Martijnvdputten/monobook.js eowiki User:Seren-dipper/vector.js eowiki User:Siebrand/monobook.js eowikibooks User:Airon90/VarmaKato.js eowiktionary User:Dtrebbien/movuKategorion.js eswiki User:Arkanosis/iKiwi.js eswiki User:Arktest/iKiwi.js eswiki User:Arktest/monobook.js eswiki User:Axxgreazz/wikEd.js eswiki User:Brobdingnag/monobook.js eswiki User:Brobdingnag/vector.js eswiki User:Dreitmen/QuickPreview.js eswiki User:Dreitmen/Statuschanger2.js eswiki User:Ecelan/HotCats.js eswiki User:Erne Mogilevich/Statuschanger2.js eswiki User:Jebba/twinklearv.js eswiki User:Jebba/twinklediff.js eswiki User:Jebba/twinklefluff.js eswiki User:Jebba/twinkleprod.js eswiki User:Jebba/twinkleprotect.js eswiki User:Jebba/twinklespeedy.js eswiki User:Manuelt15/AjaxPatrolLinks.js eswiki User:Marvelshine/HotCats.js eswiki User:Sabbut/hotcats.js eswiki User:TwinkleUser/QuickPreview.js eswiki User:TwinkleUser/Statuschanger2.js eswiki User:ברובדינגנג/vector.js eswikibooks User:Ciencia Al Poder/js/LibroAleatorio.js eswikinews User:Bawolff/comment.js eswikinews User:CSTN/Ticker.js eswikinews User:Dreitmen/QuickPreview.js eswikinews User:Dreitmen/Statuschanger2.js eswikivoyage User:Cyrax/AjaxPatrolLinks.js etwiki User:C.c./editcount.js etwiki User:Sander Säde/editcount.js etwiki User:WikedKentaur/backlinks.js etwiktionary User:WikedKentaur/backlinks.js fawiki User:Behaafarin/BehaafarinTools.js fawiki User:Ladsgroup/LinkTranslate.js fawiki User:Mehran/DYKcheck.js fawiki User:MohandesWiki/DYKcheck.js fawiki User:MohandesWiki/qui.js fawiki User:MohandesWiki/stubtagtab.js fawiki User:MohandesWiki/userinfo.js fawiki User:Pesar amol/SnipManager.user.js fawiki User:Pesar amol/patroller.js fawiki User:Sahim/ajaxpreview.js fawiki User:Surena/ajaxPreview.js fawiki User:Surena/ajaxrecentchanges.js fawiki User:درفش کاویانی/skin.js fawikibooks User:Doostdar/common.js fawikiquote User:Mahan/common.js fiwiki User:Avanninen/SnipManager.user.js fiwiki User:Lucky102/common.js fiwiki User:Twinzor/wikimark.js fiwiki User:Zache/userinfo.js fiwikiquote User:Usp/monobook.js foundationwiki User:JSeddon/moverevert2.js frwiki User:*SM*/common.js frwiki User:*SM*/monobook.js frwiki User:0x010C/script/PopupVandalism.js frwiki User:Akira-otomo~frwiki/qui.js frwiki User:Althiphika/Gadget-BandeauxEbauches.js frwiki User:Althiphika/NewMessages.js frwiki User:Amaurybouchet/GlobalManager.js frwiki User:Anatole Coralien/monobook.js frwiki User:Arkanosis/ManWatch.js frwiki User:Arkanosis/aTrans.js frwiki User:Arkanosis/ongletSousPages.js frwiki User:Arkanosis/turboEdit.js frwiki User:Arktest/iKiwi.js frwiki User:Arktest/turboEdit.js frwiki User:Bastenbas/testExist.js frwiki User:Bastenbas/vector.js frwiki User:Benoit Rochon/qui.js frwiki User:Captainm/monobook.js frwiki User:Chphe/SuiviCat.js frwiki User:Cj73/GlobalManager.js frwiki User:Culex/monobook.js frwiki User:Cybots/common.js frwiki User:Darkoneko/commons.js frwiki User:Darkoneko/exemples/addStopInWatchlist.js frwiki User:Deep silence/monobook.js frwiki User:Deep silence/vector.js frwiki User:Delhovlyn/testExist.js frwiki User:Delhovlyn/verifHomon.js frwiki User:Dodoïste/metadata.js frwiki User:Dom/monobook.js frwiki User:Dr Brains/AbuseLogDeluxe.js frwiki User:Dr Brains/AdQ-BA-AutresLangues.js frwiki User:Dr Brains/AddCatsWhileEditing.js frwiki User:Dr Brains/AddInterwiki.js frwiki User:Dr Brains/AjoutModeleBOT.js frwiki User:Dr Brains/ArticlesRecentsDev.js frwiki User:Dr Brains/AutoTemplate.js frwiki User:Dr Brains/AutreProjets.js frwiki User:Dr Brains/AutresDiscussions.js frwiki User:Dr Brains/BandeauxCategoriesBOT.js frwiki User:Dr Brains/BandeauxEbauchesSpecialBOT.js frwiki User:Dr Brains/BandeauxPortailsSpecialBOT.js frwiki User:Dr Brains/BotFramework.js/Suggest.js frwiki User:Dr Brains/CategoryForceGallery.js frwiki User:Dr Brains/CatsWithoutInterwiki.js frwiki User:Dr Brains/CreatePortal.js frwiki User:Dr Brains/EvaluationCategorieBOT.js frwiki User:Dr Brains/FluxRecentchangeslinkedDeluxe.js frwiki User:Dr Brains/ForcePurge.js frwiki User:Dr Brains/GlobalManager.js/Old.js frwiki User:Dr Brains/HistoryAskForOversight.js frwiki User:Dr Brains/HistoryHideBots.js frwiki User:Dr Brains/IPWatch.js frwiki User:Dr Brains/IPWatchNoPreview.js frwiki User:Dr Brains/ImagesUtilisees.js frwiki User:Dr Brains/LinkSearchDeluxe.js frwiki User:Dr Brains/LinkTranslate Dev.js frwiki User:Dr Brains/LinkTranslate.js frwiki User:Dr Brains/ListAllProjects.js frwiki User:Dr Brains/LiveAbuseLog.js frwiki User:Dr Brains/LiveNewUsers.js frwiki User:Dr Brains/LiveRC/HotCatsMulti.js frwiki User:Dr Brains/LumiereSur.js frwiki User:Dr Brains/NewPagesDeluxe.js frwiki User:Dr Brains/PaSDeluxe.js frwiki User:Dr Brains/PageSize.js frwiki User:Dr Brains/PagesInCategoryBOT.js frwiki User:Dr Brains/PagesWithoutDefaultSort.js frwiki User:Dr Brains/PagesWithoutInfobox.js frwiki User:Dr Brains/RevertVandalBot.js frwiki User:Dr Brains/SiteUserInfoBiblio.js frwiki User:Dr Brains/SpecialPagePreview.js frwiki User:Dr Brains/SuiviProjet.js frwiki User:Dr Brains/SuiviRC.js frwiki User:Dr Brains/SuivisSousPages.js frwiki User:Dr Brains/TestExist.js frwiki User:Dr Brains/WatchCategoryMembers.js frwiki User:Dr Brains/WatchSubPages.js frwiki User:Dr Brains/WatchUsers.js frwiki User:Epop/monobook.js frwiki User:Epop/vector.js frwiki User:Fabizor/monobook.js frwiki User:Feldo/vector.js frwiki User:Fm790/monobook.js frwiki User:Frakir/common.js frwiki User:Freewol/monobook.js frwiki User:GK-romain/common.js frwiki User:Gdgourou/articles manquants.js frwiki User:Gdgourou/maintenance categorie.js frwiki User:Gdgourou/verification evaluation.js frwiki User:GratusBot/common.js frwiki User:Grind24/GlobalManager.js frwiki User:Grind24/hotcats.js frwiki User:Grind24/qui.js frwiki User:Gwen5484/monobook.js frwiki User:GwenofGwened/monobook.js frwiki User:Gyld/monobook.js frwiki User:Jammywest/monobook.js frwiki User:Jul.H/monobook.js frwiki User:Kojemiaka/copyvio.js frwiki User:Kyro/bandeauportail.js frwiki User:Linedwell/userinfo.js frwiki User:Mabifixem/monobook.js frwiki User:Mabifixem/vector.js frwiki User:Manecke/monobook.js frwiki User:Marc-André Beauchamp/common.js frwiki User:Martin'/vector.js frwiki User:MickaëlG/DesArticlesAuHasard.js frwiki User:MicroCitron/vector.js frwiki User:ModzFR/monobook.js frwiki User:Nemoi/Gadget-HotCatsMulti.js frwiki User:Nodulation/common.js frwiki User:Octave.H/monobook.js frwiki User:Od1n/HistoryDeluxe.js frwiki User:Orlodrim/ancresbrisees.js frwiki User:OwenBlacker/metadata.js frwiki User:Phe/Clickodrome.js frwiki User:Pic-Sou/common.js frwiki User:Pincourt/AddCatsWhileEditing.js frwiki User:Pincourt/GlobalManager.js frwiki User:Pincourt/RC.js frwiki User:Pramzan/vector.js frwiki User:QcBot/Portal1.js frwiki User:QcBot/monobook.js frwiki User:Quentin Ligier/vector.js frwiki User:Rami.Awad/monobook.js frwiki User:Reza1615/vector.js frwiki User:Ricky Notaro/vector.js frwiki User:Rome2/common.js frwiki User:Sacamol/HistoryDeluxe.js frwiki User:Salsero35/iKiwi.js frwiki User:Sapindnoel/Gadget-webChat.js frwiki User:Sebleouf/moved.js frwiki User:Sebleouf/pagesliees.js frwiki User:Sencha/monobook.js frwiki User:Snipre/monobook.js frwiki User:Superjuju10/annif.js frwiki User:Tadeo59370/common.js frwiki User:Tadeo59370/monobook.js frwiki User:Telperion/vector.js frwiki User:Terconj/common.js.js frwiki User:The Obento Musubi/metadata.js frwiki User:The Titou/monobook.js frwiki User:Toto Azéro/GlobalManager.js frwiki User:Tpa2067/monobook.js frwiki User:Trizek/hotcats.js frwiki User:Varmin/scripts/WatchCategoryMembers.js frwiki User:Viking59/monobook.js frwiki User:Voxhominis/monobook.js frwiki User:Xavier Combelle/monobook.js frwiki User:Zoldik/monobook.js frwikinews User:Dr Brains/BandeauxPages.js frwikinews User:Grimlock/public/ticker.js frwikinews User:TheFearow/public/ticker.js frwikisource User:Phe/Auteur v2.js frwikisource User:Phe/Auteur.js frwikisource User:Phe/Dictionary.js frwikisource User:Phe/Enhanced index.js frwikisource User:Rical/Auteur v2.js frwikivoyage User:Grind24/qui.js frwiktionary User:Automatik/Utilisateurs-a-bienvenuter.js frwiktionary User:JackPotte/refToolbarPlus.js frwiktionary User:Quentinv57/Utilisateurs-a-bienvenuter.js gagwiki User:E THP/HotCat.js gagwiki User:E THP/Pratik menü.js glkwiki User:Zscout370/ajaxdelete.js glwiki User:Vivaelcelta/documentacion.js guwiki User:Harsh4101991/RefToolbarLegacy.js guwiki User:Harsh4101991/userinfo.js guwiki User:Sam.ldite/userinfo.js hewiki User:Alonr/monobook.js hewiki User:Assafn/common.js hewiki User:Ely1/monobook.js/editCounterTab.js hewiki User:LianRad/monobook.js hewiki User:Mikimik/js/partolStatusInEditList.js hewiki User:Yonidebest/monobook.js/addAuthorOfDeletedPage.js hewiki User:Yonidebest/monobook.js/customnav.js hewiki User:Yonidebest/monobook.js/editCounterTab.js hewiki User:Yonidebest/monobook.js/externalWL.js hewiki User:Yonidebest/monobook.js/initShowImageLicenses.js hewiki User:Yonidebest/monobook.js/markPatrolAjax.js hewiki User:Yonidebest/monobook.js/markWLUsers.js hewiki User:Yonidebest/monobook.js/updateUserEditCounter.js hewiki User:Yonidebest/scripts/anonRecentEditors.js hewiki User:Yonidebest/scripts/loadTemplates.js hewiki User:אני ואתה/CustomSideBarLinksTweaked.js hewiki User:חזרתי/monobook.js hewiki User:יוסאריאן/vector.js/afterdelete warning.js hewikiquote User:Yonidebest/monobook.js hewiktionary User:Matanya/common.js/revert.js hewiktionary User:Yonidebest/monobook.js/customnav.js hewiktionary User:Yonidebest/monobook.js/randomtitle.js hewiktionary User:Yonidebest/monobook.js/randomtitle2.js hiwiki User:Mayur/DYKcheck.js hiwiki User:Mayur/closeAFD.js hiwiki User:Mayur/massedit.js hiwiki User:Mayur/qpreview.js hiwiki User:Shubhamkanodia/closeAFD.js hiwiki User:Shubhamkanodia/tafi.js hiwiki User:आशीष भटनागर/qpreview.js hrwiki User:AmyMirka/monobook.js hrwiki User:Bracodbk/monobook.js hrwiki User:Divna Jaksic/monobook.js hrwiki User:Dtom/monobook.js hrwiki User:Ex13/monobook.js hrwiki User:Frka/monobook.js hrwiki User:Jure Grm/monobook.js hrwiki User:MaGa/monobook.js hrwiki User:MaGaBot/common.js hrwiki User:Man Usk/monobook.js hrwiki User:SveroH/monobook.js hsbwiki User:Tlustulimu/documentation tab.js huwiki User:Buda/watchlist.js huwiki User:Cirkalo1/monobook.css huwiki User:Cirkalo1/monobook.js huwiki User:Evetke/monobook.js huwiki User:Pasztilla/watchlist.js huwiki User:Teemeah/qui.js huwiki User:Tgr/api.js huwiki User:Winston/whatchlist.js huwikibooks User:KeFe/qui.js huwikibooks User:Pipi69e/monobook.js hywiki User:GeoO/monobook.js idwiki User:Aris riyanto/monobook.js idwiki User:Baloo Official/vector.js idwiki User:Beeyan/monobook.css idwiki User:Bluesatellite/monobook.js idwiki User:Empu/common.js idwiki User:Ezagren/monobook.js idwiki User:Iwan Novirion/qui.js idwiki User:Kenrick95/qui.js idwiki User:Pras/vector.js idwiki User:Spartanica/vector.js incubatorwiki User:Ezagren/monobook.js incubatorwiki User:Hetanaheta/HotCat.js incubatorwiki User:John Vandenberg/userinfo.js incubatorwiki User:Zazamental/HotCat.js iswiktionary User:Spacebirdy/script-edittools.js iswiktionary User:Steinninn/script-edittools.js itwiki User:Arkanosis/iKiwi.js itwiki User:Beatle 93/monobook.js itwiki User:Dedda71/Gadget-HotCat.js itwiki User:Ediedi/monobook.js itwiki User:PersOnLine/monobook1.js itwiki User:PleaseStand/userinfo.js itwiki User:Popperipopp/monobook.js itwiki User:S141739/monobook.js itwiki User:S141739/vector.js itwikibooks User:LikeLifer/monobook.js itwikibooks User:Wim b/monobook.js itwikinews User:Lenore/HotCat.js itwikinews User:Melos/monobook.js itwikisource User:Casmiki/vector.js itwikisource User:Jalo/vector.js itwikivoyage User:Andyrom75/Admin.js itwiktionary User:.sEdivad/common.js itwiktionary User:Diuturno/monobook.js itwiktionary User:Virex/monobook.js itwiktionary User:Wim b/Admin.js jawiki User:Ac-dc/vector.js jawiki User:Amneltex/common.js jawiki User:Arkanosis/iKiwi.js jawiki User:Frozen-mikan/Archivebot.js jawiki User:青子守歌/trunk/LwMwApi.js jvwiki User:Meursault2004/monobook.js jvwiki User:Meursault2004/vector.js jvwiki User:PL 001/vector.js jvwiki User:Prabot/monobook.js jvwiki User:Prabot/vector.js jvwiki User:Pras/vector.js kawiki User:Deu/upload.js kawiki User:Giorgi Balakhadze/Giorgi Balakhadze.js kawiki User:Giorgi Balakhadze/Qui.js kawiki User:Gota/monobook.js kawiki User:ITshnik/monobook.js kawiki User:Island/monobook.js kawiki User:Zangala/monobook.js kawiktionary User:Deu/monobook.js kawiktionary User:ITshnik/vector.js kkwikibooks User:Bolatbek/vector.js kowiki User:Bart0278/vector.js kowiki User:Cwt96/common.js kowiki User:Dus2000/monobook.js kowiki User:Dus2000/vector.js kowiki User:Ho949494/vector.js kowiki User:Keasung/HotCat.js kowiki User:Klutzy/common.js kowiki User:Kwj2772/UploadForm.js kowiki User:Namoroka/RefToolbarLegacy.js kowiki User:Poragon/common.js kowiki User:PuzzletChung/bracketmacth.js kowiki User:Theoteryi/hotcat.js kowiki User:분당선M/vector.js kowiki User:아드리앵//vector.js kshwiki User:DerHexer/monobook.js kshwiki User:Matanya/vector.js lvwiki User:Edgars2007/MediaWiki:RefToolbarLegacy.js lvwikibooks User:Wordsthink~lvwikibooks/qpreview.js lvwikibooks User:Yyy/qpreview.js mediawikiwiki User:Bawolff/vector.js mediawikiwiki User:Jarandhel/vector.js mediawikiwiki User:Josse.Cottenier/editcount.js mediawikiwiki User:King kolton9/APIQuery.js mediawikiwiki User:Kwj2772/hotcat.js mediawikiwiki User:Lieutenant S. Reznov/common.js mediawikiwiki User:Mschel/monobook.js mediawikiwiki User:Salvatore Ingala/Notes/HotCat.js mediawikiwiki User:WhatamIdoing/common.js metawiki User:Bencmq/script/stewardlinks.js metawiki User:Diegusjaimes/global.js metawiki User:EdoDodo/hotcat.js metawiki User:Erwin/stewardlinks.js metawiki User:Greeves/monobook.js metawiki User:Grind24/stewardlinks.js metawiki User:He7d3r/Tools/Edittools.js metawiki User:He7d3r/Tools/jsUpdater.js metawiki User:He7d3r/global.js metawiki User:Kanonkas/AJAXStalkcontribs.js metawiki User:Kanonkas/SBHandler.js metawiki User:Kanonkas/moverevert2.js metawiki User:Kanonkas/quicktag.js metawiki User:MohandesWiki/global.js metawiki User:Paracel63/global.js metawiki User:Pathoschild/Script:InterwikiRecentchanges.js metawiki User:Pathoschild/Scripts/Ajax framework.js metawiki User:PiRSquared17/temp.js metawiki User:Thehelpfulone/MakeAutoPatroller.js metawiki User:Thehelpfulone/omnitag.js metawiki User:VasilievVV/stewelect.js metawiki User:Vätte/global.js minwiki User:Iwan Novirion/userinfo.js mkwiki User:Мастер теней/monobook.js mlwiki User:Anoopan/ചൂടൻപൂച്ച.js mlwiki User:AswiniKP/subpages.js mlwiki User:Jigesh/Gadget-HotCat.js mlwiki User:Lijorijo/monobook.js mlwiki User:Sadik Khalid/HotCat.js mlwiki User:Sadik Khalid/vector.js/quality.js mlwiki User:Sadik Khalid/വർഗ്ഗം.js mlwiki User:Tinucherian/Gadget-HotCat.js mlwiki User:മാതൃകാ ഉപയോക്താവ്/ചൂടൻപൂച്ച.js mlwiki User:മാതൃകാ ഉപയോക്താവ്/വർഗ്ഗം.js mlwikibooks User:Jyothis/Gadget-HotCat.js mlwikibooks User:Rameshng/വർഗ്ഗം.js mlwikiquote User:Akhilan/വർഗ്ഗം.js mlwikiquote User:Kiran Gopi/ചൂടൻപൂച്ച.js mlwikiquote User:Kiran Gopi/വർഗ്ഗം.js mlwikiquote User:Thachan.makan/വർഗ്ഗം.js mlwikiquote User:മാതൃകാ ഉപയോക്താവ്/വർഗ്ഗം.js mlwikisource User:Akhilan/hotcat.js mlwikisource User:Manojk/hotcat.js mlwikisource User:Thachan.makan/വർഗ്ഗം.js mrwiki User:Priynag/RefToolbarLegacy.js mrwiki User:Rahuldeshmukh101/redhot.js mrwiki User:Tusharvjoshi/HotCat.js mrwiki User:संतोष दहिवळ/HotCat.js mrwikibooks User:Rahuldeshmukh101/redhot.js mrwikisource User:Dr.sachin23/vector.js mrwikisource User:Rahuldeshmukh101/redhot.js mswiki User:Ezagren/vector.js mswiki User:Zamwan/monobook.js mznwiki User:پسر آمل/SnipManager.user.js nds_nlwiki User:Silver Spoon/Gadget-HotCat.js newiki User:Bhawani Gautam/refToolbarPlus.js nlwiki User:Arkanosis/iKiwi.js nlwiki User:Dinosaur918/userinfo.js nlwiki User:Erik Zachte/userinfo.js nlwiki User:Freestyle/monobook.js nlwiki User:Jasper Coenraats/Gebruikersinformatie.js nlwiki User:Jelte/monobook.js nlwiki User:Jimius/monobook.js nlwiki User:Josse.Cottenier/EditCount.js nlwiki User:Kameraad Pjotr/qpreview.js nlwiki User:Mork/monobook.js nlwiki User:Mwpnl/qpreview.js nlwiki User:Myr/UserContributionsInfo.js nlwiki User:Oliphaunt/monobook.js nlwiki User:Qampina/userinfo.js nlwiki User:Rodejong/Zeusmode/whatlinkshere.js nlwiki User:Rodejong/ajaxpreview.js nlwiki User:Siebrand/vqd.js nlwiki User:Sumurai8/templredir.js nlwiki User:TeunSpaans/qpreview.js nlwiki User:Tom Meijer/monobook.js nlwiki User:Ucucha/monobook.js nlwiki User:WOLF LΔMBERT/gebruikersinfo.js nlwiki User:Waninge/twinklefluff.js nlwiki User:Zanaq/test.js nlwiki User:Zugführer/monobook.js nlwikibooks User:Kameraad Pjotr/qpreview.js nlwikibooks User:Warddr/monobook.js nowiki User:Cocu/util.js nowiki User:Dvyjones/twinklefluff.js nowiki User:Dvyjones/wikEd.js nowiki User:Finnrind/toolbox.js nowiki User:Joulée/monobook.js nowiki User:Seren-dipper/userinfo.js orwiki User:Ansumang/markusers.js orwiki User:Ansumang/metadata.js orwiki User:Ansumang/qui.js orwiki User:Odisha1/qui.js orwiki User:Odisha1/refToolbarPlus.js outreachwiki User:Cirt/Gadget-HotCat.js plwiki User:Arkanosis/iKiwi.js plwiki User:Lampak/DelReqHandler branch.js plwiki User:Lampak/DelReqHandler stable.js plwiki User:Lancer WRC/monobook.js plwiki User:Miner/MediaWiki:Notifier.js plwiki User:Misza13/twinklefluff.js plwiktionary User:Marcowy zając/monobook.js ptwiki User:Alchimista/er.js ptwiki User:Alchimista/hotcat.js ptwiki User:Angus Weazley/teste.js ptwiki User:Arkanosis/iKiwi.js ptwiki User:Danilo.mac/fastbuttons.js ptwiki User:Enrique Suarez Infante, S J/twinkle.js ptwiki User:Leandromartinez/fastbuttons.js ptwiki User:Leon saudanha/morebits.js ptwiki User:Leon saudanha/twinklefluff.js ptwiki User:Martín Coba Pulido/Jeux.js ptwiki User:Miguel Couto/er.js ptwiki User:Miguel Couto/morebits.js ptwiki User:Miguel Couto/twinklefluff.js ptwiki User:Miguel Couto/twinklewarn.js ptwiki User:Nelson Teixeira/SnipManager.user.js ptwiki User:Odie5533/SnipManager.user.js ptwiki User:Willy Weazley/SnipManager.user.js ptwikisource User:Nuburos/vector.js ptwiktionary User:Danilo.mac/fastbuttons.js quwiki User:Diego Grez-Cañete/Hotcat.js rowiki User:Anneto/Hot-cat.js rowiki User:Firilacroco/Hot-cat.js rowiki User:Macy/quickpreview.js rowiki User:Macy/statuschanger.js ruwiki User:Abiyoyo/metadata.js ruwiki User:Alex Smotrov/bookmarks.js ruwiki User:Alex Smotrov/undocomment.js ruwiki User:Arkanosis/iKiwi.js ruwiki User:Atorero/monobook.js ruwiki User:Carn/Gadget-dropdown-menus.js ruwiki User:Claymore/copyvio.js ruwiki User:Claymore/goodarticles.js ruwiki User:Claymore/incubator.js ruwiki User:Denisbaltin/qsave.js ruwiki User:Egor Shustoff/common.js ruwiki User:EvgenyGenkin/monobook.js ruwiki User:Hogart/monobook.js ruwiki User:INSAR/oneclickkeep.js ruwiki User:Js/archiver.js ruwiki User:Js/linkcomplete.js ruwiki User:Mashiah Davidson/bookmarks.js ruwiki User:Redline/monobook.js ruwiki User:SaintBot/statuschanger.js ruwiki User:Samal/incubator.js ruwiki User:Saminmihail/archiver.js ruwiki User:Samopalov/monobook.js ruwiki User:Serpent Vlad/featuredarticles.js ruwiki User:Serpent Vlad/temp/песочница.js ruwiki User:SkyBon/metadata.js ruwiki User:Sozertsatel/common.js ruwiki User:Spectorman/ajax-delete-code.js ruwiki User:Spectorman/notifier.js ruwiki User:Torin/qpreview.js ruwiki User:Urutseg/SnipManager.user.js ruwiki User:VasilievVV/links.js ruwiki User:VasilievVV/oneclickkeep.js ruwiki User:Victoria/feturedarticles.js ruwiki User:Victoria/oneclick.js ruwiki User:Vlsergey/simpleku.js ruwiki User:Wanwa/movemenot.js ruwiki User:Zaqq/script.js ruwiki User:Zaqq/vector.js ruwiki User:Миннемуллин Булат/vector.js ruwiktionary User:Infovarius/qpreview.js sahwiki User:Мастер теней/monobook.js simplewiki User:Animum/massdelete.js simplewiki User:Bsadowski1/watchlistUpdate.js simplewiki User:DefenseSupportParty/samepageedit.js simplewiki User:EdoDodo/hotcat.js simplewiki User:Foxj/warn.js simplewiki User:Grunny/refToolbarLegacy.js simplewiki User:Hazard-SJ/qui.js simplewiki User:Hydriz/refToolbarPlus.js simplewiki User:Juliancolton/massdelete.js simplewiki User:Microchip08/preview.js simplewiki User:Microchip08/uberdiff.js simplewiki User:Nataly8/qui.js simplewiki User:NonvocalScream/monobook.js simplewiki User:PiRSquared17/ICE.js simplewiki User:PiRSquared17/MRBK.js simplewiki User:PiRSquared17/import.js simplewiki User:Pilif12p/Monobook.js simplewiki User:Sonia/quickpreview.js simplewiki User:Souravmohanty2005/vector.js simplewiki User:Synergy/easyblock.js simplewiki User:Tdxiang/easyblock.js simplewiki User:Tdxiang/qui.js simplewiki User:Tygrrr/monobook.js simplewiki User:Werdan7/twinklearv.js simplewiki User:Werdan7/twinklediff.js simplewiki User:Werdan7/twinklefluff.js simplewiki User:Werdan7/twinklespeedy.js siwiki User:තඹරු විජේසේකර/moverevert2.js siwiki User:තඹරු විජේසේකර/samepageedit.js siwiki User:තඹරු විජේසේකර/script installer core.js siwiki User:බිඟුවා/Gadget-HotCat.js siwiki User:බිඟුවා/refToolbarPlus.js siwiktionary User:බිඟුවා/Gadget-HotCat.js skwiki User:Peko/monobook.js skwiki User:Sudo77(new)/RefToolbarLegacy.js sourceswiki User:Crower/Dictionary2.js sourceswiki User:George Mel/monobook.js sowiktionary User:Foxall/wiked.js sqwiki User:Euriditi/Gadget-ZoomOnThumb.js srwiki User:BokicaK/quickpreview.js srwiki User:Kaster/shablon.js srwiki User:Саша Стефановић/quickpreview.js srwikinews User:Bawolff/opinion.js svwiki User:Arkanosis/iKiwi.js svwiki User:Arnef/monobook.js svwiki User:Castrup/monobook.js svwiki User:Fenix/monobook.js svwiki User:Fluff/cfau.js svwiki User:Fluff/monobook.js svwiki User:Fluff/slumpstub.js svwiki User:Fluff/vector.js svwiki User:Grillo/monobook.js svwiki User:Gurre/monobook.js svwiki User:Hannibal/monobook.js svwiki User:Hannibal/vector.js svwiki User:Haxpett/vector.js svwiki User:Herr X/monobook.js svwiki User:Herr X/vector.js svwiki User:JerkerES/monobook.js svwiki User:Jsdo1980/monobook.js svwiki User:Jsdo1980/vector.js svwiki User:Lenitha/monobook.js svwiki User:Lokal Profil/ny-Common.js svwiki User:MikaelLindmark/monobook.js svwiki User:MrMagic/monobook.js svwiki User:Necator/salt.js svwiki User:Necator/twinklearv.js svwiki User:Necator/twinklediff.js svwiki User:Necator/twinklefluff.js svwiki User:Necator/twinkleprod.js svwiki User:Necator/twinkleprotect.js svwiki User:Necator/twinklespeedy.js svwiki User:Pasqual/common.js svwiki User:Pasqual/monobook.js svwiki User:Pmartin/monobook.js svwiki User:Popperipopp/monobook.js svwiki User:Seren-dipper/userinfo.js svwiki User:StefanB/monobook.js svwiki User:StefanB/myskin.js svwiki User:Strangnet/twinklefluff.js svwiki User:Vivo/monobook.js szlwiki User:Przemub/wp sk.js tawiki User:Aathavan jaffna/saveandedit.js tawiki User:L.Shriheeran/User info.js tawiktionary User:Jagwar/common.js tawiktionary User:Mahir78/hotcat.js tawiktionary User:Mahir78/translate.js test2wiki User:Quedel/js/Benutzer:Ireas/düp-monobook.js test2wiki User:Theopolisme/common.js testwiki User:Alifakoor/radesaaz.js testwiki User:Gadget850/RefToolbarLegacy.js testwiki User:Grind24/mystatus.js testwiki User:Matanya/vector.js testwiki User:Merlissimo/modern.js testwiki User:Nathan2055/common.js testwiki User:Quentinv57/Gadget-TrollOptions.js testwiki User:RickK/monobook.js testwiki User:Riley Huntley/closeAFD.js testwiki User:Rjd0060/test.js testwiki User:Stigmj/monobook.js testwiki User:Łukasz McKita/sk.js thwiki User:Jutiphan/Scripts/editor/monobook.js thwiki User:Pubat/Scripts/editor/monobook.js thwikibooks User:Lux2545/vector.js thwikiquote User:Lux2545/vector.js thwiktionary User:Lux2545/vector.js tlwiki User:Maskbot/Gadget-HotCat.js trwiki User:Animum/monobook.js trwiki User:Animum/monobook.js trwiki User:BetelgeuSeginus/Hızlı bilgi.js trwiki User:BetelgeuSeginus/Hızlı bilgi.js trwiki User:DR.Child/cactions.js trwiki User:DR.Child/cactions.js trwiki User:Hetanaheta/HotCat.js trwiki User:Hetanaheta/HotCat.js trwiki User:Kumul/JS2.js trwiki User:Superyetkin/VikiDuyuru.js trwiki User:Superyetkin/VikiDuyuru.js trwiki User:Vito Genovese/Hızlı bilgi.js trwiki User:Vito Genovese/Hızlı bilgi.js trwiki User:Vito Genovese/Hızlı engel.js trwiki User:Vito Genovese/Hızlı engel.js trwiki User:Vito Genovese/Pratik menü 2.js trwiki User:Vito Genovese/Pratik menü 2.js trwiki User:Vito Genovese/Pratik menü.js trwiki User:Vito Genovese/Pratik menü.js trwikibooks User:Joseph/HotCat.js trwikinews User:Srhat/vector.js trwikinews User:Vito Genovese/HotCat.js trwikiquote User:Cekli829/HotCat.js trwikiquote User:Dabeon/HotCat.js trwikiquote User:Vitruvian/HotCat.js ugwiktionary User:Oyunqi/common.js ugwiktionary User:Oyunqi/edittools.js ukwiki User:Js~ukwiki/patroller.js ukwiki User:Olvin/patroller.js ukwiki User:Pkravchenko/monobook.js ukwiki User:Хинт/Gadget-HotCat.js ukwiki User:Хинт/patroller.js viwiki User:Alphama/userinfo.js viwiki User:Future ahead/easyblock.js viwiki User:Magicknight94/patroller.js viwiki User:Nguyễn Thanh Quang/Revert.js viwiki User:Nguyễn Thanh Quang/wikiEd.js viwiki User:Trần Nguyễn Minh Huy/Template.js viwiki User:Trần Nguyễn Minh Huy/easyblock.js viwiki User:Vinhtantran/Revert.js viwikibooks User:Nguyenthephuc/monobook.js viwikisource User:Vinhtantran/HotCat.js viwiktionary User:Nguyenthephuc/monobook.js warwiki User:Zscout370/ajaxbatchdelete.js wikidatawiki User:GZWDer/common.js wikidatawiki User:Reza1615/userinfo.js wikidatawiki User:Riley Huntley/dropdown-menus.js yiwiki User:שמאלץ/morebits.js zh_yuewiki User:Hillgentleman/morebits.js zh_yuewiki User:Hillgentleman/twinklearv.js zh_yuewiki User:Hillgentleman/twinklediff.js zh_yuewiki User:Hillgentleman/twinklefluff.js zh_yuewiki User:Hillgentleman/twinkleprod.js zh_yuewiki User:Hillgentleman/twinklespeedy.js zh_yuewiki User:Hillgentleman/twinklewarn.js zhwiki User:Bencmq/QPreview.js zhwiki User:Bencmq/cactions.js zhwiki User:Chaplin/wikEd.js zhwiki User:Fantasticfears/RefToolbarLegacy.js zhwiki User:HW~zhwiki/Notifier.js zhwiki User:Jimmy Xu/scripts/cactions.js zhwiki User:Moonian/qui.js zhwiki User:Onlymyself65536/monobook.js zhwiki User:Sameboat/ajaxpreview.js zhwiki User:Shibo77/metadata.js zhwiki User:Tommyang/Script/cactions.js zhwiki User:Tommyang/Script/userinfo.js zhwiki User:Xiaq/simple.js zhwiki User:YFdyh000/AjaxPatrolLinks.js zhwiki User:زكريا/common.js zhwikinews User:Horacewai2/HotCat.js zhwiktionary User:范/common.js (total: 1367, shown: 1367)
3 results from private wikis omitted (though, I don't think that posting them would expose much)
#!/bin/bash for foo in sajax_debug_mode sajax_request_type sajax_debug sajax_init_object sajax_do_call wfSupportsAjax do mwgrep $foo --user --max-results 5000 > ~/txt/$foo-user.txt mwgrep $foo --max-results 5000 > ~/txt/$foo.txt done
Sams-MacBook-Pro:txt reedy$ grep -i private * sajax_init_object-user.txt:## Private wiki results Sams-MacBook-Pro:txt reedy$
These were therefore removed
sajax_debug_mode-user.txt321 BDownload
sajax_debug-user.txt807 BDownload
sajax_do_call-user.txt962 BDownload
sajax_init_object-user.txt64 KBDownload
sajax_request_type-user.txt353 BDownload
wfSupportsAjax-user.txt2 KBDownload
sajax_request_type.txt22 BDownload
sajax_init_object.txt13 KBDownload
So yeah, ajax.js exposed two variables and four functions (for which Reedy helpfully mwgrepped above, thanks Reedy), all but one of which can be fixed with just search-and-replace:
- sajax_debug_mode → false
- sajax_request_type → GET
- sajax_debug( → console.log(
- sajax_init_object() → new XMLHttpRequest()
- wfSupportsAjax() → true
Only sajax_do_call requires some examination, and that's used in a total of 4+20 pages across all wikis, according to Reedy's mwgrep.
Anyone feel like running a quick crosswiki bot?
(Looking at the actual scripts, some do stupid stuff like sajax_init_object () or new sajax_init_object(), so you might want to do some more restrictive searches first.)
Anyone feel like running a quick crosswiki bot?
Probably should be run from someones account with interfaceeditor or similar...
In both the cases of document.write() and sajax, for how long have we been telling users directly (in the browser console, on their talk pages, via e-mail) that these interfaces are no longer supported? @MrStradivarius suggested a three-month warning period. I'd go a bit further and suggest six months. What's the rush? If we really need a formal policy that spells this out, I'm sure we can create one on mediawiki.org.
sajax has been emitting console warnings since June 3, 2013: rMW35b6b63e48b9: mediawiki.legacy.ajax: Wrap Sajax methods in mw.log.deprecate (1.22).
document.write was deprecated since 2007.. It never worked in early versions of Chrome and Safari, so we actively steered people away from it for years. I fixed hundreds of scripts on en.wikipedia in 2007
I think the problem is that while these functions have been deprecated for years, and while there have been warnings in the JavaScript console and on the mailing lists for years, the message hasn't been getting through to our end users at all. Most users don't read the mailing lists, and most probably don't even know that their browser has a JavaScript console. Even people who write user scripts will often ignore warnings in the console, either because they never check them after writing the script, because they may not know how to fix the problems, or because they retire from their respective wikis.
However, these scripts are often still in use for workflows that are important to the various communities (the scripts for enwiki's Featured picture candidates that Adam Cuerden mention are a good example). This means that someone in the community will need to fix scripts that they didn't write, otherwise their community's processes will break. And that takes time. If everyone who wrote a script using Sajax was around and able to update it, then a week might be enough. But unfortunately, we don't have that luxury.
I agree with everything you said, I just don't think that it's very useful to then put very expensive resources into fixing those last 10%, of which a large part in user script space, probably will never be executed ever again, because the user is no longer active. Experience has shown that at some point, you just need to pull the trigger. It would have been nice however, if we had put out the wikitech user notice BEFORE actually pulling the trigger. I think that was rather bad form.
I agree with everything you said, I just don't think that it's very useful to then put very expensive resources into fixing those last 10%, of which a large part in user script space, probably will never be executed ever again, because the user is no longer active. Experience has shown that at some point, you just need to pull the trigger. It would have been nice however, if we had put out the wikitech user notice BEFORE actually pulling the trigger. I think that was rather bad form.
By "pull the trigger" do you mean before the patch was merged or before it was deployed? (In any case, I just sent a notification to wikitech-ambassadors and wikitech-l)
I just don't think that it's very useful to then put very expensive resources into fixing those last 10%, of which a large part in user script space, probably will never be executed ever again, because the user is no longer active. Experience has shown that at some point, you just need to pull the trigger.
There are ways that are a lot smarter than just pulling the trigger, though. We could run a script to find out how many users were using a Sajax script, and whether they were active or not. We could notify script authors and community noticeboards a few months before the plug was due to be pulled. And then the week before, we could fix the remaining scripts that were in use by more than, say, 100 active users, and then leave talk page messages for all of the other users. Just breaking all of the scripts with the only on-wiki warning being Tech News two days before the deadline is not going to please people.
Can anyone point me in the direction of the documentation for the Sajax library? It doesn't appear to be linked anywhere from the Legacy JavaScript page, and it's going to be tricky for me to fix existing gadgets if I don't know how they work.
Can anyone point me in the direction of the documentation for the Sajax library? It doesn't appear to be linked anywhere from the Legacy JavaScript page, and it's going to be tricky for me to fix existing gadgets if I don't know how they work.
So yeah, ajax.js exposed two variables and four functions (for which Reedy helpfully mwgrepped above, thanks Reedy), all but one of which can be fixed with just search-and-replace:
- sajax_debug_mode → false
- sajax_request_type → GET
- sajax_debug( → console.log(
- sajax_init_object() → new XMLHttpRequest()
- wfSupportsAjax() → true
Only sajax_do_call requires some examination, and that's used in a total of 4+20 pages across all wikis, according to Reedy's mwgrep.
Anyone feel like running a quick crosswiki bot?
(Looking at the actual scripts, some do stupid stuff like sajax_init_object () or new sajax_init_object(), so you might want to do some more restrictive searches first.)
Yes, I saw that, but I was wondering if Sajax was documented somewhere that explained those things. There are a couple of things in the library that I'm not sure about:
- Is the object you get with sajax_init_object() exactly the same as an XMLHttpRequest object, or are there some differences? I've been given the impression that the only difference is that the Sajax object was supported in IE6, but it would be nice to get confirmation.
- Can there be other types of request for sajax_request_type, e.g. POST?
I wasn't sure about sajax_do_call either, but the link that @Ciencia_Al_Poder found explained it pretty well. Also, it seemed likely that there was some documentation out there, because otherwise it would have been pretty hard for all those people to write all of those Sajax scripts.
This is only relevant if we fix scripts by hand, of course. Fixing them by bot is a brilliant idea, and we should definitely do it. But fixing them manually would let us avoid writing things like if ( true ) where before we wrote if ( wfSupportsAjax() ), so it would be superior to the bot approach, if a lot slower and more tedious. We could also take the opportunity to update other bad/deprecated code in our scripts while we are fixing Sajax.
- Is the object you get with sajax_init_object() exactly the same as an XMLHttpRequest object, or are there some differences? I've been given the impression that the only difference is that the Sajax object was supported in IE6, but it would be nice to get confirmation.
It doesn't matter in a MediaWiki context since JavaScript isn't loaded for IE7 and 6 anymore.
- Can there be other types of request for sajax_request_type, e.g. POST?
GET and POST, yes. No idea if stuff like PUT was theoretically supported, but I'd dare to claim that virtually all sajax calls used either GET or POST.
Also, it seemed likely that there was some documentation out there, because otherwise it would have been pretty hard for all those people to write all of those Sajax scripts.
Something about bug #1 (T2001) and all...
This is only relevant if we fix scripts by hand, of course.
Which we should definitely do, as it allows to fix various other issues, too. Code style is a pet peeve of mine, but there are "real" issues with many of such legacy scripts still using sajax -- if a script is using sajax, it's likely also using raw wg globals (instead of mw.config.get( 'wgWhatever' )), addOnloadHook, etc.
But fixing them manually would let us avoid writing things like if ( true ) where before we wrote if ( wfSupportsAjax() ), so it would be superior to the bot approach, if a lot slower and more tedious. We could also take the opportunity to update other bad/deprecated code in our scripts while we are fixing Sajax.
+2
There's still various copies of scripts manually copied to other wikis, that should just be updated from an "upstream" copy, and/or loaded directly from a canonical source
E.g. hotcat etc
Updated trail of sadness... Private wikis (arbcom_nl and otrswiki) results removed. They only total 3. But one is a hotcat copy
sajax_debug_mode-user.txt250 BDownload
sajax_debug-user.txt535 BDownload
sajax_do_call-user.txt896 BDownload
sajax_init_object-user.txt54 KBDownload
sajax_init_object.txt10 KBDownload
sajax_request_type.txt86 BDownload
sajax_request_type-user.txt383 BDownload
wfSupportsAjax-user.txt2 KBDownload
Content licensed under Creative Commons Attribution-ShareAlike (CC BY-SA) 4.0 unless otherwise noted; code licensed under GNU General Public License (GPL) 2.0 or later and other open source licenses. By using this site, you agree to the Terms of Use, Privacy Policy, and Code of Conduct. · Wikimedia Foundation · Privacy Policy · Code of Conduct · Terms of Use · Disclaimer · CC-BY-SA · GPL · Credits