Page MenuHomePhabricator

Convert all Wikimedia-deployed extensions and skins to use extension registration
Closed, ResolvedPublic

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

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.
StatusSubtypeAssignedTask
ResolvedNone
ResolvedNone
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
Resolved Prtksxna
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
Declined demon
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
Resolved Gilles
ResolvedLegoktm
InvalidNone
ResolvedNone
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

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

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

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.

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?

@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

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

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

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()

With rOMWCb7baa2a1e84c: extension-list: Load WikibaseClient via JSON now merged, we're down to one PHP i18n load left in production (and 186 JSON ones).

Ladsgroup subscribed.

With Wikibase migrated to extension.json in production, this is done 🎉🎉🎉

Macro tech-barnstar:

With Wikibase migrated to extension.json in production, this is done 🎉🎉🎉

Macro tech-barnstar:

Great! 😄