Firefox/Data Collection

From MozillaWiki
Jump to: navigation, search

Firefox sends various data back to Mozilla. This data keeps the browser up to date, powers various features, provides user support, and helps improve the product itself. This page documents the policy for how and why we add new data collection metrics. The owner and peers of the Firefox Data Collection policy module are responsible for making decisions about data collection systems and measurements.

Owner: Rebecca Weiss


Group email:

Note: The data stewards aren't responsible for showing teams how to collect data, although they might be able to provide some guidance if they have time. But the Firefox data engineering team has prepared data documentation which can help!

Data Collection Categories

There are four "categories" of data collection that apply to Firefox:

Category 1 “Technical data”
Information about the machine or Firefox itself. Examples include OS, available memory, crashes and errors, outcome of automated processes like updates, safebrowsing, activation, version #s, and buildid. This also includes compatibility information about features and APIs used by websites, addons, and other 3rd-party software that interact with Firefox during usage.
Category 2 “Interaction data”
Information about the user’s direct engagement with Firefox. Examples include how many tabs, addons, or windows a user has open; uses of specific Firefox features; session length, scrolls and clicks; and the status of discrete user preferences.
Category 3 “Web activity data”
Information about user web browsing that could be considered sensitive. Examples include users’ specific web browsing history; general information about their web browsing history (such as TLDs or categories of webpages visited over time); and potentially certain types of interaction data about specific webpages visited.
Category 4 “Highly sensitive data”
Information that directly identifies a person, or if combined with other data could identify a person. Examples include e-mail, usernames, identifiers such as google ad id, apple id, fxaccount, or certain cookies. It may be embedded within specific website content, such as memory contents, dumps, captures of screen data, or DOM data.

Eligibility for Default on Data Collection

  • Categories 1 & 2 (Technical & Interaction data)
    • Pre-Release & Release: Data may default on, provided the data is exclusively in these categories (it cannot be in any other category). In Release, an opt-out must be available for most types of Technical and Interaction data. Teams may limit data collection to pre-release populations if appropriate for testing/validation, cost reduction, or risk mitigation.
  • Category 3 (Web activity data)
    • Pre-Release: May be eligible for default on data collection, provided there is an opt-out.
    • Release: Default off. May be eligible for opt-out on a case-by-case basis if mitigations are identified. Mitigations may include UX changes that make users aware of additional risk, technical mechanisms that remove the risk, or a risk assessment done of a case-by-case basis that determines the risk is limited.
  • Category 4 (Highly Sensitive data)
    • Pre-Release: Default off. May be eligible for opt-in data collection by specific users, provided there is (i) advance user notice (ii) consent and (iii) an opt-out.
    • Release: Default off. May be eligible for opt-in data collection by specific users, provided there is (i) advance user notice (ii) consent and (iii) an opt-out.


Requirements For All Data Collection From Firefox

  • Specifics about the collected data must be documented using the in-tree histogram definitions or the in-tree documentation system (.rst files). This documentation should be detailed-enough that people don't need to read the code implementation to understand what data is being collected.
  • Any changes to data collection must be approved by the data collection module owner or peers by requesting review on the patch which updates the in-tree documentation.
  • The bug or documentation must publicly identify the problem statement that will be solved by collecting data.
  • There must be a person who takes responsibility for the correctness of the data.
  • There must be a concrete plan for using the data, and a person who takes responsibility for this.
  • The data must be included in the Firefox privacy notice. Much of the time, data collection requires no changes, but when changes are required the data stewards will work with Marshall Erwin and the Mozilla legal team to make sure that the privacy notice accurately reflects the collected data.

Note: the data stewards do not typically verify that the patch collects the data correctly according to the documentation. That is the responsibility of the code reviewer.

Requesting Approval

It is our intention to review every new data collection within Firefox, but to do so quickly and with minimal overhead. For every new measurement, even a simple new Telemetry probe, please request approval by setting the feedback flag for the data collection module owner or a peer. Simple requests should be handled within a day.

