<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><h2 dir="ltr" style="line-height:1.38;margin-top:18pt;margin-bottom:6pt;" id="docs-internal-guid-b8e4bc06-df86-3878-acf0-712dca0a00a4" class=""><span style="font-family: Arial; font-size: 11pt; font-weight: normal; white-space: pre-wrap;" class="">This project is intended to unify the various types of ‘snippet’ style messaging that appear on <a href="about:home" class="">about:home</a> and </span><span style="font-family: Arial; font-size: 11pt; font-weight: normal; white-space: pre-wrap;" class=""><a href="about:newtab" class="">about:newtab</a></span><span style="font-family: Arial; font-size: 11pt; font-weight: normal; white-space: pre-wrap;" class=""> in Desktop Firefox, while at the same time improving the security, reliability, metrics, and targeting capability of these messaging mechanisms.</span></h2><br class=""><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">The two main components that communicate with the user on <a href="about:newtab" class="">about:newtab</a> and <a href="about:home" class="">about:home</a> are the </span><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">Onboarding Tour</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class=""> and </span><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">Snippets</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">.  These end-user messaging systems are independent of each other and therefore require specific logic from their mutual host (</span><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">Activity Stream</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">) to intermediate between them, so they both don’t try to message the user at the same time.  This, combined with the fact that </span><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">Snippets</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class=""> and the </span><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">Onboarding Tour</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class=""> have separate codebases but similar functionality has given us the opportunity to simplify and improve Firefox by integrating and unifying these systems to use the same underlying infrastructure: the </span><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">Activity Stream Router (AS Router </span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">for short</span><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">)</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">.</span></div><br class=""><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">AS Router</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class=""> is currently under development by the Activity Stream team.  We have deliverables in Firefox 61 to run an experimental Snippet using </span><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">AS Router</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">.  In Firefox 62, we plan on performing full featured </span><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">AS Router</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">-powered </span><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">Snippets</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class=""> and </span><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">Onboarding Tour</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class=""> experiments.  By Firefox 63, it is planned that we fully replace existing </span><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">Snippets</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class=""> and </span><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">Onboarding Tour</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class=""> implementations.</span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class=""><br class=""></span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class=""><h3 dir="ltr" style="font-family: Helvetica; white-space: normal; line-height: 1.38; margin-top: 16pt; margin-bottom: 4pt;" class=""><span style="font-size: 13.999999999999998pt; font-family: Arial; color: rgb(67, 67, 67); font-weight: 400; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">Links</span></h3><div class=""><ul class="MailOutline"><li class="">AS Router <a href="https://docs.google.com/document/d/1E_1hxrU4GNMwKz6rwN4Iw8LoTefUmUl6wneyJ9-7U84/edit?usp=sharing" class="">Project Scope Document</a></li><li class=""><a href="https://docs.google.com/document/d/1TquKpvr-y93vaQdEQTYzxipYsr2mp7Pas8PJDOFVKQ0/edit" class="">Activity Stream Fx61 Release Plan</a> </li><li class=""><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1432588" class="">AS Router Metabug</a></li></ul></div></span></div><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class=""><br class=""></span></div><h3 dir="ltr" style="line-height:1.38;margin-top:16pt;margin-bottom:4pt;" class=""><span style="font-size: 13.999999999999998pt; font-family: Arial; color: rgb(67, 67, 67); font-weight: 400; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">Data-Driven Templated User Interface</span></h3><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">One aspect common to these messaging systems is the ability to re-use the same UI layouts and behaviours for different messages.  This is accomplished by using separate templates and data feeds in the </span><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">AS Router</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">.   The central concept is that the templates in </span><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">AS Router</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class=""> are executable/renderable JS and the data a common JSON schema.  </span></div><br class=""><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">Note that both Templates and their Data can either be statically defined (landed as part of the Firefox codebase) or be </span><span style="font-size: 11pt; font-family: Arial; font-style: italic; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">hosted</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class=""> on external Mozilla servers, which is the case for </span><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">Snippets</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class=""> style messages.  </span></div><h3 dir="ltr" style="line-height:1.38;margin-top:16pt;margin-bottom:4pt;" class=""><span style="font-size: 13.999999999999998pt; font-family: Arial; color: rgb(67, 67, 67); font-weight: 400; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">Telemetry </span></h3><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">AS Router</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class=""> provides a general telemetry mechanism for gathering message </span><span style="font-size: 11pt; font-family: Arial; font-style: italic; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">impression</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class=""> and </span><span style="font-size: 11pt; font-family: Arial; font-style: italic; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">action</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class=""> events. This interface sends data to both Ping Center and UT Events telemetry. There is also an API for sending additional template-specific pings.  The collected data can be used to drive MAU/DAU type dashboards or to supply metrics for product experimentation and A/B testing.</span></div><br class=""><br class=""><h3 dir="ltr" style="line-height:1.38;margin-top:16pt;margin-bottom:4pt;" class=""><span style="font-size: 13.999999999999998pt; font-family: Arial; color: rgb(67, 67, 67); font-weight: 400; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">Message Rotation</span></h3><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">At any point there may be multiple messages from multiple subsystems vying for a user’s attention.  </span><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">AS Router</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class=""> implements a ‘traffic cop’ functionality that controls how and when messages appear to a user. Each message can have custom frequency capping, prioritization, and ordering logic.</span></div><h3 dir="ltr" style="line-height:1.38;margin-top:16pt;margin-bottom:4pt;" class=""><span style="font-size: 13.999999999999998pt; font-family: Arial; color: rgb(67, 67, 67); font-weight: 400; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">Content Signing</span></h3><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">In order to ensure the safety and security of remotely hosted templates and Snippet data, </span><span style="font-size: 11pt; font-family: Arial; font-weight: 700; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">AS Router</span><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class=""> expects data to be cryptographically signed and will validate those signatures before processing any user bound messages.  This ensures that the messages Mozilla intends for its users cannot be tampered with or altered in transit.</span></div><br class=""><h3 dir="ltr" style="line-height:1.38;margin-top:16pt;margin-bottom:4pt;" class=""><span style="font-size: 13.999999999999998pt; font-family: Arial; color: rgb(67, 67, 67); font-weight: 400; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">Targeting</span></h3><div style="line-height: 1.38; margin-top: 0pt; margin-bottom: 0pt;" class=""><span style="font-size: 11pt; font-family: Arial; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; vertical-align: baseline; white-space: pre-wrap;" class="">All messages types will have access to a full set of targeting parameters, including existing parameters for snippets (region, language setting, profile age, etc.) as well as a rich and secure expression language for combining and filtering on each parameter (similar to what Shield currently provides). This will allow us to continue to to safely expand on our targeting capabilities in the future.</span></div><br class=""><br class=""><br class=""><br class=""></body></html>