From ca323d434963d417a7ed0a795a137b4415d7e30c Mon Sep 17 00:00:00 2001 From: Dan Mosedale Date: Wed, 11 Mar 2020 17:10:54 +0000 Subject: [PATCH] Bug 1620053 - add high-level Messaging System docs, r=andreio Differential Revision: https://phabricator.services.mozilla.com/D66092 --HG-- extra : moz-landing-system : lando --- .../content-src/asrouter/docs/index.rst | 84 +++++++++++++++++- .../docs/message-routing-overview.png | Bin 0 -> 50250 bytes 2 files changed, 82 insertions(+), 2 deletions(-) create mode 100644 browser/components/newtab/content-src/asrouter/docs/message-routing-overview.png diff --git a/browser/components/newtab/content-src/asrouter/docs/index.rst b/browser/components/newtab/content-src/asrouter/docs/index.rst index c28ccd206440..0d224ac1f685 100644 --- a/browser/components/newtab/content-src/asrouter/docs/index.rst +++ b/browser/components/newtab/content-src/asrouter/docs/index.rst @@ -2,14 +2,94 @@ Messaging System ================ -Someday, this document will contain a high-level description of ASRouter. -In the meantime, here are some documents about specific features: +Vision +------ +Firefox must be an opinionated user agent that keeps folks safe, informed and +effective while browsing the Web. In order to have an opinion, Firefox must +have a voice. +That voice will **respect the user’s attention** while surfacing contextually +relevant and timely information tailored to their individual needs and choices. + +What does Messaging System support? +----------------------------------- +There are several key windows of opportunity, such as the first-run activation +phase or coordinated feature releases, where Firefox engages with users. + +The Firefox Messaging System supports this engagement by targeting messages +exactly to the users who need to see them and enables the development of new +user messages that can be easily tested and deployed. It offers standard +mechanisms to measure user engagement and to perform user messaging experiments +with reduced effort across engineering teams and a faster delivery cycle from +ideation to analysis of results. + +This translates to **users seeing fewer and more relevant in-product +messages**, while supporting fast delivery, experimentation, and protection of +our users time and attention. + +Messaging System Overview +------------------------- +At the core of the Firefox Messaging System is the Messaging System Router +(called ASRouter for historical reasons). The router is a generalized Firefox +component and set of conventions that provides: + +* Flexible and configurable routing of local or remote Messages to UI + Templates. This allows new message campaigns to be started and controlled + on or off-trains +* Traffic Cop message sequencing and intermediation to prevent multiple + messages being concurrently shown +* Programmable message targeting language to show the right message to the + right user at the right time +* A template library of reusable Message and Notification UIs +* Full compatibility with Normandy pref-flip experiments +* Generalized and privacy conscious event telemetry +* Flexible Frequency Capping to mitigate user message fatigue +* Localized off train Messages +* Powerful development/debugging/QA tools on about:newtab#devtools + +Message Routing +--------------- +.. image:: ./message-routing-overview.png + :align: center + :alt: Message Routing Overview + +The Firefox Messaging System implements a separation-of-concerns pattern for +Messages, UI Templates, and Timing/Targeting mechanisms. This allows us to +maintain a high standard of security and quality while still allowing for +maximum flexibility around content creation. + +UI Templates +------------ +We have built a library of reusable Notification and Message interfaces which +land in the Firefox codebase and ride the trains. These templates have a +defined schema according to the available design components (e.g. titles, text, +icons) and access to a set of enhanced user actions such as triggering URLs, +launching menus, or installing addons, which can be attached to interactive +elements (such as buttons). + +Current templates include\: + +* What's New Panel - an icon in the toolbar and menu item that appears if a + message is available in the panel, usually after major Firefox releases +* Moments Page - appears on start-up as a full content page +* Contextual Feature Recommendation - highlighted word in the Location Bar + that, if clicked, drops down a panel with information about a feature + relevant to that user at that time +* First Run - shown on startup in a content page as a set of onboarding cards + with calls to action that persist for several days +* Snippets - short messages that appear on New Tab Page to highlight products, + features and initiatives +* Badging - A colorful dot to highlight icons in the toolbar or menu items in + order to draw attention with minimal interruption + +Detailed Docs +------------- .. In theory, we ought to be able to use the :glob: directive here to .. automatically generate the list below. For unknown reasons, however, .. `mach doc` _sometimes_ gets confused and refuses to find patterns like .. `*.md`. .. toctree:: + :maxdepth: 2 debugging-docs experiment-guide diff --git a/browser/components/newtab/content-src/asrouter/docs/message-routing-overview.png b/browser/components/newtab/content-src/asrouter/docs/message-routing-overview.png new file mode 100644 index 0000000000000000000000000000000000000000..0ec2ec3c14a638fc2bcbb1beab7f2aa68aec5525 GIT binary patch literal 50250 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 literal 0 HcmV?d00001