This is a heads up for extensions that expect to be installed via
composer:
Starting with the release of 1.38, extensions MUST NOT access any
MediaWiki functions, variables, or constants in code that is executed
by the composer autoloader. The earliest point in time in
which extensions MAY access SOME MediaWiki functions, variables,
or constants is the registration
callbacks, though restrictions
apply there as well.
Note that managing extension installation via composer will
continue to work as before for now (though support for this is not
well defined, see T250406).
Support is removed only for interacting with functions, variables,
or constants defined by MediaWiki before extension.json is loaded.
Doing this has long been known to cause problems, see the
discussion on T249573 and
T61872.
The immediate reason to remove support now is that we are working on allowing MediaWiki to load configuration from JSON and YAML files instead of setting global variables in PHP files. Exploration in this area has shown the need to have external libraries available early on during the initialization process, so we can use them to process settings files. This makes it necessary to change the order of initialization so that the auto-loading component of composer is executed before we set up global state with default settings etc. Because of this, code that is executed by the autoloader cannot have access to things that get initialized later on.
This change has already been made to MediaWiki core as deployed
on WMF sites. We found out the
hard way that there are extensions that presently rely on
accessing MediaWiki settings from code that runs during autoloader
initialization. After some discussion, it was decided that it is
time to remove support for this practice, since it has been
frowned upon for a long time, and there seems to be no good way to
resolve this hen-and-egg problem in the initialization sequence.
Please reply to this email if you have any concerns about this
change.
-- Daniel Kinzler Principal Software Engineer, Core Platform Wikimedia Foundation