Expose "opened Inspect Element" information in UITour.getConfiguration for snippets on about:home

NEW
Unassigned

Status

()

P3
normal
2 years ago
8 months ago

People

(Reporter: jcollings, Unassigned)

Tracking

(Depends on: 1 bug, Blocks: 1 bug)

Firefox Tracking Flags

(Not tracked)

Details

User Story

As a Firefox Retention team member, I would like to be able to display snippets to users based on whether or not they used dev tools functionality in the previous month in order to provide useful information to users based on whether or not we think they are a developer.

Acceptance Criteria:
- Snippets are only displayed to users based on the use of dev tools (in the last month) targeting used
-- Examples:
---1. Display snippet to users who opened dev tools in the previous month


---------------
Old story:
As a UITour consumer I will have access to the following properties on the result of Mozilla.UITour.getConfiguration("appinfo", …):

* Months (if < 3 months) since Inspect Element has been opened
(in other words: yes or no a user has opened the Inspect Element in the last month)
The Firefox Retention team would like to use snippets running on about:home more effectively to improve retention of current, and new Firefox users. Although snippets do currently have access to UITour, UITour does not currently expose all of the information we are interested in.

The specific data points we are interested in are:
1. If a user has exceeded x hours of active session hours 
2. If a user has opened the Inspect Element 

Need confirmation from Matthew Noorenberghe if these data points do exist in Telemetry and can be exposed via the UITour's getConfiguration function.

This will also need sign off from a privacy/security perspective (Ben Smedberg).

Please let me know if anything is missing or what other types of info is needed. 

Thanks.
I updated the user story and will break out active session hours to a new bug (changing to Active Ticks)
User Story: (updated)
Summary: Expose "Active Session Hours" and "opened Inspect Element" information in UITour.getConfiguration for snippets on about:home → Expose "opened Inspect Element" information in UITour.getConfiguration for snippets on about:home
User Story: (updated)
See Also: → bug 1357433
See Also: → bug 1357439
See Also: → bug 1357455
It would be really nice to use devtools.telemetry.tools.opened.version which tracks which version tools were opened in.
(In reply to Matthew N. [:MattN] from comment #2)
> It would be really nice to use devtools.telemetry.tools.opened.version which
> tracks which version tools were opened in.

Example:
{
  "DEVTOOLS_INSPECTOR_OPENED_PER_USER_FLAG": "51.0a1",
  "DEVTOOLS_RULEVIEW_OPENED_PER_USER_FLAG": "51.0a1",
  "DEVTOOLS_WEBCONSOLE_OPENED_PER_USER_FLAG": "51.0a1",
  "DEVTOOLS_BROWSERCONSOLE_OPENED_PER_USER_FLAG": "51.0a1",
  "DEVTOOLS_COMPUTEDVIEW_OPENED_PER_USER_FLAG": "50.0a1",
  "DEVTOOLS_LAYOUTVIEW_OPENED_PER_USER_FLAG": "49.0a1",
  "DEVTOOLS_RESPONSIVE_OPENED_PER_USER_FLAG": "43.0a1",
  "DEVTOOLS_SCRATCHPAD_OPENED_PER_USER_FLAG": "47.0a1",
  "DEVTOOLS_DEVELOPERTOOLBAR_OPENED_PER_USER_FLAG": "42.0a1",
  "DEVTOOLS_STYLEEDITOR_OPENED_PER_USER_FLAG": "47.0a1",
  "DEVTOOLS_FONTINSPECTOR_OPENED_PER_USER_FLAG": "47.0a1",
  "DEVTOOLS_JSDEBUGGER_OPENED_PER_USER_FLAG": "51.0a1",
  "DEVTOOLS_NETMONITOR_OPENED_PER_USER_FLAG": "51.0a1",
  "DEVTOOLS_OPTIONS_OPENED_PER_USER_FLAG": "50.0a1",
  "DEVTOOLS_JSBROWSERDEBUGGER_OPENED_PER_USER_FLAG": "51.0a1",
  "DEVTOOLS_JSPROFILER_OPENED_PER_USER_FLAG": "48.0a1",
  "DEVTOOLS_CUSTOM_OPENED_PER_USER_FLAG": "51.0a1",
  "DEVTOOLS_TOOLBOX_OPENED_PER_USER_FLAG": "51.0a1",
  "DEVTOOLS_WEBIDE_OPENED_PER_USER_FLAG": "50.0a1",
  "DEVTOOLS_WEBAUDIOEDITOR_OPENED_PER_USER_FLAG": "37.0a1",
  "DEVTOOLS_CANVASDEBUGGER_OPENED_PER_USER_FLAG": "41.0a1",
  "DEVTOOLS_STORAGE_OPENED_PER_USER_FLAG": "49.0a1",
  "DEVTOOLS_SHADEREDITOR_OPENED_PER_USER_FLAG": "36.0a1",
  "DEVTOOLS_PAINTFLASHING_OPENED_PER_USER_FLAG": "36.0a1",
  "DEVTOOLS_OS_ENUMERATED_PER_USER": "55.0a1",
  "DEVTOOLS_OS_IS_64_BITS_PER_USER": "55.0a1",
  "DEVTOOLS_SCREEN_RESOLUTION_ENUMERATED_PER_USER": "55.0a1",
  "DEVTOOLS_PICKER_EYEDROPPER_OPENED_PER_USER_FLAG": "47.0a1",
  "DEVTOOLS_ANIMATIONINSPECTOR_OPENED_PER_USER_FLAG": "50.0a1",
  "DEVTOOLS_SCRATCHPAD_WINDOW_OPENED_PER_USER_FLAG": "47.0a1",
  "DEVTOOLS_ABOUTDEBUGGING_OPENED_PER_USER_FLAG": "50.0a1"
}
Depends on: 1361713
Blocks: 1349422
User Story: (updated)
Priority: -- → P3
From the information we get from `devtools.telemetry.tools.opened.version` as shown in #3 we can extract the version a user opened "Inspect Element" and not the time.

1. Instead of filtering based on month we can filter based on whether a user opened Inspect Element in a version. I suggest the updated user story:

"""
As a Firefox Retention team member, I would like to be able to display snippets to users based on whether or not they used dev tools functionality in the current running version in order to provide useful information to users based on whether or not we think they are a developer.
"""

In other words if someone runs Firefox 43 and has opened Inspect element at any point in time, while running 43, we consider them a Dev. This is not affected by the fact the 43 is an outdated Firefox version. When they upgrade to 44 they will have to open Inspect Element in 44 to be considered Devs.



2. Do we only care about Inspect Element or any Dev Tool?


Jean can you please provide input on (1) and (2)?
Flags: needinfo?(jcollings)
1) Yes this new filtering works, since it's about 6 weeks between versions. 