More complex requests, and especially requests which add a new kind of data collection mechanism or require changes to the privacy notice, will require more extensive review. Please consider pinging the team about these as they are being designed! Additional discussions/review may include:

  • Privacy analysis: This may involve requesting feedback from the mailing list and/or privacy experts within and outside of Mozilla to discuss the feature and its privacy impact.
  • Data compliance review: a review with the Mozilla data compliance team to ensure that changes match the Mozilla data compliance policies and documents.
  • Legal review: If necessary, the module owner will request a legal review from Mozilla's legal team. A legal review will be necessary for any changes to the privacy policies/notices.
  • Data quality/statistical review: In cases where data analysis and quality is uncertain, the module owner will request additional feedback from the Mozilla metrics team and other experts to validate data analysis plans.
  • UX review: We may request/require feedback from the Firefox UX team on any proposed privacy/data-control UI.

Common Problems

histogram descriptions

  • Histogram descriptions should record *what* is being collected, in detail.
  • It is important to say *when* a value is recorded, because this is often a confusing point when constructing analysis.
  • Include units: for example, indicate whether a time duration is measured in seconds, milliseconds, or microseconds.
  • When counting, be sure to indicate how repeat usage works. for example when counting decoding errors, are multiple issues counted for the same video, or only the first one?

enumerated histograms

Enumerated histograms should either list all the possible enumeration values in the histogram description, or reference a declared enumeration in the tree by name.

keyed histograms

Keyed histograms contain arbitrary strings in the key, so they get extra attention. Please be careful of:

  • Don't use a keyed histogram if you don't need it! Many times a simpler format such as a count or enumeration histogram can solve the same problem.
  • The key should not contain user-input data, or other data that can be used to identify particular users.
  • In general, keys should be a limited set of values. If you expect more than tens of values, the default aggregations for this histogram will blow up. If this is still required, you should file a bug to have the default aggregations disabled.
  • The histogram description should describe exactly what the key contains, and the format.

JS exceptions

It is a common request to record information about JS exceptions in certain context. In the general case, it is very difficult to prove that this information cannot contain personal data. If you have specific types of errors which are thrown at known locations, you can record information about those. This is an important but unsolved problem.

Data Collection Properties

When proposing a new measurement or data system, please consider your requirements and the necessary data properties:


  • Is the data collection necessary for Firefox to function properly? For example, the automatic update check must be sent in order to keep Firefox up to date.
  • Is there a specific user-visible function planned for the data?
  • Population: Is it necessary to take a measurement from all users? Or is it sufficient to measure only prerelease users?
  • Sampling: is it necessary to get data from all users, or is it sufficient to collect data from a smaller sample?
  • Will data submission be automatic, or will there be opt-in UI?

Analysis and Reporting:

  • Who will be analyzing the data?
  • Will the data that's being collected answer the questions we have?
  • Will it be a single or periodic report?
  • Is it desirable to track data changes over time? With what frequency? With what latency?
  • Will the data reporting be private or public?
  • Will the raw data being collected be private or public?
  • Is it necessary to keep the measurement forever, or is it sufficient to run a short-term experiment/single report?

Privacy (and Legal):

  • Does the data contain sensitive or personal information?
  • Can the data be used in combination with other measurements to identify a particular person?
  • What kind of users controls will be exposed to control data submission?
  • Will users be able to see their own data before or after it has been submitted, either within Firefox or from the server?
  • Does the data conform to the existing Mozilla privacy principles, the Mozilla Privacy Policy, and the Firefox privacy notice?
  • Does this data collection represent any unusual privacy or legal risk to users or Mozilla?

Other Practices

Every year, the data collection owner and peers will survey all of the existing data collection systems with Firefox. This survey has the following goals:

  • To ensure that it is still necessary and useful to collect a piece of data.
  • To re-identify who is responsible for the collection, monitoring, and reporting of collected data.