Page MenuHomePhabricator

Convert all Wikimedia-deployed extensions and skins to use extension registration
Open, MediumPublic

Description

Basic documentation about the extension registration system is at https://www.mediawiki.org/wiki/Extension_registration

The convertExtensionToRegistration.php script can be used to create an extension.json file, though it may not work perfectly and could trigger errors. Use the validateRegistrationFile.php script to make sure your script follows the correct schema.

The PHP entry point will need to be kept and there will be duplication of information until Wikimedia config is updated.

Please add me (Legoktm) as a reviewer to conversion patches and feel free to ask me if something is unclear, some documentation is missing, etc.

Current progress: https://tools.wmflabs.org/extreg-wos/

Currently open tasks: https://phabricator.wikimedia.org/maniphest/query/ZJf4nxzBD.2s/#R

Details

Related Gerrit Patches:
mediawiki/skins/BlueSky : masterDeprecate and empty PHP entry point
mediawiki/extensions/PageTriage : masterConvert PageTriage to extension registration
mediawiki/extensions/intersection : masterConvert DPL to use extension registration
mediawiki/skins/Vector : masterAdd skin.json, deprecate and empty PHP entry point
mediawiki/skins/Vector : REL1_25Add skin.json, deprecate and empty PHP entry point

Related Objects

View Standalone Graph
This task is connected to more than 200 other tasks. Only direct parents and subtasks are shown here. Use View Standalone Graph to show more of the graph.
StatusAssignedTask
OpenNone
OpenNone
ResolvedReedy
ResolvedReedy
ResolvedReedy
ResolvedLegoktm
ResolvedAnomie
ResolvedMtDu
ResolvedMhutti1
ResolvedMtDu
DeclinedLegoktm
ResolvedLegoktm
ResolvedJdforrester-WMF
ResolvedMtDu
ResolvedPaladox
Resolvedlcawte
Resolvedmatmarex
Resolvedsanthosh
ResolvedVictorbarbu
Resolvedlcawte
ResolvedLegoktm
ResolvedJdforrester-WMF
ResolvedKrenair
Resolvedananayarora
ResolvedMhutti1
ResolvedLegoktm
ResolvedJdforrester-WMF
DeclinedLegoktm
ResolvedPranavmk98
ResolvedPaladox
ResolvedLegoktm
ResolvedReedy
Resolvedlcawte
Resolvedananayarora
ResolvedLegoktm
ResolvedMtDu
ResolvedLegoktm
ResolvedLegoktm
Resolvedphuedx
ResolvedLegoktm
Resolvedananayarora
ResolvedTpt
ResolvedPrtksxna
Resolvedananayarora
ResolvedLegoktm
ResolvedMhutti1
ResolvedLegoktm
ResolvedArlolra
ResolvedReedy
ResolvedLegoktm
ResolvedReedy
ResolvedReedy
ResolvedLegoktm
ResolvedVictorbarbu
ResolvedMtDu
ResolvedPaladox
ResolvedNone
Resolvedananayarora
ResolvedMhutti1
ResolvedJdlrobson
ResolvedNiharika
ResolvedPhysikerwelt
ResolvedLegoktm
ResolvedMhutti1
Declined Mattflaschen-WMF
ResolvedPaladox
ResolvedLegoktm
ResolvedPaladox
ResolvedMhutti1
ResolvedMtDu
ResolvedReedy
ResolvedJdforrester-WMF
ResolvedFlorian
ResolvedJeanFred
ResolvedNiharika
ResolvedMhutti1
ResolvedPaladox
ResolvedNone
ResolvedPaladox
ResolvedReedy
ResolvedLegoktm
ResolvedReedy
ResolvedPaladox
ResolvedLegoktm
ResolvedTgr
ResolvedReedy
ResolvedPaladox
ResolvedPaladox
ResolvedLegoktm
ResolvedParent5446
DeclinedMtDu
ResolvedLegoktm
ResolvedAnomie
ResolvedParent5446
ResolvedMtDu
ResolvedReedy
ResolvedTgr
ResolvedParent5446
ResolvedDereckson
ResolvedLegoktm
ResolvedParent5446
DeclinedMaxSem
ResolvedKrenair
ResolvedMtDu
ResolvedReedy
ResolvedLegoktm
ResolvedMtDu
Declineddemon
ResolvedPaladox
ResolvedDereckson
ResolvedFlorian
Resolvedananayarora
ResolvedMhutti1
ResolvedPaladox
ResolvedPaladox
ResolvedKrenair
ResolvedLegoktm
ResolvedPaladox
ResolvedLegoktm
Resolvedsanthosh
ResolvedLegoktm
ResolvedLegoktm
ResolvedLegoktm
ResolvedLegoktm
ResolvedLegoktm
ResolvedLegoktm
ResolvedPaladox
ResolvedYurik
ResolvedLegoktm
ResolvedLegoktm
ResolvedLegoktm
ResolvedLegoktm
ResolvedNone
ResolvedJdforrester-WMF
ResolvedJdlrobson
ResolvedJdforrester-WMF
ResolvedLegoktm
ResolvedLegoktm
ResolvedLegoktm
ResolvedLegoktm
ResolvedGilles
ResolvedLegoktm
InvalidNone
OpenNone
ResolvedMtDu
ResolvedAndyRussG
Resolvedawight
Resolvedawight
ResolvedPaladox
Resolvedananayarora
ResolvedFlorian
ResolvedMtDu
InvalidNone
InvalidNone
ResolvedReedy
ResolvedReedy
ResolvedJdforrester-WMF
ResolvedSmalyshev
ResolvedNikerabbit
ResolvedReedy

