Do not require extension.json schema changes
Why:
Prior to the patches, extension.json schema had to be modified
so that it supports the CommunityConfigurationProviders key.
It turns out extension.json supports arbitrary extension-defined
keys via the top-level attributes key, in which arbitrary data
can be passed to each extension by doing:
"attributes": {
"ExtensionName": {
"Key": "data"
}
}
see [[mw:Manual:Extension.json/Schema#attributes]] for docs.
Since it is better to require less core changes than more, let's
rewrite the extension so that the extension.json schema change
is not required.
The patch does not change the way how ConfigurationProviderFactory
learns of the defined providers. Instead, it constructs a HashConfig
in ServiceWiring, sets the CommunityConfigurationProviders key to
match the value loaded from attributes in extension.json, and adds
it as another ServiceOptions source. This is done so that the source
of this information can be easily changed in the future, if that
becomes necessary.
What:
- Load
CommunityConfigurationProvidersfrom extension.json attributes, instead of a top level key. - Remove
CommunityConfigurationProviderskey from extension.json of this extension (could be replaced byattributes, but it was empty, and usage belongs toCommunityConfigurationExampleanyway).
Bug: T351227