Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(997)

Unified Diff: tools/metrics/actions/README.md

Issue 2384323002: Metrics - Add actions/README.md (Closed)
Patch Set: rob's comments Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/metrics/user_metrics.h ('k') | tools/metrics/actions/actions.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/metrics/actions/README.md
diff --git a/tools/metrics/actions/README.md b/tools/metrics/actions/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..9148a5b2fc7be7fe90e59cc2715a977823dfc677
--- /dev/null
+++ b/tools/metrics/actions/README.md
@@ -0,0 +1,132 @@
+# User Action Guidelines
+
+This document gives the best practices on how to use user actions in code and
+how to document them for the dashboard. User actions come with only a name and
+a timestamp. They are best used when you care about a sequence--which actions
+happen in what order. If you don't care about the order, you should be using
+histograms (likely enumerated histograms).
+
+Often, you want both user actions and histogram logging in your code. They
+enable different analyses. They're complementary.
+
+[TOC]
+
+## Emitting to User Actions
+
+### Emit Once Per Action
+
+A user action should be tied to an actual action taken by a user. Each
+meaningful unit of action should cause one emit.
+
+### Emit at a High-Level, not Deep in the Implementation
+
+Prefer to emit at the highest level reasonable, closest to the code that handles
+the UI interaction. Emitting deep in implementation code can cause problems
+because that code may get reused (and thus called more times in more places) or
+may get called fewer times (due to caching for example). In cases like this,
+the logged user action will not longer correspond with a meaningful action by
+the user.
+
+### Do Not Emit Redundantly
+
+Generally a meaningful user action should cause only one emit. For example, if
+the browser already has a "Back" user action, it's poor practice to add a
+"BackViaKeyboardShortcut" user action. This is mostly redundant. (If you're
+trying to determine the breakdown of keyboard-shortcut backs versus all backs,
+use a histogram.)
+
+### Do Not Emit Excessively
+
+Again, choose an appropriately-sized meaningful unit. For example, emit
+"DragScrolled" for a whole scroll action. Don't emit this action every time the
+user pauses scrolling if the user remains in the process of scrolling (mouse
+button still down).
+
+As another example, you may want to emit "FocusOmnibox" (upon focus),
+"OmniboxEditInProgress" (upon first keystroke), and "OmniboxUse" (upon going
+somwhere) but forswear "OmniboxKeystroke". That's probably more detailed than
+you need.
+
+### Generally, Do Not Emit Impressions
+
+It's okay to emit user actions such as "ShowTranslateInfobar" or
+"DisplayedImageLinkContextMenu". However, more detailed impression information,
+especially those not caused by the user (as in the second example) and not as
+attention-grabbing (as in the first example), is often not useful for analyzing
+sequences of user actions. For example, don't emit
+"ShowedSecureIconNextToOmnibox".
+
+### Testing
+
+Test your user actions using *chrome://user-actions*. Make sure they're being
+emitted when you expect and not emitted at other times.
+
+If this is a general UI surface, please try to check every platform. In
+particular, check Windows (Views-based platforms), Mac (non-Views), Android
+phone (yet other UI wrapper code), Android tablet (often triggers lookalike but
+different menus), and iOS (yet more different UI wrapper code).
+
+Also, check that your new user action is not mostly redundant with other user
+actions (see [advice above](#Do-Not-Emit-Redundantly)) and not emitted
+excessively (see [advice above](#Do-Not-Emit-Excessively)).
+
+### Revising User Actions
+
+If you're changing the semantics of a user action (when it's emitted), make it
+into a new user action with a new name. Otherwise the dashboard will be mixing
+two different interpretations of the data and make no sense.
+
+## Documenting User Actions
+
+### Add User Actions and Documentation in the Same Changelist
+
+If possible, please add the actions.xml description in the same changelist in
+which you add the user-action-emitting code. This has several benefits. One,
+it sometimes happens that the actions.xml reviewer has questions or concerns
+about the user action description that reveal problems with interpretation of
+the data and call for a different recording strategy. Two, it allows the user
+action reviewer to easily review the emission code to see if it comports with
+these best practices, and to look for other errors.
+
+### Understandable to Everyone
+
+User actions descriptions should be understandable to someone not familiar with
+your feature. Please add a sentence or two of background if necessary.
+
+It is good practice to note caveats associated with your user actions in this
+section, such as which platforms are supported (if the set of supported
+platforms is surprising). E.g., a desktop feature that happens not to be logged
+on Mac.
+
+### State When It Is Emitted
+
+User action descriptions should clearly state when the action is emitted.
+
+### Owners
+
+User actions need to be owned by a person or set of people. These indicate who
+the current experts on it are. Being the owner means you are responsible for
+answering questions about it, handling the maintenance if there are functional
+changes. The owners should be added in the original user action description.
+If you are using a user action heavily and understand it intimately, feel free
+to add yourself as an owner. @chromium.org email addresses are preferred.
+
+### Beware `not_user_action="true"`
+
+actions.xml allows you to annotate an action as `not_user_action="true"`. This
+feature should be used rarely. If you think you want to annotate your action
+thusly, please re-review the best practices above.
+
+### Deleting User Action Entries
+
+Do not delete actions from actions.xml. Instead, mark unused user actions as
+obsolete, annotating them with the associated date or milestone in the obsolete
+tag entry. If your user action is being replaced by a new version, we suggest
+noting that in the previous user action's description.
+
+Deleting user action entries would be bad if someone accidentally reused your
+old user action name and which therefore corrupts new data with whatever old
+data is still coming in. It's also useful to keep obsolete user action
+descriptions in actions.xml--that way, if someone is searching for a user action
+to answer a particular question, they can learn if there was a user action at
+some point that did so even if it isn't active now.
« no previous file with comments | « base/metrics/user_metrics.h ('k') | tools/metrics/actions/actions.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698