Event Timeline

There are a very large number of changes, so older changes are hidden. Show Older Changes
Gilles removed a subscriber: Gilles.Mar 30 2017, 6:58 AM

We have reached more than 50% on the wall of superpowers!

@Reedy can we have updated stats on what needs to be done? Thanks.

Reedy added a comment.Nov 18 2017, 6:20 PM

GWToolset was a huge mess last time it was tried.

Translate needs to support older MW (I dunno when this support ends), so can't be converted (though, in theory, we could have a extension.json and not empty out Translate.php... And keep them in sync. There's a few functions that need moving out, which can be done

TMH, CirrusSearch, Collection and FlaggedRevs are rather complex

Liuxinyu970226 added a comment.EditedNov 20 2017, 1:02 PM

The FlaggedRevs users should worry about their activation problems which therefore lead that convert task for this extension to be a no-go area.

FR is currently blocked/not being deployed to more wikis because of security bugs afaik, so maybe we should not bother with the conversion.

FR is currently blocked/not being deployed to more wikis because of security bugs afaik, so maybe we should not bother with the conversion.

In this case, wouldn't it be a better idea to fix the security bugs instead?

@MGChecker Maybe it is, but I'm not a (FlaggedRevs) developer so it's not in my hands.

Reedy added a comment.Nov 21 2017, 7:33 PM

Don't think there are any FlaggedRevs security bugs...

Don't think there are any FlaggedRevs security bugs...

Yes, my bad. I was thinking on Education Program. Sorry.

How many of the WMF deployed extensions we've got left to be converted?

MarcoAurelio added a comment.EditedJan 22 2018, 11:10 PM

@Reedy If it is not too much asking, can I have a list so I can check if tasks are already created for them? Thanks.

Edit: I see that I made a list at T87875#3772328, but if we have more now we need to canvass their maintainers to just do it :)

extension-list:$IP/extensions/CirrusSearch/CirrusSearch.php
extension-list:$IP/extensions/Collection/Collection.php
extension-list:$IP/extensions/FlaggedRevs/FlaggedRevs.php
extension-list:$IP/extensions/GWToolset/GWToolset.php
extension-list:$IP/extensions/PropertySuggester/PropertySuggester.php
extension-list:$IP/extensions/TimedMediaHandler/TimedMediaHandler.php
extension-list:$IP/extensions/Translate/Translate.php
extension-list:$IP/extensions/Wikibase/client/WikibaseClient.php
extension-list:$IP/extensions/Wikibase/repo/Wikibase.php
extension-list:$IP/extensions/WikibaseQuality/WikibaseQuality.php
extension-list:$IP/extensions/WikibaseQualityConstraints/WikibaseQualityConstraints.php
extension-list:$IP/extensions/Wikidata.org/WikidataOrg.php
extension-list-wikitech:$IP/extensions/LdapAuthentication/LdapAuthentication.php
extension-list-wikitech:$IP/extensions/OpenStackManager/OpenStackManager.php

