1
0
Fork 0
firefox/toolkit/components/glean/docs/dev/code_organization.md
Daniel Baumann 5e9a113729
Adding upstream version 140.0.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-25 09:37:52 +02:00

1.7 KiB

FOG code organization

Modules of Project FOG

The diagram shows the different modules of Project FOG.

FOG control

This module is the glue between Firefox and Glean.

  • The code lives in toolkit/components/glean/src.
  • It is written in Rust.
  • The crate is named fog_control.
  • It is not published to crates.io.
  • It is not consumed by other Rust crates inside mozilla-central.

This module is responsible for

  • collecting and assembling the client information
  • configuring the Glean SDK via the Rust Language Binding
  • watching the Firefox Telemetry data upload preference (datareporting.healthreport.uploadEnabled)
  • scheduling builtin pings
  • controling ping upload workers
  • passing IPC buffers

It calls into glean (the Glean SDK Rust Language Binding) to:

  • configure and initialize Glean
  • toggle upload_enabled
  • get upload tasks

It calls into fog to:

  • pass IPC buffers
  • record to its own metrics

FOG API

This module provides the user-facing API for Glean inside mozilla-central.

  • The code lives in toolkit/components/glean/api.
  • It is written in Rust.
  • The crate is named fog.
  • It is not published to crates.io.
  • It can be consumed by other Rust crates inside mozilla-central for their Glean usage.

This module is responsible for

  • exposing a specific metric API in Rust
  • wrapping metric implementations for handling IPC
  • exposing FFI functionality to implement other language APIs on top. See also Adding a New Metric Type.

It calls into glean (the Glean SDK Rust Language Binding) for:

  • metric types (including pings)