Page MenuHomePhabricator

Allow CommunityConfiguration to load configuration via HTTP
Open, Needs TriagePublic

Description

Background

Community Configuration has a concept of configuration stores, which are different ways how configuration can be accessed and/or written. As of writing, Community Configuration only has one store implementation: the wiki page store, which stores configuration within a defined wiki-page.

AbuseFilter has a feature called blocked external domains, which allows administrators to block external domains from being linked on the wikis. This feature is currently implemented without CommunityConfiguration, but a migration is on the way in T393240: Special:BlockedExternalDomains should make use of Community Configuration. In the parent task (T401524), the global blacklist (https://meta.wikimedia.org/wiki/Spam_blacklist) should be converted to also use blocked external domains.

Problem

Conceptually, global blocked external domains is a feature that falls within Community Configuration's remit as well. Ordinarily (without CC), it would be implemented by making an internal API request to a central wiki, which would hold the list, and feed it to all the client wikis.

However, it currently cannot be implemented via CC, because Community Configuration cannot access configuration via HTTP. Within this task, we should implement that as another store.

Notes

There is a PoC patch available at https://gerrit.wikimedia.org/r/c/mediawiki/extensions/CommunityConfiguration/+/1031010, which was previously considered for T359185.

Details

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald Transcript

Change #1176763 had a related patch set uploaded (by Urbanecm; author: Urbanecm):

[mediawiki/extensions/CommunityConfiguration@master] Introduce HttpStore

https://gerrit.wikimedia.org/r/1176763

Michael moved this task from Inbox to Needs Discussion on the Growth-Team board.
Michael subscribed.

Would that imply that CC would make an (internal?) HTTP request during every read view? How is that global list currently being distributed?

While I understand that the wiki that holds the config wants to edit it via CommunityConfiguration, does the reading from the client-wikis also have to happen via CommunityConfiguration? An alternative implementation could be that the extension (which? AbuseFilter?) in client wikis use custom logic to talk to an api-endpoint that the extension provides on the central wiki, and that then makes a local read on its CommunityConfiguration config.