Page MenuHomePhabricator

BetaFeatures should distinguish between automatic opt-in/out and explicit opt-in/out
Open, Needs TriagePublic


In T260250: Investigate TwoColConflict opt-out bug, we discovered some nasty side-effects of "Automatically enable all new beta features", which make it impossible for us to count the real number of people opting out of our feature. We believe this affects all beta features.

When the automatic opt-in is enabled and the user visits their preferences and saves (any tab!), any new beta features since their last visit will be given a "1" value in the database. When automatic opt-in is disabled, any new features will be given a "0". These values are indistinguishable from intentional opt-in and opt-out for specific features. It becomes impossible to measure how many people have intentionally opted-out.

I suggest that we change this behavior so that new preference rows are never created automatically, only by intentional actions. A new API can be introduced for testing beta feature enablement, which will first check the database for a specific preference. If that exists, it is returned. If not, we return the automatic opt-in value as a fallback.

This lack seems to be the root cause of: T64815: BetaFeatures: "Automatically enable ..." should actually automatically enable, not require visiting Special:Preferences, T260182: BetaFeatures dashboard should distinguish between automatic opt-in and intentional opt-in, T178977: Metrics to distinguish different types of Beta Features users, T170055: Impossible to turn off certain BetaFeatures when "Automatically enable all new beta features" is selected, T62747: BetaFeatures: Clicking "Automatically enable ..." should also activate all existing available BetaFeatures, and maybe T62012: BetaFeatures: Show a count of users who have enabled and then disabled a given Beta Feature. The number of related bugs suggest that the current behavior is unexpected for most users and developers.