Page MenuHomePhabricator

Allow running multiple experiments in GrowthExperiments at the same time
Closed, ResolvedPublic5 Estimated Story Points

Description

For our upcoming hypotheses in the current and next quarter, we are planning to run a lot of experiments. The current restriction in GrowthExperiments to only run a single experiment per wiki at any time would be major obstacle for that.

With Test Kitchen, it should be pretty straight forward in principle to run multiple experiments at the same time.

This task replaces T288022, which set out to achieve the same outcome but based on the legacy custom GrowthExperiments experimentation infrastructure and thus with a different approach that is no longer suitable for our current situation.

Acceptance criteria

  • GrowthExperiments experimentation infrastructure supports running multiple experiments in parallel on the same wiki
  • ge.utils.getUserVariant() is either removed or returns all variants for active GrowthExperiments experiments
    • (the isUserInVariant() in the same file seems unused and can probably just be removed)
  • ge.utils.setUserVarian() needs to be adjusted as well

Event Timeline

Sgs triaged this task as High priority.Jan 28 2026, 4:48 PM
Sgs moved this task from Product Backlog to Needs Estimation on the Growth-Team board.
DMburugu set the point value for this task to 5.Feb 9 2026, 4:52 PM
Michael lowered the priority of this task from High to Medium.Feb 10 2026, 5:53 PM
Michael edited projects, added: Growth-Team (FY2025-26 Q3 Sprint 3); removed: Growth-Team.

Change #1239893 had a related patch set uploaded (by Sergio Gimeno; author: Sergio Gimeno):

[mediawiki/extensions/GrowthExperiments@master] Experiments: introduce StaticExperimentManager

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

Change #1240032 had a related patch set uploaded (by Sergio Gimeno; author: Sergio Gimeno):

[operations/mediawiki-config@master] [Growth] Specify notification delay as int instead of array

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

Change #1240040 had a related patch set uploaded (by Sergio Gimeno; author: Sergio Gimeno):

[mediawiki/extensions/GrowthExperiments@master] Experiments: introduce IExperimentManager

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

Change #1240032 merged by jenkins-bot:

[operations/mediawiki-config@master] [Growth] Specify notification delay as int instead of array

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

Mentioned in SAL (#wikimedia-operations) [2026-02-18T21:03:02Z] <sgimeno@deploy2002> Started scap sync-world: Backport for [[gerrit:1240032|[Growth] Specify notification delay as int instead of array (T375198 T415536)]]

Mentioned in SAL (#wikimedia-operations) [2026-02-18T21:05:15Z] <sgimeno@deploy2002> sgimeno: Backport for [[gerrit:1240032|[Growth] Specify notification delay as int instead of array (T375198 T415536)]] synced to the testservers (see https://wikitech.wikimedia.org/wiki/Mwdebug). Changes can now be verified there.

Mentioned in SAL (#wikimedia-operations) [2026-02-18T21:10:50Z] <sgimeno@deploy2002> Finished scap sync-world: Backport for [[gerrit:1240032|[Growth] Specify notification delay as int instead of array (T375198 T415536)]] (duration: 07m 48s)

Change #1240040 merged by jenkins-bot:

[mediawiki/extensions/GrowthExperiments@master] Experiments: introduce IExperimentManager

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

Change #1243857 had a related patch set uploaded (by Urbanecm; author: Sergio Gimeno):

[mediawiki/extensions/GrowthExperiments@wmf/1.46.0-wmf.16] Experiments: introduce IExperimentManager

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

Change #1243857 merged by jenkins-bot:

[mediawiki/extensions/GrowthExperiments@wmf/1.46.0-wmf.16] Experiments: introduce IExperimentManager

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

Mentioned in SAL (#wikimedia-operations) [2026-02-25T16:09:44Z] <urbanecm@deploy2002> Started scap sync-world: Backport for [[gerrit:1243857|Experiments: introduce IExperimentManager (T375198 T415536)]], [[gerrit:1243858|Remove PHPDoc blocks that are 100% identical to the code]]

Mentioned in SAL (#wikimedia-operations) [2026-02-25T16:12:03Z] <urbanecm@deploy2002> urbanecm: Backport for [[gerrit:1243857|Experiments: introduce IExperimentManager (T375198 T415536)]], [[gerrit:1243858|Remove PHPDoc blocks that are 100% identical to the code]] synced to the testservers (see https://wikitech.wikimedia.org/wiki/Mwdebug). Changes can now be verified there.

Mentioned in SAL (#wikimedia-operations) [2026-02-25T16:16:28Z] <urbanecm@deploy2002> Finished scap sync-world: Backport for [[gerrit:1243857|Experiments: introduce IExperimentManager (T375198 T415536)]], [[gerrit:1243858|Remove PHPDoc blocks that are 100% identical to the code]] (duration: 06m 44s)

Change #1245408 had a related patch set uploaded (by Sergio Gimeno; author: Sergio Gimeno):

[mediawiki/extensions/GrowthExperiments@master] ExperimentManager: support multiple concurrent experiments

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

Sgs updated Other Assignee, removed: Sgs.
Sgs added a subscriber: Cyndymediawiksim.

Change #1239893 merged by jenkins-bot:

[mediawiki/extensions/GrowthExperiments@master] Experiments: dismantle ExperimentUserManager

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

Change #1245408 merged by jenkins-bot:

[mediawiki/extensions/GrowthExperiments@master] ExperimentManager: support multiple concurrent experiments

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

Is this meant to be testable from the UI? I see a couple of patches which look like they implement the functionality.

Etonkovidova subscribed.

Checked for getUserVariant - https://codesearch.wmcloud.org/search/?q=getUserVariant - it is still listed as used getUserVariantForLegacySchema and in includes/Language/LanguageConverter.php. Is it ok for the scope of the task?

Checked for getUserVariant - https://codesearch.wmcloud.org/search/?q=getUserVariant - it is still listed as used getUserVariantForLegacySchema and in includes/Language/LanguageConverter.php. Is it ok for the scope of the task?

Yes, the function is still used internally by GrowthExperiments to keep compatibility with the running experiments and existing instrumentation. The LanguageConverter is a different function with the same name in a core class, no relation. I guess this task will be testable in production once we enable the experiment for the changes in the create account form AND the revise tone experiment keeps running.