Data preference changes in Firefox 58

Georg Fritzsche
Nov 1, 2017 · 4 min read

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.

Image for post
Image for post
How the new Firefox data preferences look.

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?

  • “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 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 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

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.

Reaching out

  • For any specific issues, please file a bug. We are using bug 1406390 for tracking.

Georg Fritzsche

Engineering & data at Mozilla.

Medium is an open platform where 170 million readers come to find insightful and dynamic thinking. Here, expert and undiscovered voices alike dive into the heart of any topic and bring new ideas to the surface. Learn more

Follow the writers, publications, and topics that matter to you, and you’ll see them on your homepage and in your inbox. Explore

If you have a story to tell, knowledge to share, or a perspective to offer — welcome home. It’s easy and free to post your thinking on any topic. Write on Medium

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store