experimenter icon indicating copy to clipboard operation
experimenter copied to clipboard

Add a new targeting constant for the User Characteristics Data Collection

Open tomrittervg opened this issue 8 months ago • 1 comments

We are implementing a telemetry ping that only submits when we actively request one via a pref update. We might deploy a pref update via a Firefox release, but we know we will deploy the pref update via a slow rollout with Experimenter.

We have a pair of prefs that control things - current_version and last_version_sent. The logic can be a little complicated. current_version is, conceptually, the mozilla-provided value telling you whether or not we want a ping. last_version_sent is your value that stores the last version you sent.

There are a couple power-user-values:

  • last_version_sent = -1 means the user never wants to submit a ping. We should never overwrite this.
  • current_version = -1 means we should submit a ping no matter what. We use this for development.

And there are normal scenarios that make sense:

  • current_version = 0 (default value, shipped with Firefox) - This is the situation now. No pings please.
  • current_version = 1 (default value, shipped with Firefox) - Everyone please send us a ping.
    • last_version_sent = 0 - User will submit a ping then increment
    • last_version_sent = 1 - User has submitted a ping
  • current_version = 1 (set by Experimenter, on the default branch) - Please send us a ping.
    • last_version_sent = 0 - User will submit a ping then increment
    • last_version_sent = 1 - User has submitted a ping

And then there are some less common scenarios that still make sense:

  • current_version = 2 (default value, shipped with Firefox); current_version = 1 (default branch value, as set by experimenter) - First the user wound up in an experiment, then we push a new version of Firefox that updated the pref.
    • last_version_sent = 1 - User has submitted a ping for the experiment, but not a second one. User will submit another ping, then increment.

And then there's the weird scenarios:

  • current_version = 4 (default value, shipped with Firefox); last_version_sent = 1 - User has submitted a ping, but hasn't in a while. The user will submit a single ping, then set last_version_sent=4
  • current_version = 1 (user-defined value, set by experimenter); last_version_sent = 3 - User has submitted a ping manually in the past, and now was enrolled in an experiment where they were asked to submit a ping. We will set last_version_sent=1

If all of that seems like a total mess, we can rework it, but it seems like it should work. This github issue is for the specific ask of implementing a targeting constant where we can exclude users who have set last_version_sent = -1

┆Issue is synchronized with this Jira Task

tomrittervg avatar Jun 05 '24 17:06 tomrittervg