Open-Source Wikis

/

Prometheus

/

Lore

prometheus/prometheus

Lore

The history of how this repository got to where it is. Dates are derived from git tags and commit timestamps.

Eras

Genesis (Nov 2012 – mid 2014)

Prometheus's first commit landed on 2012-11-24, one of the project's classic three-letter prefix entries: "Initial commit". The next year was busy: 841 commits in 2013, an early LevelDB storage engine ("Levigo -> LevelDB in terminology and references"), and the first formative refactors. The earliest README pitched the project as a metrics monitoring system born inside SoundCloud's infrastructure team.

By 2014 the project had a working storage layer, a usable query language, and a rules manager. Commit volume slowed (332 commits) as the team consolidated the design.

v1 (2015 – early 2017)

v0.1.0 was tagged in late 2014; the v1 series followed and pushed the storage architecture into its modern shape. PromQL took its current form. The kubernetes service discovery landed in November 2016. Commit count nearly tripled in 2015 (1,219) and again in 2016 (1,293) — the project went from research codebase to production system.

v2 (Nov 2017 – Oct 2024)

v2.0.0 (2017-11-07) was the first release with the modern TSDB. The tsdb/ package itself was extracted from a separate repo and folded into this one in 2019. From there:

  • 2018 — staleness markers, custom recording-rule sharding.
  • 2019–2020 — exemplar work, head chunk mmap, agent-mode design.
  • 2021-10-09 — model/histogram/ first commit. Native histograms were a multi-year effort spanning protocol, parsers, TSDB encoding, and PromQL functions.
  • 2021-10-29 — tsdb/agent/ introduced agent mode; the WAL-only running mode that decouples scrape from local storage.
  • 2022 — out-of-order ingestion (tsdb/ooo_*).
  • 2023 — start-timestamp ingestion (docs/feature_flags.md); SigV4 + Azure auth for remote write.
  • 2023-07-28 — storage/remote/otlptranslator/ first commit. OTLP receiver landed soon after.
  • 2024-02-17 — web/ui/mantine-ui/ first commit. The new Mantine UI started a year-long migration that culminated in v3.

v3 (Nov 2024 – ongoing)

v3.0.0 was tagged on 2024-11-14. Headline changes:

  • Mantine UI as the default; legacy 2.x UI behind --enable-feature=old-ui.
  • UTF-8 metric and label names.
  • A new feature-flag taxonomy, eventually backed by util/features (introduced in 3.x).
  • Native-histogram graduation to stable.
  • AppendableV2 / scrape AppenderV2 path (issue #17632); rollout still in progress at the time of writing.
  • Build-tag-based service discovery removal (remove_all_sd).

The v3 cadence has been one minor every six weeks. v3.11.0 (April 2026) introduced <//>/ PromQL operators, histogram_quantiles, retention-by-percentage, the fast-startup and xor2-encoding feature flags, and Workload Identity for Azure SD.

Longest-standing features

  • The Append interface has existed in some form since the original storage rewrite. It was renamed to Appendable.Appender(ctx) and is now in the process of being replaced by AppendableV2. ETA: removal in Q2 2026 per the deprecation note in storage/interface.go.
  • The XOR (Gorilla) chunk encodingtsdb/chunkenc/xor.go — is largely unchanged from its original Facebook-paper-derived implementation. XOR2 (xor2.go) is its planned successor, currently behind --enable-feature=xor2-encoding.
  • relabel_configs — the relabeling DSL has been in model/relabel/ since the v1 days. Many features around it have been added, but the original action set (replace, keep, drop, labelmap, labeldrop, labelkeep, hashmod) is unchanged.
  • The up metric — every scrape since v0.1 has emitted up{job, instance} for target health.
  • The HTTP API at /api/v1/... — the route shape has been stable since v2.0.0 (Nov 2017), with additions but no removals.

Deprecated features

  • The 2.x React UI (web/ui/react-app/) — replaced by Mantine in v3. Still bundled and accessible via --enable-feature=old-ui. Will be removed in a future major.
  • extra-scrape-metrics feature flag — superseded by the extra_scrape_metrics config option (global and per-scrape-config) in 3.10. The flag is accepted but warns.
  • storage.Appender (V1) — being replaced by AppenderV2. The interface is still present and used; the migration has been ongoing since late 2024.
  • tracking_targets_metadata cache — replaced by per-target metadata records in the WAL, gated by --enable-feature=metadata-wal-records.
  • Remote write 1.0 metadata watcher — superseded by RW2's per-sample metadata. Still maintained for backward compatibility.
  • The classical histogram _bucket/_count/_sum triple as the canonical scrape representation — slowly being replaced by NHCB and native histograms in greenfield deployments.
  • Per-Alertmanager queue (single send loop) — replaced by independent per-AM send loops in 3.10 (#16355).

Major rewrites

  • The TSDB v1 -> v2 rewrite (2017). The original chunked-LevelDB storage was replaced by the head + blocks + WAL design that survives today. The new code was developed in a separate repo (prometheus/tsdb) and merged back in 2019.
  • PromQL parser (multiple). The parser has been re-implemented twice; the current goyacc-based parser dates from the 2.x era and replaced an earlier handwritten recursive-descent parser.
  • Service discovery framework (around 2.0). The 1.x SDs were tightly coupled to the scraper; the 2.x rewrite introduced the Discoverer interface and the manager pattern.
  • The web UI (v3, 2024). Going from the React 2.x UI to the Mantine 3.x UI was a five-month effort in web/ui/mantine-ui/.
  • AWS SDK v1 -> v2 (2024–2025). The migration affected EC2, ECS, Elasticache, Lightsail, RDS, Kafka, and STS SDs. Several bug fixes (the EC2 endpoint regression in #18133, for instance) followed in the months after.

Growth trajectory

  • Contributors: From 1 in 2012 to a recurring set of 30–50 active committers per quarter today. Renovate-bot accounts for ~26 of the last 90 days' commits.
  • Subsystems: From a single binary to two (prometheus + promtool), with the agent mode in 2021 effectively adding a third deployment shape.
  • Service discoveries: From a small list (consul, kubernetes, dns, file_sd, EC2) to ~25.
  • Test corpus: From a handful of unit tests to 184k lines of test code, plus a custom DSL for PromQL testing under promql/promqltest/testdata/.
  • Releases: The project has shipped 50+ minor versions with a six-week cadence.

The codebase has been continuously maintained for over 13 years and shows no sign of slowing down.

Built by Factory AutoWiki from public repository content. It is a generated preview for codebase exploration, not source-maintained documentation.

Lore – Prometheus wiki | Factory