Page MenuHomePhabricator

Integrate existing AB testable features with TestKitchen
Closed, ResolvedPublic

Description

Currently GrowthExperiments makes use of ExperimentUserManager or ExperimentUserDefaultsManager in a number of places (bespoke system) and also use of ExperimentTestKitchenManager in some others. We should move all experiment-able features to make use of the new system ExperimentTestKitchenManager. Or even more ambitiously, consider completely removing TestKitchen as a soft-dependency of GrowthExperiments and write all experiment code in WikimediaEvents.

To do so it would come very handy to have a product decision on each feature, should the feature remain AB-testable or should we get rid of the AB-testing setup for it?

Features affected

  • SiteNoticeGenerator
  • Task types (currently used for Revise Tone)
  • Leveling up notifications
  • Account creation section KPI dashboard

"Files" affected

  • SiteNoticeGenerator, SiteNoticeGeneratorTest
  • NewcomerTaskUserOptionsLookup, NewcomerTaskUserOptionsLookupTest (task type AB testing)
  • SuggestedEdits.php (support for Revise tone experiment) — stays as it is until experiment concludes
  • ExperimentsHooks (support for experiments using wgConditionalUserOptions)
  • HomepageHooks (support for Account creation section in Growth KPI dashboard, support for $geForceVariant )

Acceptance criteria

  • ExperimentUserManager is removed
  • ExperimentUserDefaultsManager is removed
  • Features that have been deemed not relevant to AB test anymore do not make use of any experiments manager

Event Timeline

Sgs updated the task description. (Show Details)

After a conversation with @Urbanecm_WMF about this we have agreed on some conclusions:

  • Account creation section KPI dashboard code can be removed, already confirmed by @KStoller-WMF and if we want to have some experiment exposure KPIs in Grafana we could it in T416583
  • Conditional defaults driven experiments are not gonna be used in the future and ExperimentUserDefaultsManager can be dismantled
  • We discussed about David's pattern in this thread and agreed it would be tricky to apply for server side rendered HTML as there's no easy way of transporting the enrollment result from WikimediaEvents to the relevant SpecialPage rendering code without a dedicated intervention, eg: registering some provider from extension.json. The best shot GrowthExperiments has to facade the feature toggling logic based on experiment variants is using the recently introduced FeatureManager

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

[mediawiki/extensions/GrowthExperiments@master] experiments: dismantle ExperimentUserDefaultsManager

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

Sgs triaged this task as Medium priority.Feb 10 2026, 5:45 PM
Sgs moved this task from Inbox to needs estimation on the Growth-Team board.

Removing ExperimentUserDefaultsManager leaves ConditionalDefaultOptionsAddConditionHook without any consumer, any thoughts @Urbanecm_WMF ?

Sgs renamed this task from Decide how to integrate existing AB testable feature with TestKitchen to Integrate existing AB testable features with TestKitchen.Feb 10 2026, 6:44 PM

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

[mediawiki/extensions/GrowthExperiments@master] ExperimentTestKitchenManager: stop enrolling users on account creation

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

Change #1238399 merged by jenkins-bot:

[mediawiki/extensions/GrowthExperiments@master] experiments: dismantle ExperimentUserDefaultsManager

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

Removing ExperimentUserDefaultsManager leaves ConditionalDefaultOptionsAddConditionHook without any consumer, any thoughts @Urbanecm_WMF ?

It was added in 1.43, which means it is covered by the Stable Interface Policy. Removing it would require first deprecating it, and then removing it no less than a release later. Since the hook is not causing any problems and given we aren't aware of any structural problems with it, I think it is best to leave it there. Happy to consider other arguments if I'm missing something though!

Change #1238411 merged by jenkins-bot:

[mediawiki/extensions/GrowthExperiments@master] ExperimentTestKitchenManager: stop enrolling users on account creation

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

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

[mediawiki/extensions/GrowthExperiments@master] ExperimentManager: remove geForceVariant flag handling

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

Sgs updated Other Assignee, added: Cyndymediawiksim.
Sgs moved this task from needs estimation to FY2025-26 Q3 Sprint 3 on the Growth-Team board.
Sgs edited projects, added Growth-Team (FY2025-26 Q3 Sprint 3); removed Growth-Team.

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

