index.rst (4926B)
1 ================ 2 Messaging System 3 ================ 4 5 Vision 6 ------ 7 Firefox must be an opinionated user agent that keeps folks safe, informed and 8 effective while browsing the Web. In order to have an opinion, Firefox must 9 have a voice. 10 11 That voice will **respect the user’s attention** while surfacing contextually 12 relevant and timely information tailored to their individual needs and choices. 13 14 What does Messaging System support? 15 ----------------------------------- 16 There are several key windows of opportunity, such as the first-run activation 17 phase or coordinated feature releases, where Firefox engages with users. 18 19 The Firefox Messaging System supports this engagement by targeting messages 20 exactly to the users who need to see them and enables the development of new 21 user messages that can be easily tested and deployed. It offers standard 22 mechanisms to measure user engagement and to perform user messaging experiments 23 with reduced effort across engineering teams and a faster delivery cycle from 24 ideation to analysis of results. 25 26 This translates to **users seeing fewer and more relevant in-product 27 messages**, while supporting fast delivery, experimentation, and protection of 28 our users time and attention. 29 30 Messaging System Overview 31 ------------------------- 32 At the core of the Firefox Messaging System is the Messaging System Router 33 (called ASRouter for historical reasons). The router is a generalized Firefox 34 component and set of conventions that provides: 35 36 * Flexible and configurable routing of local or remote Messages to UI 37 Templates. This allows new message campaigns to be started and controlled 38 on or off-trains 39 * Traffic Cop message sequencing and intermediation to prevent multiple 40 messages being concurrently shown 41 * Programmable message targeting language to show the right message to the 42 right user at the right time 43 * A template library of reusable Message and Notification UIs 44 * Full compatibility with Normandy pref-flip experiments 45 * Generalized and privacy conscious event telemetry 46 * Flexible Frequency Capping to mitigate user message fatigue 47 * Localized off train Messages 48 * Powerful development/debugging/QA tools on about:asrouter 49 50 Message Routing 51 --------------- 52 .. image:: ./message-routing-overview.png 53 :align: center 54 :alt: Message Routing Overview 55 56 The Firefox Messaging System implements a separation-of-concerns pattern for 57 Messages, UI Templates, and Timing/Targeting mechanisms. This allows us to 58 maintain a high standard of security and quality while still allowing for 59 maximum flexibility around content creation. 60 61 62 UI Templates 63 ------------ 64 We have built a library of reusable Notification and Message interfaces which 65 land in the Firefox codebase and ride the trains. These templates have a 66 defined schema according to the available design components (e.g. titles, text, 67 icons) and access to a set of enhanced user actions such as triggering URLs, 68 launching menus, or installing addons, which can be attached to interactive 69 elements (such as buttons). 70 71 Warning! Before reading, you should consider whether a `Messaging Experiment is relevant for your needs`__. 72 73 .. __: https://docs.google.com/document/d/1S45a_nFn8QRM8gvsxCM6HHROrIQlQQl6fUlJ2j63PGI/edit 74 75 Current templates include\: 76 77 .. In theory, we ought to be able to use the :glob: directive here to 78 .. automatically generate the list below. For unknown reasons, however, 79 .. `mach doc` _sometimes_ gets confused and refuses to find patterns like 80 .. `*.md`. 81 .. toctree:: 82 :maxdepth: 1 83 84 moments-page 85 feature-callout 86 contextual-feature-recommendation 87 about-welcome 88 infobars 89 spotlight 90 private-browsing 91 multi-message 92 93 Detailed Docs 94 ------------- 95 96 * Explore key terms in the `Messaging System Glossary`__. 97 98 .. __: ./messaging-glossary.html 99 100 * Learn more about messaging experimentation through `Nimbus <https://experimenter.info/>`_ in the `Messaging System: Experimenter Onboarding`__. 101 102 .. __: https://mozilla-hub.atlassian.net/wiki/spaces/FIREFOX/pages/233406786/OMC+Experimenter+Onboarding 103 104 * `Messaging system schemas`_ 105 106 .. _Messaging system schemas: https://firefox-source-docs.mozilla.org/toolkit/components/messaging-system/docs/index.html#messaging-system-schemas 107 108 * `User actions`_ 109 110 .. _User actions: https://firefox-source-docs.mozilla.org/toolkit/components/messaging-system/docs/SpecialMessageActionSchemas/index.html 111 112 * `Triggers`_ 113 114 .. _Triggers: https://firefox-source-docs.mozilla.org/toolkit/components/messaging-system/docs/TriggerActionSchemas/index.html 115 116 .. In theory, we ought to be able to use the :glob: directive here to 117 .. automatically generate the list below. For unknown reasons, however, 118 .. `mach doc` _sometimes_ gets confused and refuses to find patterns like 119 .. `*.md`. 120 .. toctree:: 121 :maxdepth: 2 122 123 building-and-testing 124 debugging-docs 125 frequency-caps 126 first-run 127 messaging-glossary 128 remote_cfr 129 targeting-attributes 130 targeting-guide 131 telemetry 132 skylight