Spectator
Problem Statement
The Firefox team needs more data about how users actually use Firefox in the field.
Proposal
Although, we can obtain this data through detailed user studies. A more scalable solution is to technically instrument the browser to collect anonymous usability information and submit to a central site. A web application would aggregate this information into actionable summaries.
Subject Areas
There are numerous metrics that could be collected. For the initial build of this system, we will focus on feature use. In particular, the following questions:
Feature Use
- How many times is the search box used?
- Which search is being used?
- How many extensions do people use?
- Addons v. other extension distributors
- Number of themes, using a theme?
- How many bookmarks by type?
- How many pop-ups are blocked?
- How many tabs are used?
Technical Implementation
The current proposal is to implement instrumentation as an extension. The advantages to this approach include the ability to update the extension independently and greater flexibility to promote/market the extension.
This project can be divided into several components:
Data Collection Service
The data collection service aggregates the data and uploads it to the collection server. Before uploading data, a manifest file will be fetched from the server to control which items will be uploaded. This allows us to tweak the volume of data collected as desired, without client-side changes.
Data Collectors
Data collectors will hook in at a variety of locations in the backend and frontend. Each collector submits events to the collection service, where each event can contain collector-specific key/value pairs.
Server Infrastructure
The server is responsible for storing and providing a clean interface to the data.
Distribution
We think that given the opportunity to opt-in to this data collection ("Help us improve Firefox"), a statistically significant number of users would enable this functionality. In addition, for prereleases, it may be feasible to enable this collection by default.
Process
- Update existing extension to work with trunk
- Setup data collector service to collect information about particular Feature Use areas
- Prototype a server to receive information