- Affected components: MediaWiki-Configuration, MediaWiki-Installer primarily
- Engineer(s) or team for initial implementation: @Legoktm
- Code steward: @Legoktm (I think? not sure the difference)
extension.json was introduced in 1.25 (just about 10 releases/5 years ago). It has many superior features including being able to properly declare dependencies, ability to set extension "attributes" (which have better performance possibilities) and schema validation.
However, continuing to support legacy PHP entry points means we can't fully take advantage of those features. Every extension integration point with core must still come along with a $wg variable and we can't do a wholesale migration of existing globals to attributes either.
Then there's stuff like T258844: Make the web installer work without running any extension PHP code which would be nice to have but has never even been in the realm of possibilities as long as PHP entry point extensions exist.
I would disclaim that it's not actually possible to stop people from running/loading PHP code from LocalSettings.php, but that's not the point.
- Deprecate using legacy PHP entry points for extensions (ideally before 1.39 LTS)
- Start coordinated push to convert remaining extensions in Gerrit to extension.json
- Invite maintainers to ask for help / request missing features so I and other core devs can help them with migration
- Assess migration status to figure out when removal can be done.
- Stop supporting legacy PHP entry points for extensions (ideally before 1.43 LTS)
- Drop support from web installer
- Begin deprecation of globals (e.g. $wgExtensionCredits) that were only intended for extensions and migrate them to attributes (following the normal deprecation process)
- Eventually drop support from CI (once no supporting release branches remain)
Nearly 85% of extensions in Gerrit use extension.json.