Name change. Fixes #763
This commit is contained in:
parent
65be77665a
commit
3aa311a3c1
7 changed files with 8 additions and 293 deletions
|
@ -1,4 +1,4 @@
|
||||||
# Containers Add-on
|
# Firefox Multi-Account Containers
|
||||||
|
|
||||||
[](https://testpilot.firefox.com/experiments/containers)
|
[](https://testpilot.firefox.com/experiments/containers)
|
||||||
|
|
||||||
|
|
285
docs/metrics.md
285
docs/metrics.md
|
@ -1,285 +0,0 @@
|
||||||
# METRICS
|
|
||||||
|
|
||||||
## Data Analysis
|
|
||||||
The collected data will primarily be used to answer the following questions.
|
|
||||||
Images are used for visualization and are not composed of actual data.
|
|
||||||
|
|
||||||
### Do users install and run this?
|
|
||||||
|
|
||||||
What is the overall engagement of the Containers experiment?
|
|
||||||
**This is the standard Daily Active User (DAU) and Monthly Active User (MAU) analysis.**
|
|
||||||
|
|
||||||
This captures data from the users who have the add-on installed, regardless of
|
|
||||||
whether they are actively interacting with it.
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
### Immediate Questions
|
|
||||||
|
|
||||||
* Do people use the containers feature & how do people create new container tabs?
|
|
||||||
* Click to create new container tab
|
|
||||||
* \+ `entry-point` value: "tab-bar" or "pop-up"
|
|
||||||
* Do people who use the containers feature continue to use it?
|
|
||||||
* Retention: opening a second container tab (second tab in the same container, or a tab in a second container?)
|
|
||||||
* What containers do people use?
|
|
||||||
* userContextId
|
|
||||||
* \+ Number of tabs in the container (when should we measure this? on every tab open?)
|
|
||||||
* Do people edit their containers?
|
|
||||||
* Click on "Edit Containers"
|
|
||||||
* Click to edit a single container
|
|
||||||
* Click "OK"
|
|
||||||
* Click to delete a single container
|
|
||||||
* Click "OK"
|
|
||||||
* Click to add a container
|
|
||||||
* Click "OK"
|
|
||||||
* Do people sort the tabs?
|
|
||||||
* Click sort
|
|
||||||
* \+ Number of tabs when clicked
|
|
||||||
* Average number of container tabs when sort was clicked
|
|
||||||
* Do users show and hide container tabs?
|
|
||||||
* Click hide
|
|
||||||
* \+ Number of tabs when clicked
|
|
||||||
* \+ Number of hidden containers when clicked
|
|
||||||
* Click show
|
|
||||||
* \+ Number of tabs when clicked
|
|
||||||
* \+ Number of shown containers when clicked
|
|
||||||
* Do users move container tabs to new windows?
|
|
||||||
* Click move
|
|
||||||
* \+ Number of tabs when clicked
|
|
||||||
* Average number of container tabs when new window was clicked
|
|
||||||
* How many containers do users have hidden at the same time? (when should we measure this? each time a container is hidden?)
|
|
||||||
* Do users pin container tabs? (do we have existing Telemetry for pinning?)
|
|
||||||
* Do users visit more pages in container tabs than non-container tabs?
|
|
||||||
|
|
||||||
### Follow-up Questions
|
|
||||||
|
|
||||||
What are some follow-up questions we anticipate we will ask based on any of the
|
|
||||||
above answers/data?
|
|
||||||
|
|
||||||
* What is the average lifespan of a container tab? Is that longer or shorter than a regular tab? (if we don't have data on the latter, the former probably isn't worth gathering data on since we will have nothing to compare it to).
|
|
||||||
|
|
||||||
## Data Collection
|
|
||||||
|
|
||||||
### Server Side
|
|
||||||
There is currently no server side component to Containers.
|
|
||||||
|
|
||||||
### Client Side
|
|
||||||
Containers will use Test Pilot Telemetry with no batching of data. Details
|
|
||||||
of when pings are sent are below, along with examples of the `payload` portion
|
|
||||||
of a `testpilottest` telemetry ping for each scenario.
|
|
||||||
|
|
||||||
* The user shows the new tab menu
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"event": "show-plus-button-menu",
|
|
||||||
"eventSource": ["plus-button"]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user clicks on a container name to open a tab in that container
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"clickedContainerTabCount": <number-of-tabs-in-the-container>,
|
|
||||||
"event": "open-tab",
|
|
||||||
"eventSource": ["tab-bar"|"pop-up"|"file-menu"|"alltabs-menu"|"plus-button"]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user clicks "Edit Containers" in the pop-up
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"event": "edit-containers"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user clicks OK after clicking on a container edit icon in the pop-up
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"event": "edit-container"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user clicks OK after clicking on a container delete icon in the pop-up
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"event": "delete-container"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user clicks OK after clicking to add a container in the pop-up
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"event": "add-container"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user clicks the sort button/icon in the pop-up
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"event": "sort-tabs",
|
|
||||||
"shownContainersCount": <number-of-containers-with-tabs-shown>,
|
|
||||||
"totalContainerTabsCount": <number-of-all-container-tabs>,
|
|
||||||
"totalNonContainerTabsCount": <number-of-all-non-container-tabs>
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user clicks "Hide these container tabs" in the popup
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"clickedContainerTabCount": <number-of-tabs-in-the-container>,
|
|
||||||
"event": "hide-tabs",
|
|
||||||
"hiddenContainersCount": <number-of-containers-with-tabs-hidden>,
|
|
||||||
"shownContainersCount": <number-of-containers-with-tabs-shown>,
|
|
||||||
"totalContainersCount": <number-of-containers-with-tabs-hidden-or-shown>
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user clicks "Show these container tabs" in the popup
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"clickedContainerTabCount": <number-of-tabs-in-the-container>,
|
|
||||||
"event": "show-tabs",
|
|
||||||
"hiddenContainersCount": <number-of-containers-with-tabs-hidden>,
|
|
||||||
"shownContainersCount": <number-of-containers-with-tabs-shown>,
|
|
||||||
"totalContainersCount": <number-of-containers-with-tabs-hidden-or-shown>
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user clicks "Move tabs to a new window" in the popup
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"clickedContainerTabCount": <number-of-tabs-in-the-container>,
|
|
||||||
"event": "move-tabs-to-window"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* When a user encounters the disabled "move" feature because of incompatible add-ons
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"event": "incompatible-addons-detected"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user closes a tab
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"event": "page-requests-completed-per-tab",
|
|
||||||
"pageRequestCount": <pageRequestCount>
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user goes idle
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"event": "page-requests-completed-per-activity",
|
|
||||||
"pageRequestCount": <pageRequestCount>
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user chooses "Always Open in this Container" context menu option. (Note: We send two separate event names: one for assigning a site to a container, one for removing a site from a container.)
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"event": "[added|removed]-container-assignment"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* Firefox prompts the user to reload a site into a container after the user picked "Always Open in this Container".
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"event": "prompt-reload-page-in-container"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user clicks "Open in *assigned* container" to reload a site into a container after the user picked "Always Open in this Container".
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"event": "click-to-reload-page-in-container"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* The user clicks "Open in *Current* container" to reload a site into a container after the user picked "Always Open in this Container".
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"event": "click-to-reload-page-in-same-container"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
* Firefox automatically reloads a site into a container after the user picked "Always Open in this Container".
|
|
||||||
|
|
||||||
```js
|
|
||||||
{
|
|
||||||
"uuid": <uuid>,
|
|
||||||
"userContextId": <userContextId>,
|
|
||||||
"event": "auto-reload-page-in-container"
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### A Redshift schema for the payload:
|
|
||||||
|
|
||||||
```lua
|
|
||||||
local schema = {
|
|
||||||
-- column name field type length attributes field name
|
|
||||||
{"uuid", "VARCHAR", 255, nil, "Fields[payload.uuid]"},
|
|
||||||
{"userContextId", "INTEGER", 255, nil, "Fields[payload.userContextId]"},
|
|
||||||
{"clickedContainerTabCount", "INTEGER", 255, nil, "Fields[payload.clickedContainerTabCount]"},
|
|
||||||
{"eventSource", "VARCHAR", 255, nil, "Fields[payload.eventSource]"},
|
|
||||||
{"event", "VARCHAR", 255, nil, "Fields[payload.event]"},
|
|
||||||
{"pageRequestCount", "INTEGER", 255, nil, "Fields[payload.pageRequestCount]"}
|
|
||||||
{"hiddenContainersCount", "INTEGER", 255, nil, "Fields[payload.hiddenContainersCount]"},
|
|
||||||
{"shownContainersCount", "INTEGER", 255, nil, "Fields[payload.shownContainersCount]"},
|
|
||||||
{"totalContainersCount", "INTEGER", 255, nil, "Fields[payload.totalContainersCount]"},
|
|
||||||
{"totalContainerTabsCount", "INTEGER", 255, nil, "Fields[payload.totalContainerTabsCount]"},
|
|
||||||
{"totalNonContainerTabsCount", "INTEGER", 255, nil, "Fields[payload.totalNonContainerTabsCount]"}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
### Valid data should be enforced on the server side:
|
|
||||||
|
|
||||||
* `eventSource` should be one of `tab-bar`, `pop-up`, `file-menu`, "alltabs-nmenu" or "plus-button".
|
|
||||||
|
|
||||||
All Mozilla data is kept by default for 180 days and in accordance with our
|
|
||||||
privacy policies.
|
|
|
@ -7,7 +7,7 @@
|
||||||
<em:bootstrap>true</em:bootstrap>
|
<em:bootstrap>true</em:bootstrap>
|
||||||
<em:multiprocessCompatible>true</em:multiprocessCompatible>
|
<em:multiprocessCompatible>true</em:multiprocessCompatible>
|
||||||
<em:hasEmbeddedWebExtension>true</em:hasEmbeddedWebExtension>
|
<em:hasEmbeddedWebExtension>true</em:hasEmbeddedWebExtension>
|
||||||
<em:name>Mozilla Containers</em:name>
|
<em:name>Firefox Multi-Account Containers</em:name>
|
||||||
<em:description>Containers helps you keep all the parts of your online life contained in different tabs. Custom labels and color-coded tabs help keep different activities — like online shopping, travel planning, or checking work email — separate.</em:description>
|
<em:description>Containers helps you keep all the parts of your online life contained in different tabs. Custom labels and color-coded tabs help keep different activities — like online shopping, travel planning, or checking work email — separate.</em:description>
|
||||||
<em:targetApplication>
|
<em:targetApplication>
|
||||||
<Description>
|
<Description>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "testpilot-containers",
|
"name": "testpilot-containers",
|
||||||
"title": "Mozilla Containers",
|
"title": "Firefox Multi-Account Containers",
|
||||||
"description": "Containers helps you keep all the parts of your online life contained in different tabs. Custom labels and color-coded tabs help keep different activities — like online shopping, travel planning, or checking work email — separate.",
|
"description": "Containers helps you keep all the parts of your online life contained in different tabs. Custom labels and color-coded tabs help keep different activities — like online shopping, travel planning, or checking work email — separate.",
|
||||||
"version": "3.1.1",
|
"version": "3.1.1",
|
||||||
"author": "Andrea Marchesini, Luke Crouch and Jonathan Kingston",
|
"author": "Andrea Marchesini, Luke Crouch and Jonathan Kingston",
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||||
<title>Containers confirm navigation</title>
|
<title>Firefox Multi-Account Containers Confirm Navigation</title>
|
||||||
<link xmlns="http://www.w3.org/1999/xhtml" rel="stylesheet" href="chrome://browser/skin/aboutNetError.css" type="text/css" media="all" />
|
<link xmlns="http://www.w3.org/1999/xhtml" rel="stylesheet" href="chrome://browser/skin/aboutNetError.css" type="text/css" media="all" />
|
||||||
<link rel="stylesheet" href="/css/confirm-page.css" />
|
<link rel="stylesheet" href="/css/confirm-page.css" />
|
||||||
</head>
|
</head>
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
{
|
{
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
"name": "Mozilla Containers",
|
"name": "Firefox Multi-Account Containers",
|
||||||
"version": "3.1.1",
|
"version": "3.1.1",
|
||||||
|
|
||||||
"description": "Containers helps you keep all the parts of your online life contained in different tabs. Custom labels and color-coded tabs help keep different activities — like online shopping, travel planning, or checking work email — separate.",
|
"description": "Firefox Multi-Account Containers helps you keep all the parts of your online life contained in different tabs. Custom labels and color-coded tabs help keep different activities — like online shopping, travel planning, or checking work email — separate.",
|
||||||
"icons": {
|
"icons": {
|
||||||
"48": "img/container-site-d-48.png",
|
"48": "img/container-site-d-48.png",
|
||||||
"96": "img/container-site-d-96.png"
|
"96": "img/container-site-d-96.png"
|
||||||
|
@ -45,7 +45,7 @@
|
||||||
"browser_action": {
|
"browser_action": {
|
||||||
"browser_style": true,
|
"browser_style": true,
|
||||||
"default_icon": "img/container-site.svg",
|
"default_icon": "img/container-site.svg",
|
||||||
"default_title": "Containers",
|
"default_title": "Firefox Multi-Account Containers",
|
||||||
"default_popup": "popup.html"
|
"default_popup": "popup.html"
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
||||||
<title>Containers browserAction Popup</title>
|
<title>Firefox Multi-Account Containers</title>
|
||||||
<link rel="stylesheet" href="/css/popup.css">
|
<link rel="stylesheet" href="/css/popup.css">
|
||||||
|
|
||||||
</head>
|
</head>
|
||||||
|
|
Loading…
Add table
Reference in a new issue