Of the above, PropertySuggester already has an extension.json file.

$IP/extensions/CirrusSearch/CirrusSearch.php
$IP/extensions/Collection/Collection.php
$IP/extensions/FlaggedRevs/FlaggedRevs.php
$IP/extensions/GWToolset/GWToolset.php
$IP/extensions/LdapAuthentication/LdapAuthentication.php
$IP/extensions/OpenStackManager/OpenStackManager.php
$IP/extensions/TimedMediaHandler/TimedMediaHandler.php
$IP/extensions/Translate/Translate.php
$IP/extensions/Wikibase/client/WikibaseClient.php
$IP/extensions/Wikibase/repo/Wikibase.php
$IP/extensions/CirrusSearch/CirrusSearch.php
$IP/extensions/Collection/Collection.php
$IP/extensions/FlaggedRevs/FlaggedRevs.php
$IP/extensions/GWToolset/GWToolset.php
$IP/extensions/LdapAuthentication/LdapAuthentication.php
$IP/extensions/OpenStackManager/OpenStackManager.php
$IP/extensions/TimedMediaHandler/TimedMediaHandler.php
$IP/extensions/Translate/Translate.php
$IP/extensions/Wikibase/client/WikibaseClient.php
$IP/extensions/Wikibase/repo/Wikibase.php

TMH and GWToolset are done, just waiting for the train to advance far enough

Izno added a subscriber: Izno.Sep 11 2018, 7:55 PM

TMH and GWToolset are done, just waiting for the train to advance far enough

FYI the latter isn't documented on the extension page.

Restricted Application removed a subscriber: Liuxinyu970226. · View Herald TranscriptSep 11 2018, 9:37 PM
Liuxinyu970226 awarded a token.
Liuxinyu970226 added a subscriber: Liuxinyu970226.
D3r1ck01 updated the task description. (Show Details)Sep 22 2018, 10:00 AM

Four PHP entry points left in production:

$ git grep -h php wmf-config/extension-list
$IP/extensions/LdapAuthentication/LdapAuthentication.php
$IP/extensions/OpenStackManager/OpenStackManager.php
$IP/extensions/Wikibase/client/WikibaseClient.php
$IP/extensions/Wikibase/repo/Wikibase.php
$ git grep -h '\(require\|include\)_once "\$IP/extensions/.*\.php"'
	include_once "$IP/extensions/Wikibase/repo/Wikibase.php";
	include_once "$IP/extensions/Wikibase/client/WikibaseClient.php";
require_once "$IP/extensions/LdapAuthentication/LdapAuthentication.php";
require_once "$IP/extensions/OpenStackManager/OpenStackManager.php";

LdapAuthentication (T87934) has a patch that’s been dormant for almost three years. OpenStackManager (T87950) is slated for removal. Wikibase (T88258) is in progress.

Four PHP entry points left in production:

$ git grep -h php wmf-config/extension-list
$IP/extensions/LdapAuthentication/LdapAuthentication.php
$IP/extensions/OpenStackManager/OpenStackManager.php
$IP/extensions/Wikibase/client/WikibaseClient.php
$IP/extensions/Wikibase/repo/Wikibase.php
$ git grep -h '\(require\|include\)_once "\$IP/extensions/.*\.php"'
	include_once "$IP/extensions/Wikibase/repo/Wikibase.php";
	include_once "$IP/extensions/Wikibase/client/WikibaseClient.php";
require_once "$IP/extensions/LdapAuthentication/LdapAuthentication.php";
require_once "$IP/extensions/OpenStackManager/OpenStackManager.php";

LdapAuthentication (T87934) has a patch that’s been dormant for almost three years. OpenStackManager (T87950) is slated for removal. Wikibase (T88258) is in progress.

Just Wikibase stuff left now ;) (well, when we're deploying again and we can update extension-list and wikitech.php to use wfLoadExtension()