Bug 1660057 Comment 3 Edit History

Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.

Reopening because we do need new experiment prefs.

After talking with the Normandy experiments team, I think we might need three Fission prefs:

1. the fission.autostart set by the user (and the Fission checkbox in about:preferences#experimental)
2. a new experiment enrollment pref set by Normandy enrollment
3. a new experiment pref persisted at shutdown by Fission code (like WebRender bug 1503776)

The proposal is:

1. 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.
2. Persisted ref 3 == true means that, in the previous browser session, Normandy detected the user is in the Fission experiment.
3. 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 exclude fission.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.
* 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.
Reopening because we do need new experiment prefs.

After talking with the Normandy experiments team, I think we might need three Fission prefs:

1. the `fission.autostart` set by the user (and the Fission checkbox in about:preferences#experimental)
2. a new experiment enrollment pref set by Normandy enrollment
3. a new experiment pref persisted at shutdown by Fission code (like WebRender bug 1503776)

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 exclude `fission.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.
* 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.

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.
Reopening because we do need new experiment prefs.

After talking with the Normandy experiments team, I think we might need three Fission prefs:

1. The `fission.autostart` pref set by the user (and the Fission checkbox in about:preferences#experimental).
2. A new experiment enrollment pref set by Normandy enrollment.
3. A new experiment pref persisted 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 (enum) because we need to differentiate three different experiment states:

Case 0. Default value: user is not enrolled in the experiment, so Fission is disabled.
Case 1. User is enrolled in the experiment, but they are in the control branch so Fission should still be disabled.
Case 2. 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 exclude `fission.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.
* 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.

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.
Reopening because we do need new experiment prefs.

After talking with the Normandy experiments team, I think we need three Fission prefs:

1. The `fission.autostart` pref set by the user (and the Fission checkbox in about:preferences#experimental).
2. A new experiment enrollment pref set by Normandy enrollment.
3. A new experiment pref persisted 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:

Case 0. Default value: user is not enrolled in the experiment, so Fission is disabled.
Case 1. User is enrolled in the experiment, but they are in the control branch so Fission should still be disabled.
Case 2. 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 exclude `fission.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.
* 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.

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.
Reopening because we do need new experiment prefs.

After talking with the Normandy experiments team, I think we need three Fission prefs:

1. The `fission.autostart` pref set by the user (and the Fission checkbox in about:preferences#experimental).
2. A new experiment enrollment pref set by Normandy enrollment.
3. A new experiment pref persisted 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: Default value: user is not enrolled in the experiment, so Fission is disabled.
* State 1: User is enrolled in the experiment, but they are in the control branch so Fission should still be disabled.
* State 2: 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 exclude `fission.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.
* 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.

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.
Reopening because we do need new experiment prefs.

After talking with the Normandy experiments team, I think we need three Fission prefs:

1. The `fission.autostart` pref set by the user (and the Fission checkbox in about:preferences#experimental).
2. A new experiment enrollment pref set by Normandy enrollment.
3. A new experiment pref persisted 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 exclude `fission.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.
* 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.

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.
Reopening because we do need new experiment prefs.

After talking with the Normandy experiments team, I think we need three Fission prefs:

1. The `fission.autostart` pref set by the user (and the Fission checkbox in about:preferences#experimental).
2. `fission.experiment.normandyEnrollmentStatus`: A new experiment enrollment pref set asynchronously by Normandy client code.
3. `fission.experiment.previousSessionEnrollmentStatus`: 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 exclude `fission.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.
* 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.

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.
Reopening because we do need new experiment prefs.

After talking with the Normandy experiments team, I think we need three Fission prefs:

1. The `fission.autostart` pref set by the user (and the Fission checkbox in about:preferences#experimental).
2. `fission.experiment.enrollmentStatus`: A new experiment enrollment pref set asynchronously by Normandy client code.
3. `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 exclude `fission.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.
* 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.

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.

Back to Bug 1660057 Comment 3