2) I was told that Inspect Element was the key indicator for developers but if we can add any other dev tools as an indicator that works for me too.
Flags: needinfo?(jcollings)
(In reply to Jean Collings from comment #5)
> 1) Yes this new filtering works, since it's about 6 weeks between versions. 
> 
> 2) I was told that Inspect Element was the key indicator for developers but
> if we can add any other dev tools as an indicator that works for me too.

Adding a few more indicators for developers:

-If the user opens the inspect element (to open up Dev Tools)

-If the user has Developer Tools (or uses Dev Toolbar)

-How many times has view source in browser / tab been opened?
(In reply to Jean Collings from comment #6)
> (In reply to Jean Collings from comment #5)
> > 1) Yes this new filtering works, since it's about 6 weeks between versions. 
> > 
> > 2) I was told that Inspect Element was the key indicator for developers but
> > if we can add any other dev tools as an indicator that works for me too.
> 
> Adding a few more indicators for developers:
> 
> -If the user opens the inspect element (to open up Dev Tools)
> 
> -If the user has Developer Tools (or uses Dev Toolbar)
> 
> -How many times has view source in browser / tab been opened?

We will use the indicators listed in comment #33 which include Inspect Element and Dev Toolbar among other things.
I see two ways we can include this information in UITour:

 1. We append devtools.telemetry.tools.opened.version in appInfo as-is. Then we can process the data over at snippets service and create the filtering we need.

 2. We process devtools.telemetry.tools.opened.version in UITour and convert it to appInfo["lastedVersionWithDeveloperActivity"] where we include the largest version of the list. 


Both implementations cover snippets needs, so it's more about:

 - Data / privacy wise do we want to expose the processed data of case (2) 
 - For technical reasons we want to keep the payload smaller or processing time smaller.


:MattN do any of the suggested (1) or (2) solutions sound like a plan?
Flags: needinfo?(MattN+bmo)
:bsmedberg are there any privacy concerns to expose the list of comment #33 in UITour for snippets use? If so would case (2) of comment #8 answer them?
Flags: needinfo?(benjamin)

Comment 10

a year ago
There is no comment 33 in this bug? But if you're talking about comment 3 and then comment 8, I strongly prefer limiting the amount of data we expose just in terms of attack surface/identifiability. Exposing a single latest version with developer activity would be strongly preferable.
Flags: needinfo?(benjamin)
I'm on the fence so given bsmedberg's preference, let's go with one version.

I guess you would want to use Array.prototype.reduce with Services.vc.compare[1] then.

Consumers would have to handle different channels e.g. 55.0a1, 56.0a2, 57.0, etc.

[1] https://dxr.mozilla.org/mozilla-central/rev/b1b9129838ade91684574f42219b2010928d7db4/xpcom/base/nsIVersionComparator.idl#40-47
Flags: needinfo?(MattN+bmo)
You need to log in before you can comment on or make changes to this bug.