(“This Week in Glean” is a series of blog posts that the Glean Team at Mozilla is using to try to communicate better about our work. They could be release notes, documentation, hopes, dreams, or whatever: so long as it is inspired by Glean. You can find an [index of all TWiG posts online](https://mozilla.github.io/glean/book/appendix/twig.html).)
Last week's blog post: [This Week in Glean: Glean in Private](https://chuttenblog.wordpress.com/2019/11/22/this-week-in-glean-glean-in-private/) by chutten.
Currently my team is responsible for the Telemetry framework inside Firefox on Desktop and also [the Glean SDK](https://github.com/mozilla/glean), targeting our mobile products.
We're working on bringing the Glean experience to Firefox on Desktop, but in the meantime [Telemetry](https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/index.html) is what we have,
need to support and sometimes implement new features on.
I'm speaking of the [`deletion-request` ping](https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/data/deletion-request-ping.html) here.
When a user opts out of Telemetry we take this as a signal to also delete associated data from our pipeline.
Implementation in Firefox Desktop was merely renaming [an existing ping](https://firefox-source-docs.mozilla.org/toolkit/components/telemetry/obsolete/optout-ping.html) that is triggered when the user disables "Data Collection and Use" (`about:preferences` -> Privacy & Security). It contains no additional data.
Implementation in Glean was not much harder either. Glean already supports [custom pings](https://mozilla.github.io/glean/book/user/pings/custom.html): Pings that can be defined and send by the application using Glean.
Glean's internal pings follow the same pattern, they are just pre-defined.
On ingestion data from a ping is decoded from its JSON form and put into tables on BigQuery
(in our documentation you can find [an overview of the data pipeline](https://docs.telemetry.mozilla.org/concepts/pipeline/gcp_data_pipeline.html#an-overview-of-mozillas-data-pipeline) if you are interested).
BigQuery table names can only contain alphanumeric characters and underscores (see ["Table naming"](https://cloud.google.com/bigquery/docs/tables#table_naming) in the BigQuery documentation).
We avoid any translation in the pipeline by just enforcing this directly on ping names.
Glean itself controls portion of the data, including a sequence number, date field
and a bit of metadata about the application its running in (see [the ping sections](https://mozilla.github.io/glean/book/user/pings/index.html#ping-sections)).
The rest of the payload consists of [metrics](https://mozilla.github.io/glean/book/user/metrics/index.html) as defined by users of Glean.
While implementing the new ping I stumbled upon another small detail of Glean: Pings won't be sent out if they would not contain any metrics.