Page MenuHomePhabricator

Allow community configurable extensions to respond to configuration changes
Closed, ResolvedPublic

Description

Background & Problem

In GrowthExperiments, we have many community configuration settings which are not evaluated on the fly. For example, the Minimum required link score for Add Link tasks is only evaluated whenever an Add Link task is being generated (as in, added into the pool). Equally, mentee graduation settings (introduced in T403563) are only evaluated for an user whenever they make an edit. This is a tradeoff between performance and reasonable responsiveness.

However, such a system is confusing on the admin's end, as setting changes might not apply immediately. Particularly with the Add Link task pool, setting changes can take months to apply. The Growth team generally has a maintenance script to force an update, but that requires sysadmin-level permissions to run, and it is not something that is available to the general community.

Solution

CommunityConfiguration can fire a domain event that indicates its setting changes. This would allow extensions like GrowthExperiments to listen to Community Configuration updates, and trigger necessary updating jobs (be it for Add Link or mentee graduation).

Event Timeline

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

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

[mediawiki/extensions/CommunityConfiguration@master] Add CommunityConfigurationEditCompleted hook

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

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

[mediawiki/extensions/CommunityConfiguration@master] refactor: Introduce ProviderServicesContainer

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

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

[mediawiki/extensions/GrowthExperiments@master] refactor: Inject ProviderServicesContainer

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

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

[mediawiki/extensions/AbuseFilter@master] refactor: Inject ProviderServicesContainer into BlockedDomainConfigProvider

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

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

[mediawiki/extensions/CommunityConfiguration@master] refactor: Remove B/C compat code for ProviderServicesContainer

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

Michael triaged this task as Medium priority.Oct 7 2025, 2:16 PM

Change #1192248 merged by jenkins-bot:

[mediawiki/extensions/CommunityConfiguration@master] refactor: Introduce ProviderServicesContainer

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

Change #1192250 merged by jenkins-bot:

[mediawiki/extensions/GrowthExperiments@master] refactor: Inject ProviderServicesContainer into SuggestedEditsConfigProvider

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

Change #1192252 merged by jenkins-bot:

[mediawiki/extensions/AbuseFilter@master] refactor: Inject ProviderServicesContainer into BlockedDomainConfigProvider

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

Change #1194157 merged by jenkins-bot:

[mediawiki/extensions/CommunityConfiguration@master] refactor: Remove B/C compat code for ProviderServicesContainer

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

Change #1187837 merged by jenkins-bot:

[mediawiki/extensions/CommunityConfiguration@master] Add CommunityConfigurationChangedEvent domain event

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

Status: ⬜ Not QA Testable
Rationale: Requires backend/config changes not covered by UI or DevTools.

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

[mediawiki/core@master] tests: Mark ExpectCallbackTrait as stable to use

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

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

[mediawiki/extensions/CommunityConfiguration@master] tests: Add CommunityConfigurationChangedEventTest

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

Adding a bit more test coverage. Then it can be resolved, as I agree with @Edtadros that this is pretty much impossible to QA alone.

Change #1194545 merged by jenkins-bot:

[mediawiki/core@master] tests: Mark ExpectCallbackTrait as stable to use

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

Change #1194549 merged by jenkins-bot:

[mediawiki/extensions/CommunityConfiguration@master] tests: Add CommunityConfigurationChangedEventTest

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

Michael subscribed.

This is just a very technical sub-task that adds for now unused capabilities. The main thing is that it unblocks T405953: Apply changes to graduation mentorship settings automatically upon save. Let's resolve this task here, and then we can move forward with reviewing the change attached to that task in a future sprint.