As part of the Photon UI refresh, the Firefox data preferences were streamlined. Where previously for historic reasons we had two controls, we now have one.
There are two notable changes here to previous versions:
- There is only one control now for Firefox data submission.
- There is a new control for SHIELD studies, which i won’t detail here.
As detailed in another post, this doesn’t change anything about the type of data being collected while it makes the data controls less confusing. However, it does have some technical consequences for Telemetry that we landed in Firefox 58.
What does this mean for Telemetry?
Previously we had two different sets of data we collected:
- “opt-out” or “base” Telemetry: This was on by default on all Firefox channels.
- “opt-in” or “extended” Telemetry: This was off by default on Firefox release and on by default on prerelease channels. Turning off “opt-out” Telemetry also turned this off.
Now the behavior is more streamlined:
- There is just one control for data upload for Firefox, which is on by default.
- Individual measurements are now collected from either all users or prerelease users.
So for Firefox we now just differentiate between “release data” and “prerelease data”. (For some specific features or studies there may still be explicit opt-in notifications, but this covers all standard Firefox data collection.)
While this has broader technical impact on Firefox data collection, the changes we landed should make this work mostly seamless.
What does this mean for me?
For Firefox users, there is no significant change; the data upload setting users chose is respected as before. The opt-in for additional Telemetry data went away; instead we always collect less data on Firefox release.
For most Firefox development, nothing should change. Telemetry takes care of doing the right thing for histograms, scalars & events internally.
Local builds from current mozilla-central should default to recording all the prerelease data but not upload it, without any extra build flags. about:telemetry allows you to confirm that.
For testing locally how release Telemetry behaves, there is a hidden pref: toolkit.telemetry.testing.overridePreRelease.
For Fennec development, nothing changed. Fennec still has the same Telemetry behavior and preference handling as before.
For writing Firefox tests, nsITelemetry.canRecordExtended can be used to check whether prerelease data is recorded. The pref toolkit.telemetry.testing.overridePreRelease can be used for tests that need to enable prerelease behavior.
For QAing Firefox data collection, you might need to override the prerelease status using the pref toolkit.telemetry.testing.overridePreRelease. The prerelease and sending status can be checked in about:telemetry.
If you are looking at Telemetry data, there are some changes. In Firefox 58, we will not receive the “extended” data from release anymore. This directly affects some parts of telemetry.mozilla.org that provided release data from that small “opt-in” population:
- the distribution and evolution dashboards will soon not show release data anymore.
- telemetry.js and the aggregates service will not provide release data when 58 is released.
If you will be affected by these changes and need alternatives, please reach out to us.
The new Telemetry behavior
Here is an overview of how the important Telemetry controls now behave for Firefox Desktop.
Currently the naming of these various controls is inconsistent and confusing. While we focused on the minimal required changes first, we will clean this up in the near future. Updating the Telemetry documentation to match the new behaviors is on-going.
First, there are the main Firefox Telemetry preferences:
datareporting.healthreport.uploadEnabled: This is our main preference that controls whether Firefox can send data and follows the user choice. It didn’t see any change in behavior from these changes.
toolkit.telemetry.enabled: This preference is now locked to reflect prerelease or release builds (true and false respectively).
This previously matched the additional data control and controlled the “extended” Telemetry collection. It is also used in other places to control collecting additional data.
More data controls are on the nsITelemetry interface:
nsITelemetry.canRecordBase: This is generally true and reflects whether any Telemetry data can be recorded. Most code should never need this.
nsITelemetry.canRecordExtended: This reflects if Firefox is on a prerelease or release builds (true and false respectively).
There is also the releaseChannelCollection property in Histograms.json, Scalars.yaml & Events.yaml. These properties keep working seamlessly, with no action required. They now follow the prerelease status of the above settings.