[mediawiki/extensions/GrowthExperiments@master] SiteNoticeGenerator: stop adding per-variant classes

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

Change #1239752 merged by jenkins-bot:

[mediawiki/extensions/GrowthExperiments@master] ExperimentManager: remove geForceVariant flag handling

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

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

[mediawiki/extensions/GrowthExperiments@master] LevelingUpManager: stop supporting multiple delay specifications

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

Change #1239911 merged by jenkins-bot:

[mediawiki/extensions/GrowthExperiments@master] SiteNoticeGenerator: stop adding per-variant classes

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

Change #1240039 merged by jenkins-bot:

[mediawiki/extensions/GrowthExperiments@master] LevelingUpManager: stop supporting multiple delay specifications

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

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

[mediawiki/extensions/GrowthExperiments@master] Experiments: prefer FeatureManager over ExprimentManager

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

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

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

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

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

[mediawiki/extensions/GrowthExperiments@wmf/1.46.0-wmf.16] ExperimentManager: remove geForceVariant flag handling

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

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

[mediawiki/extensions/GrowthExperiments@wmf/1.46.0-wmf.16] SiteNoticeGenerator: stop adding per-variant classes

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

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

[mediawiki/extensions/GrowthExperiments@wmf/1.46.0-wmf.16] LevelingUpManager: stop supporting multiple delay specifications

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

Change #1243855 merged by jenkins-bot:

[mediawiki/extensions/GrowthExperiments@wmf/1.46.0-wmf.16] ExperimentManager: remove geForceVariant flag handling

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

Change #1243856 merged by jenkins-bot:

[mediawiki/extensions/GrowthExperiments@wmf/1.46.0-wmf.16] SiteNoticeGenerator: stop adding per-variant classes

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

Change #1243868 merged by jenkins-bot:

[mediawiki/extensions/GrowthExperiments@wmf/1.46.0-wmf.16] LevelingUpManager: stop supporting multiple delay specifications

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

Mentioned in SAL (#wikimedia-operations) [2026-02-25T15:54:42Z] <urbanecm@deploy2002> Started scap sync-world: Backport for [[gerrit:1243855|ExperimentManager: remove geForceVariant flag handling (T416894)]], [[gerrit:1243856|SiteNoticeGenerator: stop adding per-variant classes (T416894)]], [[gerrit:rMW1243868d16f5|LevelingUpManager: stop supporting multiple delay specifications (T416894)]], [[gerrit:1243854|tests: Introduce MentorRemoverTest]]

Mentioned in SAL (#wikimedia-operations) [2026-02-25T15:57:02Z] <urbanecm@deploy2002> urbanecm: Backport for [[gerrit:1243855|ExperimentManager: remove geForceVariant flag handling (T416894)]], [[gerrit:1243856|SiteNoticeGenerator: stop adding per-variant classes (T416894)]], [[gerrit:rMW1243868d16f5|LevelingUpManager: stop supporting multiple delay specifications (T416894)]], [[gerrit:1243854|tests: Introduce MentorRemoverTest]] synced to the testservers (see https://wikitech.wikimedia.or

Mentioned in SAL (#wikimedia-operations) [2026-02-25T16:01:24Z] <urbanecm@deploy2002> Finished scap sync-world: Backport for [[gerrit:1243855|ExperimentManager: remove geForceVariant flag handling (T416894)]], [[gerrit:1243856|SiteNoticeGenerator: stop adding per-variant classes (T416894)]], [[gerrit:rMW1243868d16f5|LevelingUpManager: stop supporting multiple delay specifications (T416894)]], [[gerrit:1243854|tests: Introduce MentorRemoverTest]] (duration: 06m 42s)

Change #1239893 merged by jenkins-bot:

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

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

Change #1240693 merged by jenkins-bot:

[mediawiki/extensions/GrowthExperiments@master] Experiments: prefer FeatureManager over ExprimentManager

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

The criteria for this task has been checked as met and the patches have been merged without any issues. This looks okay to resolve unless there's something I'm missing