﻿<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Georg Fritzsche - Medium]]></title>
        <description><![CDATA[Engineering &amp; data at Mozilla. - Medium]]></description>
        <link>https://medium.com/georg-fritzsche?source=rss----9eb1bc803268---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>Georg Fritzsche - Medium</title>
            <link>https://medium.com/georg-fritzsche?source=rss----9eb1bc803268---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Thu, 15 Oct 2026 07:22:21 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/georg-fritzsche" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Introducing Glean — Telemetry for humans]]></title>
            <link>https://medium.com/georg-fritzsche/introducing-glean-telemetry-for-humans-4e8b4788b8ad?source=rss----9eb1bc803268---4</link>
            <guid isPermaLink="false">https://medium.com/p/4e8b4788b8ad</guid>
            <category><![CDATA[data-engineering]]></category>
            <category><![CDATA[analytics]]></category>
            <category><![CDATA[mozilla]]></category>
            <category><![CDATA[telemetry]]></category>
            <category><![CDATA[firefox]]></category>
            <dc:creator><![CDATA[Georg Fritzsche]]></dc:creator>
            <pubDate>Thu, 05 Sep 2019 10:25:04 GMT</pubDate>
            <atom:updated>2019-09-05T10:25:04.801Z</atom:updated>
            <content:encoded><![CDATA[<h3>Introducing Glean — Telemetry for humans</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*Jw-LF6PryT-SkU88" /><figcaption>Glean logo — subtitled “telemetry for humans”</figcaption></figure><p>When <a href="https://blog.mozilla.org/futurereleases/2019/06/27/reinventing-firefox-for-android-a-preview/">Firefox Preview shipped</a>, it was also the official launch of <a href="https://docs.telemetry.mozilla.org/concepts/glean/glean.html">Glean</a>, our new mobile product analytics &amp; telemetry solution true to Mozillas values. This post goes into how we got there and what it’s design principles are.</p><h3>Background</h3><p>In the last few years, Firefox development <a href="https://blog.mozilla.org/futurereleases/2017/09/06/data-just-living/">has become increasingly data-driven</a>. Mozilla’s larger data engineering team builds &amp; maintains most of the technical infrastructure that makes this possible; from the Firefox telemetry code to the Firefox data platform and hosting analysis tools. While data about our products is crucial, Mozilla has a rare approach to data collection, following <a href="https://www.mozilla.org/en-US/privacy/principles/">our privacy principles</a>. This includes requiring data review for every new piece of data collection to ensure we are upholding our principles — even when it makes our jobs harder.</p><p>One great success story for us is having the Firefox telemetry data described in <a href="https://searchfox.org/mozilla-central/source/toolkit/components/telemetry/Scalars.yaml">machine-readable and clearly structured form</a>. This encourages best practices like mandatory documentation, steering towards lean data practices and enables automatic data processing — from generating tables to powering tools like our <a href="https://telemetry.mozilla.org/new-pipeline/dist.html">measurement dashboard</a> or the <a href="https://telemetry.mozilla.org/probe-dictionary/">Firefox probe dictionary</a>.</p><p>However, we also learned lessons about what didn’t work so well. While the data types we used were flexible, they were hard to interpret. For example, we use <a href="https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/collection/scalars.html#using-the-js-api">plain numbers to store counts</a>, <a href="https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/collection/histograms.html#adding-a-javascript-probe">generic histograms to store multiple timespan measures</a> and <a href="https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/collection/custom-pings.html">allow for custom JSON submissions</a> for uncovered use-cases. The flexibility of these data types means it takes work to understand how to use them for different use-cases &amp; leaves room for accidental error on the instrumentation side. Furthermore, it requires manual effort in interpreting &amp; analysing these data points. We noticed that we could benefit from introducing higher-level data types that are closer to what we want to measure — like data types for “counters” and “timing distributions”.</p><h3>What about our mobile telemetry?</h3><p>Another factor was that our mobile product infrastructure that was not ideally integrated yet with the Firefox telemetry infrastructure above. Different products used different analytics solutions &amp; different versions of our own mobile telemetry code, across Android &amp; iOS. Also, our own mobile telemetry code did not describe its metrics in machine-readable form. This meant analysis was potentially different for each product &amp; new instrumentations were higher effort. Integrating new products into the Firefox telemetry infrastructure meant substantial manual effort.</p><p>From reviewing the situation, one main question came up: What if we could provide one consistent telemetry SDK for our mobile products, bringing the benefits of our Firefox telemetry infrastructure but without the above mentioned drawbacks?</p><h3>Introducing Glean</h3><p>In 2018, we looked at how we could integrate Mozilla’s mobile products better. Putting together what we learned from our existing Firefox Telemetry system, feedback from various user interviews and what we found mattered for our mobile teams, we decided to reboot our telemetry and product analytics solution for mobile. We took input from a cross-functional set of people, data science, engineering, product management, QA and others to form a complete picture of what was required.</p><p>From that, we set out to build an end-to-end solution called <strong>Glean</strong>, consisting of different pieces:</p><ul><li><strong>Product-side tools</strong> — The data enters our system here through the <a href="https://mozilla.github.io/glean/">Glean SDK</a>, which is what products integrate and record data into. It provides mobile APIs and aims to hide away the complexities of reliable data collection.</li><li><strong>Services</strong> — This is where the data is stored and made available for analysis, building on our Firefox data platform.</li><li><strong>Data Tools</strong> — Here our users are able to look at the data, performing analysis and setting up dashboards. This goes from running SQL queries, visualizing core product analytics to data scientists digging deep into the raw data.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/891/0*pvGQBy-dIsRIVGQr" /></figure><p>Our main goal was to support our typical mobile analytics &amp; engineering use-cases efficiently, which came down to the following principles:</p><ul><li><strong>Basic product analytics are collected out-of-the-box in a standardized way.</strong> A baseline of analysis is important for all our mobile applications, from counting active users to retention and session times. This is supported out-of-the-box by our SDK and works consistently across mobile products that integrate it.</li><li><strong>No custom code is required for adding new metrics to a product.</strong> To make our engineers more productive, the SDK keeps the amount of instrumentation code required for metrics as small as possible. Engineers only need to specify what they want to instrument, with which semantics and then record the data using the Glean SDK.</li><li><strong>New metrics should be available for basic analysis without additional effort.</strong> Once a released product is enabled for Glean, getting access to newly added metrics shouldn’t require a time-consuming process. Instead they should show up automatically, both for end-to-end validation and basic analysis through SQL.</li></ul><p>To make sure that what we build is true to Mozilla’s values, encourages best practices and is sustainable to work with, we added these principles:</p><ul><li><a href="https://leandatapractices.com/"><strong>Lean data practices</strong></a><strong> are encouraged through SDK design choices.</strong> It’s easy to limit data collection to only what’s necessary and documentation can be generated easily, aiding both transparency &amp; understanding for analysis.</li><li><strong>Use of standardized data types &amp; registering them in machine-readable files.</strong> By having collected data described in machine-readable files, our various data tools can read them and support metrics automatically, without manual work, including schema generation, etc.</li><li><strong>Introduce high-level metric types, so APIs &amp; data tools can better match the use-cases.</strong> To make the choice easier for which metric type to use, we introduced higher-level data types that offer clear and understandable semantics — for example, when you want to count something, you use the <em>“counter”</em> type. This also gives us opportunities to offer better tooling for the data, both on the client and for data tooling.</li><li><strong>Basic semantics on how the data is collected are clearly defined by the library.</strong> To make it easier to understand the general semantics of our data, the Glean SDK will define and document when which kind of data will get sent. This makes data analysis easier through consistent semantics.</li></ul><p>One crucial design choice here was to use higher-level metric types for the collected metrics, while not supporting free-form submissions. This choice allows us to focus the Glean end-to-end solution on clearly structured, well-understood &amp; automatable data and enables us to scale analytics capabilities more efficiently for the whole organization.</p><h3>Let’s count something</h3><p>So how does this work out in practice? To have a more concrete example, let’s say we want to introduce a new metric to understand how many times new tabs are opened in a browser.</p><p>In Glean, this starts from <a href="https://mozilla.github.io/glean/book/user/metrics/counter.html#configuration">declaring that metric in a YAML file</a>. In this case we’ll add a new “counter” metric:</p><pre>browser.usage:<br>  tab_opened:<br>    type: counter<br>    description: Count how often a new tab is opened. …<br>    …</pre><p>Now from here, <a href="https://mozilla.github.io/glean/book/user/metrics/counter.html#api">an API is automatically generated</a> that the product code can use to record when something happens:</p><pre>import org.mozilla.yourApplication.GleanMetrics.BrowserUsage<br>…<br>override fun tabOpened() {<br>  BrowserUsage.tabOpened.add()<br>  …<br>}</pre><p>That’s it, everything else is handled internally by the SDK — from storing the data, packaging it up correctly and sending it out.</p><p>This new metric can then be <a href="https://mozilla.github.io/glean/book/user/testing-metrics.html">unit-tested</a> or verified in real-time, <a href="https://docs.telemetry.mozilla.org/concepts/glean/debug_ping_view.html">using a web interface</a> to confirm the data is coming in. Once the product change is live, data starts coming in and <a href="https://docs.telemetry.mozilla.org/concepts/glean/glean.html#how-to-use-glean">shows up in standard data sets</a>. From there it is available to query using SQL through <a href="https://redash.io/">Redash</a>, our generic go-to data analysis tool. Other tools can also later integrate it, like the <a href="https://mzl.la/2NxbDie">measurement dashboard</a> or Amplitude.</p><p>Of course there is a <a href="https://mozilla.github.io/glean/book/user/metrics/index.html">set of other metric types available</a>, including events, dates &amp; times and other typical use cases.</p><p>Want to see how this looks in code? You can take a look at the Glean Android sample app, especially the <a href="https://github.com/mozilla/glean/blob/master/samples/android/app/metrics.yaml">metrics.yaml file</a> and its <a href="https://github.com/mozilla/glean/blob/master/samples/android/app/src/main/java/org/mozilla/samples/glean/MainActivity.kt">main activity</a>.</p><h3>What’s next?</h3><p>The first version of the Glean solution went live to support the launch of <a href="https://blog.mozilla.org/futurereleases/2019/06/27/reinventing-firefox-for-android-a-preview/">Firefox Preview</a>, with an initial SDK support for Android applications &amp; a priority set of data tools. iOS support for the SDK is already planned for 2019, as is improved &amp; expanded integration with different analysis tools. We are also actively considering support for desktop platforms, to make Glean a true cross-platform analytics SDK.</p><p>If you’re interested in learning more, you can check out:</p><ul><li>The <a href="https://docs.telemetry.mozilla.org/concepts/glean/glean.html">Glean overview</a> in our Firefox data documentation.</li><li>The <a href="https://github.com/mozilla/glean">Glean SDK</a> and it’s <a href="https://mozilla.github.io/glean/">documentation</a>.</li><li>An overview of <a href="https://docs.telemetry.mozilla.org/concepts/pipeline/data_pipeline.html">Mozilla’s data pipeline</a>.</li></ul><p>We’ll certainly expand on more technical details in future upcoming blog posts.</p><h3>Special thanks</h3><p>While this project took contributions from a lot of people, I especially want to call out <a href="https://twitter.com/tokenprogrammer">Frank Bertsch</a> (data engineering lead), <a href="https://twitter.com/dexterp37">Alessio Placitelli</a> (Glean SDK lead) and <a href="https://twitter.com/mdroettboom">Michael Droettboom</a> (data engineer &amp; SDK engineer). Without their substantial contributions to design &amp; implementation, this project would not have been possible.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4e8b4788b8ad" width="1" height="1" alt=""><hr><p><a href="https://medium.com/georg-fritzsche/introducing-glean-telemetry-for-humans-4e8b4788b8ad">Introducing Glean — Telemetry for humans</a> was originally published in <a href="https://medium.com/georg-fritzsche">Georg Fritzsche</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Firefox Data engineering newsletter Q1 / 2018]]></title>
            <link>https://medium.com/georg-fritzsche/firefox-data-engineering-newsletter-q1-2018-229c723e8706?source=rss----9eb1bc803268---4</link>
            <guid isPermaLink="false">https://medium.com/p/229c723e8706</guid>
            <category><![CDATA[data-engineering]]></category>
            <category><![CDATA[firefox]]></category>
            <dc:creator><![CDATA[Georg Fritzsche]]></dc:creator>
            <pubDate>Wed, 18 Apr 2018 18:11:26 GMT</pubDate>
            <atom:updated>2018-04-18T18:11:00.046Z</atom:updated>
            <content:encoded><![CDATA[<p>As the Firefox data engineering teams we provide core tools for using data to other teams. This spans from collection through <em>Firefox Telemetry</em>, storage &amp; processing in our <em>Data Platform</em> to making data available in <em>Data Tools</em>.</p><p>To make new developments more visible we aim to publish a quarterly newsletter. As we skipped one, some important items from Q4 are also highlighted this time.</p><p>This year our teams are putting their main focus on:</p><ul><li>Making experimentation easy &amp; powerful.</li><li>Providing a low-latency view into product release health.</li><li>Making it easy to work with events end-to-end.</li><li>Addressing important user issues with our tools.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vMskzeKB0hXGhXh4SNEGAg.png" /></figure><h3>Usage improvements</h3><p>Last year we started to investigate how our various tools are used by people working on Firefox in different roles. From that we started addressing some of the main issues users have.</p><p>Most centrally, the <a href="https://telemetry.mozilla.org">Telemetry portal</a> is now the main entry point to our tools, documentation and other resources. When working with Firefox data you will find all the important tools linked from there.</p><p>We added the <a href="https://telemetry.mozilla.org/probe-dictionary/">probe dictionary</a> to make it easy to find what data we have about Firefox usage.</p><p>For <a href="https://sql.telemetry.mozilla.org/">STMO</a>, our Redash instance, we <a href="https://blog.redash.io/improving-redash-user-experience-36e3ca47d1b3">deployed a major UI refresh</a> from the upstream project.</p><p>There is new documentation on <a href="https://docs.telemetry.mozilla.org/tools/stmo.html#prototyping-queries">prototyping</a> and <a href="https://docs.telemetry.mozilla.org/concepts/sql_optimization.html">optimizing</a> STMO queries.</p><p>Our <a href="https://docs.telemetry.mozilla.org/">data documentation</a> saw many other updates, from cookbooks on <a href="https://docs.telemetry.mozilla.org/cookbooks/view_pings_cep.html">how to see your own pings</a> and <a href="https://docs.telemetry.mozilla.org/cookbooks/new_ping.html">sending new pings</a> to adding <a href="https://docs.telemetry.mozilla.org/concepts/choosing_a_dataset.html">more datasets</a>. We also added documentation on <a href="https://docs.telemetry.mozilla.org/concepts/pipeline/data_pipeline.html">how our data pipeline works</a>.</p><h3>Enabling experimentation</h3><p>For experimentation, we have focused on improving tooling. <a href="https://firefox-test-tube.herokuapp.com/">Test Tube</a> will soon be our main experiment dashboard, replacing experiments viewer. It displays the results of multivariant experiments that are being conducted within Firefox.</p><p>We now have <a href="https://github.com/mozilla/stmoab">St. Moab</a> as a toolkit for automatically generating experiment dashboards.</p><h3>Working with event data</h3><p>To make working with events easier, we improved multiple stages in the pipeline. Our documentation <a href="https://docs.telemetry.mozilla.org/concepts/pipeline/event_pipeline.html">has an overview</a> of the data flow.</p><p>On the Firefox side, events can now be recorded through the <a href="https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/collection/events.html">events API</a>, <a href="https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/collection/events.html#registerevents">from add-ons</a>, and <a href="https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/collection/hybrid-content.html">whitelisted Firefox content</a>. From Firefox 61, all recorded events are <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1440673">automatically counted into scalars</a>, to easily get summary statistics.</p><p>Event data is available for analysis in Redash in <a href="https://docs.telemetry.mozilla.org/concepts/pipeline/event_pipeline.html#datasets">different datasets</a>. We can now also connect more event data to <a href="https://amplitude.com/">Amplitude</a>, a product analytics tool. A connection for some mobile events to Amplitude is live, for Firefox Desktop events it will be available soon.</p><h3>Low-latency release health data</h3><p>To enable low-latency views into release health data, we are working on improving <a href="https://data-missioncontrol.dev.mozaws.net/">Mission Control</a>, which will soon replace <a href="https://www.arewestableyet.com/">arewestableyet.com</a>.</p><p>It <a href="https://wlach.github.io/blog/2018/04/mission-control-update/">has new features</a> that enable comparing quality measures like crashes release-over-release across channels.</p><h3>Firefox Telemetry tools</h3><p>For Firefox instrumentation we expanded on <a href="https://docs.telemetry.mozilla.org/concepts/pipeline/event_pipeline.html#firefox-event-collection">the event recording APIs</a>. To make build turnaround times faster, we now support <a href="https://mail.mozilla.org/pipermail/fx-data-dev/2018-February/000114.html">adding scalars in artifact builds</a> and will <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1448945">soon extend this to events</a>.</p><p>Following the recent Firefox data preferences changes, <a href="https://medium.com/georg-fritzsche/data-preference-changes-in-firefox-58-2d5df9c428b5">we adopted Telemetry</a> to only differentiate between <em>“release”</em> and <em>“prerelease”</em> data.</p><p>This also impacted the <a href="https://telemetry.mozilla.org/new-pipeline/dist.html">measurement dashboard</a> and telemetry.js users as the current approach to publishing this data from the release channel does not work anymore.</p><p>The <a href="https://telemetry.mozilla.org/new-pipeline/dist.html">measurement dashboard</a> got some smaller usability improvements thanks to a group of contributors. We also prototyped a <a href="https://georgf.github.io/usecounters/">use counter dashboard</a> for easier analysis.</p><h3>Datasets &amp; analysis tools</h3><p>To power <a href="https://letsencrypt.org/stats/">LetsEncrypt stats</a>, we publish a public <a href="https://docs.telemetry.mozilla.org/datasets/other/ssl/reference.html">Firefox SSL usage dataset</a>.</p><p>The following datasets are newly available in Redash or through Spark:</p><ul><li><a href="https://docs.telemetry.mozilla.org/datasets/batch_view/client_count_daily/reference.html"><em>client_counts_daily</em></a><em> — </em>This is useful for estimating user counts over a few dimensions and a long history with daily precision.</li><li><a href="https://docs.telemetry.mozilla.org/datasets/batch_view/first_shutdown_summary/reference.html"><em>first_shutdown_summary</em></a> — A summary of the first main ping of a client’s lifetime. This accounts for clients that do not otherwise appear in main_summary.</li><li><a href="https://docs.telemetry.mozilla.org/datasets/mozetl/churn/reference.html"><em>churn</em></a> — A pre-aggregated dataset for calculating the 7-day churn for Firefox Desktop.</li><li><a href="https://docs.telemetry.mozilla.org/datasets/batch_view/retention/reference.html"><em>retention</em></a> — A pre-aggregated dataset for calculating retention for Firefox Desktop. The primary use-case is 1-day retention.</li></ul><p>For analysis tooling <a href="https://groups.google.com/a/mozilla.com/d/msg/databricks-discuss/eEXnfRJaXm0/TgVav-8XBwAJ">we now have Databricks available</a>. This offers instant-on-notebooks with no more waiting for clusters to spin up and supports Scala, SQL and R. If you’re interested sign up to the <a href="https://groups.google.com/a/mozilla.com/forum/#!forum/databricks-discuss">databricks-discuss mailing list</a>.</p><p>We also got the <a href="https://github.com/mozilla/probe-scraper">probe info service</a> into production, which scrapes the probe data in Firefox code and makes a history of it available to consumers. This is what powers the <a href="https://telemetry.mozilla.org/probe-dictionary/">probe dictionary</a>, but can also be used to power other data tooling.</p><h3>Getting in touch</h3><p>Please reach out to us with any questions or concerns.</p><ul><li>You can find us on IRC in <em>#telemetry</em> and <em>#datapipeline</em>.</li><li>We are available on slack in <em>#fx-metrics</em>.</li><li>The main mailing list for data topics is<a href="https://mail.mozilla.org/listinfo/fx-data-dev"> fx-data-dev</a>.</li><li>Bugs can be filed in<a href="https://wiki.mozilla.org/Telemetry#Filing_Bugs"> one of these components</a>.</li><li>We are on Twitter as<a href="https://twitter.com/moztelemetry"> @MozTelemetry</a>.</li></ul><p><strong>Cheers from</strong></p><ul><li>The data engineering team <em>(Katie Parlante)</em>, consisting of</li><li>The Firefox Telemetry team <em>(Georg Fritzsche)</em></li><li>The Data Platform team <em>(Mark Reid)</em></li><li>The Data Tools team <em>(Rob Miller)</em></li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=229c723e8706" width="1" height="1" alt=""><hr><p><a href="https://medium.com/georg-fritzsche/firefox-data-engineering-newsletter-q1-2018-229c723e8706">Firefox Data engineering newsletter Q1 / 2018</a> was originally published in <a href="https://medium.com/georg-fritzsche">Georg Fritzsche</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Know your limits]]></title>
            <link>https://medium.com/georg-fritzsche/know-your-limits-c2152629ca5f?source=rss----9eb1bc803268---4</link>
            <guid isPermaLink="false">https://medium.com/p/c2152629ca5f</guid>
            <category><![CDATA[engineering]]></category>
            <category><![CDATA[data-engineering]]></category>
            <category><![CDATA[architectural-design]]></category>
            <dc:creator><![CDATA[Georg Fritzsche]]></dc:creator>
            <pubDate>Sun, 08 Apr 2018 16:28:27 GMT</pubDate>
            <atom:updated>2018-04-08T18:21:43.930Z</atom:updated>
            <content:encoded><![CDATA[<p>When building software systems, we usually deal with data from external sources. This can be user input, data coming from other systems, etc. My basic assumption on any external data is: don’t trust it!</p><p>Any data that we don’t know completely ahead of time can and will behave differently than what we expected. A classic example for this is user input, say a text field. If we don’t limit the length and contents, somebody will eventually enter a book lengths worth of data or try to use it to attack a system.</p><p>But the same problem extends to data from systems we control and that we might have faith in. At Mozilla we have a variety of teams and products which are deployed to a large and diverse population of users across the world. We may think we know how those products and the data they generate behave, but practically we always find surprises.</p><h3>A case study</h3><p>Let’s consider a hypothetical mobile application. The mobile application has a basic system to collect product data, and makes it easy to collect new string values. To make it easier and more flexible for our teams to add something, we don’t impose a hard limit on the length of the string. We have documentation on the various instrumentation options available, making it easy to choose the best for each use-case.</p><p>Now, this works great and everybody can add their instrumentation easily. Then one day a team needs data on a specific view in the application to better understand how it gets used. Specifically they need to know how long it was visible to the user, which buttons were interacted with in which order and what the screen size of the device was. This doesn’t seem to directly fit into our existing instrumentation options, but our string recording is flexible enough to accommodate different needs.</p><p>So they put that data together in a string, making it structured so it’s reasonable to use later and we start sending it out in our JSON data packages:</p><pre>...<br>&quot;view_data&quot;: &quot;{\&quot;visible_ms\&quot;: 35953, \&quot;buttons_used\&quot;: [\&quot;change_name\&quot;, \&quot;confirm\&quot;, \&quot;help\&quot;], \&quot;screen_size\&quot;: \&quot;960×540\&quot;}&quot;,<br>...</pre><p>The change gets tested and works fine so it gets shipped. Some time later we get a report that our product dashboards are not updated. An investigation shows that the jobs to update the dashboards were timing out, due to unusually large strings being submitted. It turns out that some users click buttons in the view 100 times or more.</p><p>What’s more, a detailed review shows that the user churn rate in our dashboard started to increase slightly, but permanently, around the time the change shipped. The favored hypothesis is that the increased data size for some users leads to lower chances of the data getting uploaded.</p><h3>So, what went wrong?</h3><p>To be clear, this is built as a bad example. There is a whole bunch of things that could be learnt from the above example; from getting expert review to adding instrumentation options to building the data system for robustness on both ends. However, here i want to highlight how the lack of a limit for the string length propagated through the system.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*HHP0jIqLzW1oJ4e_lKyehA.png" /></figure><p>No software component exists in isolation. Looking at a high-level data flow through a product analytics system, any component in this system has a set of important parameters with resulting trade-offs from our design choices. The flexibility of a component in an early stage puts fewer constraints on the data that flows through, which propagates through the system and enlarges the problem space for each component after it.</p><p>The unbound string length of the data collection system here means that we know less about the shape of data we collect, which impacts all components in the later stages. Choosing explicit limits on incoming data is critical and allows us to reason about the behavior of the whole system.</p><h3>Find the right limit</h3><p>Choosing a limit is important, but that doesn’t mean we should restrict our data input as much as we can. If we pick limits that are too strict, we end up blocking use-cases that are legitimate but not anticipated. For each system that we build, we have to make a design decision on the scale from most strict to arbitrary values and weigh the trade-offs.</p><p>For me, my take-away is: <strong>Have a limit. Reason about it.</strong> <strong>Document it. </strong>The <em>right</em> limit will come out of conversations and lessons learnt — as long as we have one.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c2152629ca5f" width="1" height="1" alt=""><hr><p><a href="https://medium.com/georg-fritzsche/know-your-limits-c2152629ca5f">Know your limits</a> was originally published in <a href="https://medium.com/georg-fritzsche">Georg Fritzsche</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Data preference changes in Firefox 58]]></title>
            <link>https://medium.com/georg-fritzsche/data-preference-changes-in-firefox-58-2d5df9c428b5?source=rss----9eb1bc803268---4</link>
            <guid isPermaLink="false">https://medium.com/p/2d5df9c428b5</guid>
            <category><![CDATA[firefox]]></category>
            <category><![CDATA[data]]></category>
            <dc:creator><![CDATA[Georg Fritzsche]]></dc:creator>
            <pubDate>Wed, 01 Nov 2017 20:29:21 GMT</pubDate>
            <atom:updated>2017-11-01T20:29:24.639Z</atom:updated>
            <content:encoded><![CDATA[<p>As part of the Photon UI refresh, the Firefox data preferences were streamlined. Where previously for historic reasons we had two controls, we now have one.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*nje52q1SmpQSowMX." /><figcaption>How the new Firefox data preferences look.</figcaption></figure><p>There are two notable changes here to previous versions:</p><ul><li>There is only one control now for Firefox data submission.</li><li>There is a new control for <a href="https://medium.com/@mgrimes/shield-studies-go-faster-bet-smarter-1010ae8d8e">SHIELD studies</a>, which i won’t detail here.</li></ul><p>As <a href="https://blog.mozilla.org/futurereleases/2017/09/06/data-just-living/">detailed in another post</a>, this doesn’t change anything about the type of data being collected while it makes the data controls less confusing. However, it does have some technical consequences for Telemetry that we landed in Firefox 58.</p><h3>What does this mean for Telemetry?</h3><p>Previously we had two different sets of data we collected:</p><ul><li><em>“opt-out”</em> or <em>“base”</em> Telemetry: This was on by default on all Firefox channels.</li><li><em>“opt-in”</em> or <em>“extended”</em> Telemetry: This was off by default on Firefox release and on by default on prerelease channels. Turning off <em>“opt-out”</em> Telemetry also turned this off.</li></ul><p>Now the behavior is more streamlined:</p><ul><li>There is just one control for data upload for Firefox, which is on by default.</li><li>Individual measurements are now collected from either all users or prerelease users.</li></ul><p>So for Firefox we now just differentiate between “release data” and “prerelease data”. <em>(For some specific features or studies there may still be explicit opt-in notifications, but this covers all standard Firefox data collection.)</em></p><p>While this has broader technical impact on Firefox data collection, the changes we landed should make this work mostly seamless.</p><h3>What does this mean for me?</h3><p>For <strong>Firefox users</strong>, there is no significant change; the data upload setting users chose is respected as before. The opt-in for additional Telemetry data went away; instead we always collect less data on Firefox release.</p><p>For most <strong>Firefox development</strong>, nothing should change. Telemetry takes care of doing the right thing for histograms, scalars &amp; events internally.</p><p>Local builds from current mozilla-central should default to recording all the prerelease data but not upload it, without any extra build flags. <em>about:telemetry</em> allows you to confirm that.</p><p>For testing locally how release Telemetry behaves, there is a hidden pref: <a href="https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/internals/preferences.html#testing"><em>toolkit.telemetry.testing.overridePreRelease</em></a>.</p><p>For <strong>Fennec development</strong>, nothing changed. Fennec still has the same Telemetry behavior and preference handling as before.</p><p>For <strong>writing Firefox tests</strong>, <em>nsITelemetry.canRecordExtended</em> can be used to check whether prerelease data is recorded. The pref <em>toolkit.telemetry.testing.overridePreRelease</em> can be used for tests that need to enable prerelease behavior.</p><p>For <strong>QAing Firefox data collection</strong>, you might need to override the prerelease status using the pref <em>toolkit.telemetry.testing.overridePreRelease</em>. The prerelease and sending status can be checked in <em>about:telemetry</em>.</p><p>If you are <strong>looking at Telemetry data</strong>, there are some changes. In Firefox 58, we will not receive the “extended” data from release anymore. This directly affects some parts of <a href="https://telemetry.mozilla.org">telemetry.mozilla.org</a> that provided release data from that small <em>“opt-in”</em> population:</p><ul><li>the distribution and evolution dashboards will soon not show release data anymore.</li><li><a href="https://github.com/mozilla/telemetry-dashboard/blob/gh-pages/v2/doc.md">telemetry.js</a> and the aggregates service will not provide release data when 58 is released.</li></ul><p>If you will be affected by these changes and need alternatives, please reach out to us.</p><h3>The new Telemetry behavior</h3><p>Here is an overview of how the important Telemetry controls now behave for Firefox Desktop.</p><p>Currently the naming of these various controls is inconsistent and confusing. While we focused on the minimal required changes first, we will clean this up in the near future. Updating the <a href="https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/">Telemetry documentation</a> to match the new behaviors is on-going.</p><p>First, there are the main Firefox Telemetry preferences:</p><p><strong>datareporting.healthreport.uploadEnabled: </strong>This is our main preference that controls whether Firefox can send data and follows the user choice. It didn’t see any change in behavior from these changes.</p><p><strong>toolkit.telemetry.enabled: </strong>This preference is now locked to reflect prerelease or release builds (<em>true</em> and <em>false</em> respectively).</p><p>This previously matched the additional data control and controlled the “extended” Telemetry collection. It is also used in other places to control collecting additional data.</p><p>More data controls are on the nsITelemetry interface:</p><p><strong>nsITelemetry.canRecordBase: </strong>This is generally <em>true</em> and reflects whether any Telemetry data can be recorded. Most code should never need this.</p><p><strong>nsITelemetry.canRecordExtended: </strong>This reflects if Firefox is on a prerelease or release builds (<em>true</em> and <em>false</em> respectively).</p><p>There is also the <strong>releaseChannelCollection property</strong> in Histograms.json, Scalars.yaml &amp; Events.yaml. These properties keep working seamlessly, with no action required. They now follow the prerelease status of the above settings.</p><h3>Reaching out</h3><ul><li>If you have any questions reach out to :gfritzsche, :chutten, :dexter, :frank or <a href="https://wiki.mozilla.org/Telemetry#Communication">the team</a>.</li><li>For any specific issues, please <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Toolkit&amp;component=Telemetry&amp;blocked=1406390">file a bug</a>. We are using <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1406390">bug 1406390</a> for tracking.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2d5df9c428b5" width="1" height="1" alt=""><hr><p><a href="https://medium.com/georg-fritzsche/data-preference-changes-in-firefox-58-2d5df9c428b5">Data preference changes in Firefox 58</a> was originally published in <a href="https://medium.com/georg-fritzsche">Georg Fritzsche</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Firefox data platform & tools update, Q3 2017]]></title>
            <link>https://medium.com/georg-fritzsche/firefox-data-platform-tools-update-q3-2017-1ecad2656e83?source=rss----9eb1bc803268---4</link>
            <guid isPermaLink="false">https://medium.com/p/1ecad2656e83</guid>
            <category><![CDATA[data]]></category>
            <category><![CDATA[firefox]]></category>
            <category><![CDATA[data-engineering]]></category>
            <category><![CDATA[mozilla]]></category>
            <dc:creator><![CDATA[Georg Fritzsche]]></dc:creator>
            <pubDate>Fri, 13 Oct 2017 10:59:27 GMT</pubDate>
            <atom:updated>2017-10-13T10:59:33.180Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aUF2mH07p16oj06LAOzdOw.png" /><figcaption>Mission Control showing content crashes per 1k usage hours.</figcaption></figure><p>As the <em>data platform &amp; tools</em> team we provide core tools for using data to other teams. This spans Firefox Telemetry, data storage and analysis to some central data viewing tools. To make new developments more visible we publish a quarterly update on our work.</p><p>In the last quarter we continued focusing on decreasing data latency, supporting analytics and experimentation workflows, improving stability and building Mission Control.</p><h3>Let’s go faster</h3><p>To enable faster decision making, we worked on improving latency for important use-cases.</p><p>Most notable is that the <em>main</em> pings now arrive much faster, which power most of our main dashboards and analysis. The new rule of thumb is <a href="https://chuttenblog.wordpress.com/2017/09/12/two-days-or-how-long-until-the-data-is-in/">2 days until 95% of the main ping data</a> is available, from activity in the browser to being available for analysis.</p><p>In Firefox Telemetry we can now record new probes from add-ons without having to ride the trains, which greatly reduces shipping times for instrumentation. This is available first with <a href="https://medium.com/georg-fritzsche/recording-new-telemetry-from-add-ons-61d194568212">events</a> in 56 and <a href="https://www.a2p.it/wordpress/tech-stuff/mozilla/recording-telemetry-scalars-from-add-ons/">scalars</a> in 58.</p><p>The new <a href="https://chuttenblog.wordpress.com/2017/10/04/anatomy-of-a-firefox-update/">update ping</a> provides a lower-latency signal for when updates are staged and successfully applied. It is queryable through the <a href="https://docs.telemetry.mozilla.org/datasets/batch_view/update/reference.html">telemetry_update_parquet dataset</a>.</p><p>Similarly, the <a href="https://www.a2p.it/wordpress/tech-stuff/mozilla/getting-firefox-data-faster-introducing-the-new-profile-ping/">new-profile ping</a> is a signal for new profiles and installations, which is now queryable through the <a href="https://docs.telemetry.mozilla.org/datasets/batch_view/new_profile/reference.html">telemetry_new_profile_parquet dataset</a>.</p><p>The new <a href="https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/data/first-shutdown-ping.html">first-shutdown ping</a> helps us to better understand users that churn after the first session, by sending the first sessions data of a user immediately on Firefox shutdown.</p><h3>Enabling experimentation</h3><p>This year saw a lot of cross-team work on enabling experimentation workflows in Firefox. A focus was on enabling <a href="https://medium.com/@mgrimes/shield-studies-go-faster-bet-smarter-1010ae8d8e">various SHIELD studies</a>.</p><p>Here the <a href="https://moz-experiments-viewer.herokuapp.com/">experiments viewer</a> saw a lot of improvements, which provides a front-end view for inspecting how various metrics perform in an experiment.</p><p>An <em>experiments</em> dataset is now available in Redash and Spark, which includes data for SHIELD opt-in experiments and is based on the <em>main_summary</em> dataset.</p><p>The <em>experiment_aggregates</em> dataset now includes metadata about the experiment, and its reliability and speed have improved significantly.</p><p>Other use-cases can build on the ping data from most experiments using <a href="https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/collection/experiments.html">experiment annotations</a>, which is available within 15 minutes in the <a href="https://gist.github.com/mreid-moz/7c0b32c9b9519f53d372a6c7b7af765d"><em>telemetry-cohort</em> data source</a>.</p><h3>Tools for exploring data</h3><p>Our data tools make it easier to access and query the data we have. Here our Redash installation at <a href="https://sql.telemetry.mozilla.org/">sql.telemetry.mozilla.org</a> saw many improvements including:</p><ul><li>Query revision control and reversion.</li><li>Better security and usability for templated queries.</li><li>Schema browser and autocomplete usability and performance improvements.</li><li>Better support for Athena data sources.</li></ul><p><a href="https://wlach.github.io/blog/2017/10/mission-control/">Mission Control</a> is a new tool, which makes key measures of a Firefox release, like crash counts, available with low latency. An early version of it is now available <a href="https://data-missioncontrol.dev.mozaws.net/#/">here</a>.</p><p>On the Firefox side, <a href="https://chuttenblog.wordpress.com/2017/08/30/the-photonization-of-abouttelemetry/">about:telemetry got a major redesign</a>, which makes it more easy to navigate, added a global search and aligns it with the photon design.</p><h3>Powering data analysis</h3><p>To make analysis more effective, two new datasets were added:</p><ul><li><a href="https://github.com/mreid-moz/firefox-data-docs/blob/6d5076cd2746639874704d8b00af431f4e60c5e7/datasets/mozetl/clients_daily/intro.md">clients_daily</a>, which summarizes main ping data into one row per client and day.</li><li><a href="https://mail.mozilla.org/pipermail/fx-data-dev/2017-October/000071.html">heavy_users</a> (<a href="https://docs.telemetry.mozilla.org/concepts/choosing_a_dataset.html#heavyusers">docs</a>), which has a similar format, but contains only clients that match our definition of “heavy users”.</li></ul><p>For analysis jobs run through <a href="http://analysis.telemetry.mozilla.org/">ATMO</a>, the reliability was greatly improved, which resulted in a big decrease of job failures.</p><p>Also, support was added for using of different EMR versions with different ATMO installations, allowing us to test changes to our EMR configuration much more thoroughly prior to deployment.</p><h3>What is up next?</h3><p>Some of the things that we will work on in the next months include:</p><ul><li>Firefox 56 saw data preference changes in the UI, we will follow up <a href="https://docs.google.com/document/d/12U_s9zHvpt7iGEMF5DazSzzx3whGbCnVWEsZTyclta0/">to align some Telemetry behavior</a>.</li><li>Databricks is being actively evaluated, with the goal of improving analysis productivity and reliability.</li><li>Further usability improvements to current Experiments Viewer, and significant work done on a <a href="https://github.com/mozilla/firefox-test-tube">ground-up rewrite</a>.</li><li>Providing a dataset for “one day retention” analysis.</li><li>A generic HTTP endpoint, <em>moz_ingest</em>, will be available to accept non-telemetry data. Data can be posted in any format but if it is JSON it can automatically tie into our schema validation capabilities.</li><li>Collaboration with the Activity Stream team on bringing our event pipelines together.</li><li>Activity stream is cross-checking &amp; augmenting their experiment pipeline’s results with the experiments_summary dataset.</li></ul><h3>Get in touch</h3><p>Please reach out to us with any questions or concerns.</p><ul><li>You can find us on IRC in <em>#telemetry</em> and <em>#datapipeline</em>.</li><li>We are available on slack in <em>#fx-metrics</em>.</li><li>The main mailing list for data topics is<a href="https://mail.mozilla.org/listinfo/fx-data-dev"> fx-data-dev</a>.</li><li>Bugs can be filed in<a href="https://wiki.mozilla.org/Telemetry#Filing_Bugs"> one of these components</a>.</li></ul><p>You can also find us on Twitter as<a href="https://twitter.com/moztelemetry"> @MozTelemetry</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1ecad2656e83" width="1" height="1" alt=""><hr><p><a href="https://medium.com/georg-fritzsche/firefox-data-platform-tools-update-q3-2017-1ecad2656e83">Firefox data platform &amp; tools update, Q3 2017</a> was originally published in <a href="https://medium.com/georg-fritzsche">Georg Fritzsche</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Recording new Telemetry from add-ons]]></title>
            <link>https://medium.com/georg-fritzsche/recording-new-telemetry-from-add-ons-61d194568212?source=rss----9eb1bc803268---4</link>
            <guid isPermaLink="false">https://medium.com/p/61d194568212</guid>
            <category><![CDATA[mozilla]]></category>
            <category><![CDATA[firefox]]></category>
            <category><![CDATA[data]]></category>
            <category><![CDATA[data-engineering]]></category>
            <dc:creator><![CDATA[Georg Fritzsche]]></dc:creator>
            <pubDate>Thu, 07 Sep 2017 20:10:55 GMT</pubDate>
            <atom:updated>2017-09-08T23:29:16.908Z</atom:updated>
            <content:encoded><![CDATA[<p>One of the successes for Firefox Telemetry has been the introduction of standardized data types; <a href="https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/collection/histograms.html">histograms</a> and <a href="https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/collection/scalars.html">scalars</a>.</p><p>They are well defined and allow teams to autonomously add new instrumentation. As they are listed in machine-readable files, our data pipeline can support them automatically and new probes just start showing up in different tools. A definition <a href="https://dxr.mozilla.org/mozilla-central/rev/93dd2e456c0ecca00fb4d28744e88078a77deaf7/toolkit/components/telemetry/Scalars.yaml#38">like this</a> enables views like <a href="https://mzl.la/2ePaBPK">this</a>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BQJVHhVlZxSn6tWyVgvdTQ.png" /><figcaption>Measurements Dashboard for <a href="https://mzl.la/2eOPFso">max_concurrent_tab_count</a>.</figcaption></figure><p>This works great when shipping probes in the Firefox core code, going through our normal release and testing channels, which takes a few weeks.</p><h3>Going faster</h3><p>However, often we want to <a href="https://wiki.mozilla.org/Firefox/Go_Faster">ship code faster</a> using add-ons: this may mean running experiments through Test Pilot and SHIELD or deploying Firefox features through system add-ons.</p><p>When adding new instrumentation in add-ons, there are two options:</p><ul><li>Instrumenting the code in Firefox core code, then waiting a few weeks until it is in release.</li><li>Implementing a <a href="https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/collection/custom-pings.html">custom ping</a> and submitting it through Telemetry, requiring additional client and pipeline work.</li></ul><p>Neither are satisfactory; there is significant manual effort for running simple experiments and adding features.</p><h3>Filling the gap</h3><p>This is one of the main pain-points coming up for adding new data collection, so over the last months we were planning how to solve this.</p><p>As the scope of an end-to-end solution is rather large, we are currently focused on getting the support built into Firefox first. This can enable some use-cases right away. We can then later add better and automated integration in our data pipeline and tooling.</p><p>The basic idea is to use the existing Telemetry APIs and seamlessly allow them to record data from new probes as well. To enable this, we will extend the API with registration of new probes from add-ons at runtime.</p><p>The recorded data will be submitted with the main ping, but in a separate bucket to tell them apart.</p><h3>What we have now</h3><p>We now support <a href="https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/collection/events.html#registerevents">add-on registration of events</a> from Firefox 56 on. We expect event recording to mostly be used with experiments, so it made sense to start here.</p><p>With this new addition, events can be registered at runtime by Mozilla add-ons instead of using a registry file like <a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/telemetry/Events.yaml"><em>Events.yaml</em></a>.</p><p>When starting, add-ons call <a href="https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/collection/events.html#registerevents"><em>nsITelemetry.registerEvents()</em></a> with information on the events they want to record:</p><pre>Services.telemetry.registerEvents(“myAddon.ui”, {<br> “click”: {<br>   methods: [“click”],<br>   objects: [“redButton”, “blueButton”],<br> }<br>});</pre><p>Now, events can be recorded using the normal Telemetry API:</p><pre>Services.telemetry.recordEvent(“myAddon.ui”, “click”,<br>                               “redButton”);</pre><p>This event will be submitted with the next main ping in the “dynamic” process section. We can inspect them through <em>about:telemetry</em>:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*tQc46j8Q-8CjDFHc." /></figure><p>On the pipeline side, the events are available in the <a href="https://docs.telemetry.mozilla.org/datasets/batch_view/events/reference.html"><em>events</em> table</a> in Redash. Custom analysis can access them in the <a href="https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/telemetry/data/main-ping.html"><em>main</em></a> pings under <em>payload/processes/dynamic/events</em>.</p><h3>The larger plan</h3><p>As mentioned, this is the first step of a larger project that consists of multiple high-level pieces. Not all of them are feasible in the short-term, so we intend to work towards them iteratively.</p><p>The main driving goals here are:</p><ol><li>Make it easy to submit new Telemetry probes from Mozilla add-ons.</li><li>New Telemetry probes from add-ons are easily accessible, with minimal manual work.</li><li>Uphold our standards for data quality and data review.</li><li>Add-on probes should be discoverable from one central place.</li></ol><p>This larger project then breaks down into roughly these main pieces:</p><p><strong>Phase 1: Client work.</strong></p><p>This is currently happening in Q3 &amp; Q4 2017. We are focusing on adding &amp; extending Firefox Telemetry APIs to register &amp; record new probes.</p><p>Events are supported in Firefox 56, scalars will follow in 57 or 58, then histograms on a later train. The add-on probe data is sent out with the main ping.</p><p><strong>Phase 2: Add-on tooling work.</strong></p><p>To enable pipeline automation and data documentation, we want to define a variant of the standard registry formats (like <a href="https://dxr.mozilla.org/mozilla-central/source/toolkit/components/telemetry/Scalars.yaml"><em>Scalars.yaml</em></a>). By providing utilities we can make it easier for add-on authors to integrate them.</p><p><strong>Phase 3: Pipeline work.</strong></p><p>We want to pull the probe registry information from add-ons together in one place, then make it available publically. This will enable automation of data jobs, data discovery and other use-cases. From there we can work on integrating this data into our main datasets and tools.</p><p>The later phases are not set in stone yet, so please reach out if you see gaps or overlap with other projects.</p><h3>Questions?</h3><p>As always, if you want to reach out or have questions:</p><ul><li>You can find us on IRC in <em>#telemetry</em> and <em>#datapipeline</em>.</li><li>We are available on slack in <em>#fx-metrics</em>.</li><li>The main mailing list for data topics is<a href="https://mail.mozilla.org/listinfo/fx-data-dev"> fx-data-dev</a>.</li><li>Bugs can be filed in<a href="https://wiki.mozilla.org/Telemetry#Filing_Bugs"> one of these components</a>.</li><li>You can also find us on Twitter as<a href="https://twitter.com/moztelemetry"> @MozTelemetry</a>.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=61d194568212" width="1" height="1" alt=""><hr><p><a href="https://medium.com/georg-fritzsche/recording-new-telemetry-from-add-ons-61d194568212">Recording new Telemetry from add-ons</a> was originally published in <a href="https://medium.com/georg-fritzsche">Georg Fritzsche</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Firefox data platform & tools update, Q2 2017]]></title>
            <link>https://medium.com/georg-fritzsche/firefox-data-platform-tools-update-q2-2017-4ca506b893cd?source=rss----9eb1bc803268---4</link>
            <guid isPermaLink="false">https://medium.com/p/4ca506b893cd</guid>
            <category><![CDATA[mozilla]]></category>
            <category><![CDATA[open-source]]></category>
            <category><![CDATA[firefox]]></category>
            <category><![CDATA[data]]></category>
            <category><![CDATA[data-engineering]]></category>
            <dc:creator><![CDATA[Georg Fritzsche]]></dc:creator>
            <pubDate>Tue, 18 Jul 2017 17:57:16 GMT</pubDate>
            <atom:updated>2017-07-24T09:13:26.874Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*r6sMk4fidLzi2O-wy_AEsA.png" /><figcaption>Beta “main” ping submission delay analysis by :chutten.</figcaption></figure><p>The <em>data platform and tools</em> teams are working on our core Telemetry system, the data pipeline, providing core datasets and maintaining some central data viewing tools.</p><p>To make new work more visible, we provide quarterly updates.</p><p><strong>What’s new in the last few months?</strong></p><p>A lot of work in the last months was on reducing latency, supporting experimentation and providing a more reliable experience of the data platform.</p><p>On the <strong>data collection</strong> side, we have significantly improved reporting latency from Firefox 55, with preliminary results from Beta showing we <a href="https://www.a2p.it/wordpress/tech-stuff/mozilla/firefox-data-faster-shutdown-pingsender/">receive 95% of the “main” ping within 8 hours</a> (compared to previously over 90 hours). Curious for more detail? <a href="https://chuttenblog.wordpress.com/2017/07/12/latency-improvements-or-yet-another-satisfying-graph/">#1</a> and <a href="http://reports.telemetry.mozilla.org/post/projects/mainping_beta_latency.kp">#2</a> should have you covered.</p><p>We also added a <a href="https://www.a2p.it/wordpress/tech-stuff/mozilla/getting-firefox-data-faster-introducing-the-new-profile-ping/">“new-profile” ping</a>, which gives a clear and timely signal for new clients.</p><p>There is a new API <a href="https://gecko.readthedocs.io/en/latest/toolkit/components/telemetry/telemetry/collection/experiments.html">to record active experiments in Firefox</a>. This allows annotating experiments or interesting populations in a standard way.</p><p>The <em>record_in_processes</em> field is now required for all histograms. This removes ambiguity about which process they are recorded in.</p><p>The <strong>data documentation</strong> moved to a new home: <a href="https://docs.telemetry.mozilla.org/">docs.telemetry.mozilla.org</a>. Are there gaps in the documentation you want to see filled? Let us know by <a href="https://bugzilla.mozilla.org/enter_bug.cgi?assigned_to=nobody%40mozilla.org&amp;bug_file_loc=http%3A%2F%2F&amp;bug_ignored=0&amp;bug_severity=normal&amp;bug_status=NEW&amp;cf_fx_iteration=---&amp;cf_fx_points=---&amp;component=Documentation%20and%20Knowledge%20Repo%20%28RTMO%29&amp;contenttypemethod=autodetect&amp;contenttypeselection=text%2Fplain&amp;defined_groups=1&amp;flag_type-4=X&amp;flag_type-607=X&amp;flag_type-800=X&amp;flag_type-803=X&amp;flag_type-916=X&amp;form_name=enter_bug&amp;maketemplate=Remember%20values%20as%20bookmarkable%20template&amp;op_sys=Linux&amp;priority=P3&amp;product=Data%20Platform%20and%20Tools&amp;rep_platform=x86_64&amp;target_milestone=---&amp;version=unspecified">filing a bug</a>.</p><p>For <strong>datasets</strong>, we added <em>telemetry_new_profile_parquet</em>, which makes the data from the <em>“new-profile”</em> ping available.</p><p>Additionally, the <em>main_summary</em> dataset now includes all scalars and uses a whitelist for histograms, making it easy to add them. Important fields like <em>active_ticks</em> and Quantum release criteria were also added and backfilled.</p><p>For <strong>custom analysis</strong> on <a href="https://analysis.telemetry.mozilla.org/">ATMO</a>, cluster lifetimes can now be extended self-serve in the UI. The stability of scheduled job stability also saw major improvements.</p><p>There were first steps towards supporting Zeppelin notebooks better; they can now be <a href="https://pypi.python.org/pypi/python-zeppelin/1.2">rendered as Markdown</a> in Python.</p><p>The <strong>data tools</strong> work is focused on making our data available in a more accessible way. Here, our main tool <a href="http://sql.telemetry.mozilla.org/">Redash</a> saw multiple improvements.</p><p>Large queries should <a href="https://github.com/mozilla/redash/issues/82">no longer show the slow script dialog</a> and scheduled queries can now have an expiration date. Finally, a new Athena data source was introduced, which contains a subset of our Telemetry-based derived datasets. This brings huge performance and stability improvements over Presto.</p><h3>What is up next?</h3><p>For the next few months, interesting projects in the pipeline include:</p><ul><li>The experiments viewer &amp; pipeline, which will make it much easier to run pref-flipping experiments in Firefox.</li><li>Recording new probes from add-ons into the main ping (events, scalars, histograms).</li><li>We are working on defining and monitoring basic guarantees for the Telemetry client data (like reporting latency ranges).</li><li>A re-design of about:telemetry is currently on-going, with more improvements on the way.</li><li>A first version of Mission Control will be available, a tool for more real-time release monitoring.</li><li>Analyzing the results of the Telemetry survey, (thanks everyone!) to inform our planning.</li><li>Extending the <em>main_summary</em> dataset to include all histograms.</li><li>Adding a pre-release longitudinal dataset, which will include all measures on those channels.</li><li>Looking into additional options to decrease the Firefox data reporting latency.</li></ul><h3>How to contact us.</h3><p>Please reach out to us with any questions or concerns.</p><ul><li>You can find us on IRC in <em>#telemetry</em> and <em>#datapipeline</em>.</li><li>We are available on slack in <em>#fx-metrics</em>.</li><li>The main mailing list for data topics is<a href="https://mail.mozilla.org/listinfo/fx-data-dev"> fx-data-dev</a>.</li><li>Bugs can be filed in<a href="https://wiki.mozilla.org/Telemetry#Filing_Bugs"> one of these components</a>.</li><li>You can also find us on Twitter as<a href="https://twitter.com/moztelemetry"> @MozTelemetry</a>.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=4ca506b893cd" width="1" height="1" alt=""><hr><p><a href="https://medium.com/georg-fritzsche/firefox-data-platform-tools-update-q2-2017-4ca506b893cd">Firefox data platform &amp; tools update, Q2 2017</a> was originally published in <a href="https://medium.com/georg-fritzsche">Georg Fritzsche</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Firefox data platform & tools update, Q1 2017]]></title>
            <link>https://medium.com/georg-fritzsche/firefox-data-platform-tools-update-q1-2017-a11d0cbe717?source=rss----9eb1bc803268---4</link>
            <guid isPermaLink="false">https://medium.com/p/a11d0cbe717</guid>
            <category><![CDATA[data]]></category>
            <category><![CDATA[mozilla]]></category>
            <category><![CDATA[mozilla-firefox]]></category>
            <dc:creator><![CDATA[Georg Fritzsche]]></dc:creator>
            <pubDate>Wed, 12 Apr 2017 18:16:41 GMT</pubDate>
            <atom:updated>2017-04-12T18:15:46.841Z</atom:updated>
            <content:encoded><![CDATA[<p>The <em>data platform and tools</em> teams are working on our core Telemetry system, the data pipeline, providing core datasets and maintaining some central data viewing tools.</p><p>To make new work more visible, we provide quarterly updates.</p><p><strong>What’s new in the last few months?</strong></p><p>On the <strong><em>data collection</em></strong> side, <a href="https://gecko.readthedocs.io/en/latest/toolkit/components/telemetry/telemetry/collection/scalars.html">scalars</a> are now supported through the pipeline, so new flag and count histograms are now disallowed on Desktop in favour of boolean and uint scalars.</p><p><a href="https://gecko.readthedocs.io/en/latest/toolkit/components/telemetry/telemetry/collection/events.html">Event Telemetry</a> is now ready for first adoption. A <a href="https://sql.telemetry.mozilla.org/queries/3415/source#table">general events table</a> is available, a sync events table coming up and further uses are being looked at.</p><p>For <strong><em>documentation</em></strong>, we re-worked the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Adding_a_new_Telemetry_probe">guide for adding new Telemetry</a> and extended the detailed <a href="https://gecko.readthedocs.io/en/latest/toolkit/components/telemetry/telemetry/collection/">data collection documentation</a>. The <a href="https://georgf.github.io/fx-data-explorer/">prototype for making probe history</a> more discoverable now has daily updates and supports Nightly too.</p><p>For <strong><em>filing or finding bugs</em></strong>, there is now a new <a href="https://bugzilla.mozilla.org/describecomponents.cgi?product=Data%20Platform%20and%20Tools">Data Platform and Tools</a> product. Note that client-side bugs still go into the separate <a href="https://bugzilla.mozilla.org/enter_bug.cgi?product=Toolkit&amp;component=Telemetry">Toolkit::Telemetry component</a>.</p><p>The <strong><em>data pipeline</em></strong> work powers results for<a href="https://sql.telemetry.mozilla.org/"> re:dash</a> and<a href="https://analysis.telemetry.mozilla.org/"> custom analysis</a> among other things. Notable recent work here includes:</p><ul><li>Providing efficient lookup of client histories <a href="https://python-moztelemetry.readthedocs.io/en/stable/userguide.html#module-moztelemetry.hbase">using Hbase</a>.</li><li><a href="https://mail.mozilla.org/pipermail/fhr-dev/2017-March/001210.html">Experimental support for Zeppelin</a>, a new notebook type that improves Jupyter.</li><li>TMO dashboard is now faster through a dedicated read replica and client-side caching.</li><li>The Dataset API now has a <a href="http://python-moztelemetry.readthedocs.io/en/stable/userguide.html#moztelemetry.dataset.Dataset.select">select method</a> to return a subset of fields.</li><li>Providing a framework for testable <a href="https://github.com/mozilla/python_etl">Python ETL jobs</a> generated from a <a href="https://github.com/harterrt/cookiecutter-python-etl">template</a>.</li><li><a href="https://mozilla-services.github.io/lua_sandbox_extensions/parquet/sandboxes/heka/output/s3_parquet.html">Direct-to-parquet</a> is in production, making easier to build datasets from incoming pings.</li></ul><p>The <strong><em>data tools</em></strong> work powers tools that make data analysis more accessible across Mozilla. Updates here are:</p><ul><li>For <a href="https://sql.telemetry.mozilla.org/">re:dash</a>, the UI improved to make the dashboard list more accessible.</li><li>re:dash query issues were reduced by handling failing queries using exponential back-off.</li><li>There is also a <a href="https://github.com/mozilla/redash_client">python re:dash client</a> (h/t to emtwo), allowing programmatic generation of queries and dashboards.</li><li>The <a href="https://gauss.telemetry.mozilla.org/">distribution viewer</a> is now live, making distributions of a set of important Firefox metrics available.</li><li><a href="http://analysis.telemetry.mozilla.org/">The analysis service</a> <a href="https://github.com/mozilla/telemetry-analysis-service/blob/master/WHATSNEW.md">gained features</a> like persistent cluster storage and the ability to extend cluster lifetimes.</li></ul><p><strong>What is up next?</strong></p><p>For the next few months, interesting projects in the pipeline include:</p><ul><li>Work to decrease data latency, by sending the last ping of a Firefox session immediately. We will also start sending timely pings for new users and updates.</li><li><a href="https://docs.google.com/presentation/d/1zWbzDCNkM5tzR9K6WgO4vR7fpiuJDP-JBNLrYDsbeUA/edit#slide=id.g1d58c03b5b_0_1">Rebooting documentation</a>, providing guidance as well as tying existing documentation together.</li><li>Start supporting new data collection from add-ons in Telemetry, starting with events.</li></ul><p><strong>How to contact us.</strong></p><p>Please reach out to us with any questions or concerns.</p><ul><li>You can find us on IRC in <em>#telemetry</em> and <em>#datapipeline</em>.</li><li>The main mailing list for data topics is<a href="https://mail.mozilla.org/listinfo/fhr-dev"> fhr-dev</a>.</li><li>Bugs can be filed in<a href="https://wiki.mozilla.org/Telemetry#Filing_Bugs"> one of these components</a>.</li><li>You can also find us on Twitter as<a href="https://twitter.com/moztelemetry"> @MozTelemetry</a>.</li></ul><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a11d0cbe717" width="1" height="1" alt=""><hr><p><a href="https://medium.com/georg-fritzsche/firefox-data-platform-tools-update-q1-2017-a11d0cbe717">Firefox data platform &amp; tools update, Q1 2017</a> was originally published in <a href="https://medium.com/georg-fritzsche">Georg Fritzsche</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Firefox data platform update]]></title>
            <link>https://medium.com/georg-fritzsche/firefox-data-platform-update-2281427ca827?source=rss----9eb1bc803268---4</link>
            <guid isPermaLink="false">https://medium.com/p/2281427ca827</guid>
            <category><![CDATA[firefox]]></category>
            <category><![CDATA[mozilla]]></category>
            <category><![CDATA[data-engineering]]></category>
            <category><![CDATA[telemetry]]></category>
            <dc:creator><![CDATA[Georg Fritzsche]]></dc:creator>
            <pubDate>Fri, 24 Mar 2017 09:50:55 GMT</pubDate>
            <atom:updated>2016-12-23T15:25:37.848Z</atom:updated>
            <content:encoded><![CDATA[<p>The <em>data platform</em> team is working on our core Telemetry system, the data pipeline and providing core datasets, with support from the <em>Firefox data engineering</em> and the <em>Data tools</em> team.</p><p>To make new features more visible, we intend to provide quarterly updates, starting with this one.</p><h3><strong>What’s new in the last few months?</strong></h3><p>On the <em>data collection</em> side, we added <a href="https://gecko.readthedocs.io/en/latest/toolkit/components/telemetry/telemetry/collection/scalars.html">scalars</a> and added <a href="https://www.a2p.it/wordpress/tech-stuff/mozilla/measuring-tab-and-window-usage-in-firefox/">engagement measures</a> on top. We now support recording histograms in child processes and added <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Performance/Adding_a_new_Telemetry_probe#Choosing_a_Histogram_Type">categorical histograms</a>.</p><p>We improved <em>documentation</em>, starting from the <a href="https://wiki.mozilla.org/Telemetry">Telemetry wiki page</a> and <a href="https://air.mozilla.org/roberto-vitillo-telemetry-and-other-data-sources/">updated onboarding</a>. Further work happened on:<br>- improved <a href="https://gecko.readthedocs.io/en/latest/toolkit/components/telemetry/telemetry/index.html">client-side documentation</a><br>- an introduction on <a href="https://github.com/mozilla/telemetry-batch-view/blob/master/docs/analyzing_telemetry_data.md">analyzing telemetry data</a><br>- a guide on <a href="https://github.com/mozilla/telemetry-batch-view/blob/master/docs/choosing_a_dataset.md">choosing a dataset</a> for analysis<br>- updates to <a href="https://github.com/mozilla/telemetry-batch-view/blob/master/docs/longitudinal_examples.md">examples for the longitudinal dataset</a><br>- exploring how to make Firefox data <a href="http://georgf.github.io/fx-data-explorer/">more discoverable</a></p><p>The <em>data pipeline</em> work powers results for <a href="https://sql.telemetry.mozilla.org/">re:dash</a> and <a href="https://analysis.telemetry.mozilla.org/">custom analysis</a> among other things. Notable recent work here includes:<br>- the <a href="https://github.com/mozilla/telemetry-batch-view/blob/master/docs/choosing_a_dataset.md#cross-sectional">cross-sectional</a> dataset is operational in re:dash<br>- <a href="https://sql.telemetry.mozilla.org/queries/1170/source#table">socorro crash data</a> is now available in re:dash<br>- the new <a href="http://python-moztelemetry.readthedocs.io/en/latest/userguide.html#module-moztelemetry.dataset">dataset API</a> improves querying raw ping data<br>- the <a href="https://analysis.telemetry.mozilla.org/">self-serve analysis portal</a> was relaunched with improved UX<br>- provided easy access to <a href="https://gist.github.com/trink/bf7d6e504b3fd937b73095412612ae5a">self-serve real-time analysis</a><br>- launched a <a href="https://reports.telemetry.mozilla.org">knowledge repository</a> to make reports discoverable in one place and easier to review</p><h3><strong>Coming soon</strong></h3><p>For the next few months, interesting projects in the pipeline include:<br>- <a href="https://wiki.mozilla.org/Event_Telemetry">event telemetry</a>, which enables recording event data into Telemetry in a <a href="https://docs.google.com/document/d/1hNuS9lUJMvMqgntZXbFA6xZBU9zBpQgo7x73-sXKRpI/edit#heading=h.62xjq5nppfns">common format</a><br>- work to decrease data latency, allowing us to make decisions faster<br>- adding Telemetry support for Add-ons<br>- making it easy for new pings to show up in re:dash thanks to direct-to-parquet<br>- enabling efficient lookup of client histories using Hbase<br>- <a href="https://robertovitillo.com/2016/12/15/a-martingale-approach-to-detect-changes-in-histograms/">improved alerting</a> for Telemetry probes<br>- creating a new crash summary dataset, to make it easier to analyze crash data</p><h3><strong>Contact us</strong></h3><p>Please reach out to us with any questions or concerns.</p><p>You can find us on IRC in #telemetry and #datapipeline.<br>The main mailing list for data topics is <a href="https://mail.mozilla.org/listinfo/fhr-dev">fhr-dev</a>.<br>Bugs can be filed in <a href="https://wiki.mozilla.org/Telemetry#Filing_Bugs">one of these components</a>.<br>You can also find us on Twitter as <a href="https://twitter.com/moztelemetry">@MozTelemetry</a>.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2281427ca827" width="1" height="1" alt=""><hr><p><a href="https://medium.com/georg-fritzsche/firefox-data-platform-update-2281427ca827">Firefox data platform update</a> was originally published in <a href="https://medium.com/georg-fritzsche">Georg Fritzsche</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</r