Add new Fission experiment prefs
Categories
(Core :: DOM: Content Processes, task, P2)
Tracking
()
People
(Reporter: cpeterson, Assigned: kmag)
References
(Depends on 1 open bug)
Details
Attachments
(1 file)
We want to hide the "Open Non-Fission Window" File menu item (added in bug 1594227) when Fission is started by an experiment so users in the experiment don't know they have Fission enabled. We don't need to bother removing the [F]
suffix from Fission tab tooltips because it is pretty hidden.
We will probably need to add a new Fission start pref to be remote flipped by experiment. Having a separate pref will also allow the Normandy experiment server to enroll existing "fission.autostart
= true" users into our Fission experiment.
We should audit (bug 1609791) code that reads the fission.autostart
pref directly to make sure it works with the new Fission experiment pref. Most code should check whether the relevant nsILoadContext has the useRemoteSubframes
flag set instead of reading the fission.autostart
pref directly. We will need to make sure the useRemoteSubframes
implementation honors both the fission.autostart
pref and new experiment pref.
Reporter | ||
Comment 1•4 years ago
|
||
We've decided we don't need to bother removing the "Open Non-Fission Window" File menu item (or [F]
suffix from Fission tab tooltips) for our Fission Nightly experiment. These UI elements are only enabled in Nightly, so they won't be a problem for our Beta or Release experiments.
We do still want a new Fission experiment pref so remote pref flips don't stomp on the user's fission.autostart
pref opt-in.
Updated•4 years ago
|
Updated•4 years ago
|
Reporter | ||
Comment 2•4 years ago
|
||
WONTFIX because:
- Showing Fission door hanger to users who have manually opted into Fission is not a problem.
- We want to exclude users who have already opted into Fission from the experiment. They are biased users and we don't want to disable Fission for them if they are assigned to the experiment's control branch.
Reporter | ||
Comment 3•4 years ago
•
|
||
Reopening because we do need new experiment prefs.
After talking with the Normandy experiments team, I think we need three Fission prefs:
- The
fission.autostart
pref set by the user (and the Fission checkbox in about:preferences#experimental). fission.experiment.enrollmentStatus
: A new experiment enrollment pref set asynchronously by Normandy client code.fission.experiment.startupEnrollmentStatus
: A new experiment pref to persist the Normandy enrollment status at shutdown by Fission code (like WebRender bug 1503776).
fission.autostart
is a boolean, but the new experiment prefs 2 and 3 should be numbers (enums) because we need to differentiate three different experiment states:
- State 0: UNKNOWN. Default value: client doesn't know whether the user is enrolled in the experiment or not. Fission should be disabled.
- State 1: ENROLLED_CONTROL. User is enrolled in the experiment, but they are in the control branch so Fission should still be disabled.
- State 2: ENROLLED_TREATMENT. User is enrolled in the experiment and they are in the treatment branch so Fission should be enabled (when Firefox next launches).
The proposal is:
- When Firefox starts up, Fission mode will activate if either
fission.autostart
(pref 1) or persisted pref 3 are true.fission.autostart
will only be toggled by the user messing in about:config or about:preferences, not by code. - Persisted ref 3 == true means that, in the previous browser session, Normandy detected the user is in the Fission experiment.
- Perf 2 is toggled remotely by Normandy code and copied during browser shutdown into pref 3.
Constraints we are working around:
- We want to exclude existing
fission.autostart
== true users, but we can't both excludefission.autostart
== true users from our experiment and enable the experiment using the same fission.autostart pref.- If Normandy sets
fission.autostart
= true when enrolling a user, the user would then become ineligible for the experiment and will be auto-unenrolled. - The experiment team recommends we use a separate Fission experiment pref.
- If Normandy sets
- Normandy might set Fission pref too late during Firefox startup to enable Fission.
- Normandy changes a "default branch" pref (instead of "user branch" pref), so the pref change is in-memory only and won't be persisted to the next session. When Firefox restarts, the
fission.autostart
pref will still have its default value (false). - Later during Firefox startup, the Normandy initialization code runs, sees that the user is enrolled in the Fission experiment, and then sets
fission.autostart
= true. That will happen on every Firefox startup and is the normal process for Normandy initialization. - WebRender works around this by persisting the dirty default branch pref value at shutdown and then initializes WebRender during Firefox startup based on that persisted value. See WebRender bug 1503776.
- Normandy changes a "default branch" pref (instead of "user branch" pref), so the pref change is in-memory only and won't be persisted to the next session. When Firefox restarts, the
WebRender's Normandy default pref (akin to pref 2 above) is called gfx.webrender.all.qualified
. WebRender's persisted user pref (akin to pref 3 above) is called gfx.webrender.all.qualified.default
, which seems like a confusing name for a user pref.
Updated•4 years ago
|
Reporter | ||
Comment 4•4 years ago
•
|
||
These new experiment prefs should probably be locked on Beta and Release like fission.autostart
. We don't want users to enable Fission in Beta or Release by manually flipping these experiment prefs (until we're ready to run our Beta and Release experiments).
Reporter | ||
Comment 5•4 years ago
|
||
I updated the requirements in comment 3. The new experiment prefs 2 and 3 should be numbers (enums), not booleans, because we need to differentiate three different experiment states.
Reporter | ||
Comment 6•4 years ago
•
|
||
kmag's pref names:
- Pref #2:
fission.experiment.enrollmentStatus
- Pref #3:
fission.experiment.startupEnrollmentStatus
Assignee | ||
Comment 7•4 years ago
|
||
Comment 9•4 years ago
•
|
||
Backed out for perma failures.
Logs:
https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=316632726&repo=autoland&lineNumber=3887
https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=316633313&repo=autoland&lineNumber=2903
https://treeherder.mozilla.org/logviewer.html#/jobs?job_id=316632948&repo=autoland&lineNumber=4194
https://treeherder.mozilla.org/logviewer.html#?job_id=316625639&repo=autoland
Backout: https://hg.mozilla.org/integration/autoland/rev/be27e8e5cabfcb90f382470cbb6afa8c7566ca15
Assignee | ||
Updated•4 years ago
|
Updated•4 years ago
|
Comment 10•4 years ago
|
||
Comment 11•4 years ago
|
||
bugherder |
Updated•4 years ago
|
Comment 12•4 years ago
|
||
I am marking this as verified fixed based on the testing performed for PI-778 - QA sign-off for Fission experiment recipe. The complete list of bugs found during testing can be found here.
The experiment was tested using Firefox Nightly 83.0a1 (Build IDs 20201004212809 through 20201009041754) on Windows 10, Windows 7 and macOS 10.15.
Description
•