Open-Source Wikis

/

Neon

/

Lore

neondatabase/neon

Lore

This is the timeline of the Neon repository — what was added, what was rewritten, and roughly when. Dates are derived from git commit timestamps. Where the "why" is not obvious from history, the wording hedges accordingly.

Eras

Era 1: From "Zenith" to a working pageserver (Mar 2021 – Sep 2021)

The repository was opened in March 2021 (Initial commit, Initial repo structure on 2021-03-26 and 2021-03-27) under the working name Zenith. By April 2021 the codebase already had a clear split between the page server and the WAL service (then called "walkeeper"), see commit Separate walkeeper and pageserver sources into different directories. (2021-04-06).

The first rough version of timelines (the durable, branch-able WAL history that defines a Neon database) was added in this era — see the early commit Implement "timelines" in page server. By the end of 2021 the project had ~1,150 commits and a working pageserver, walkeeper, and a local control plane (control_plane/ first appeared 2021-04-10).

Era 2: Multi-version Postgres support and the safekeeper rename (Apr 2022 – Sep 2022)

Throughout 2022 the project picked up a Rust workspace and shared library structure. The libs/ directory first appeared in April 2022 as crates were carved out of inlined modules. A few specific milestones:

  • Apr 2022safekeeper/ directory appears under that name (the rename from "walkeeper" to "safekeeper" was already in flight); the term safekeeper is now the canonical project word.
  • Jun 2021 — first appearance of the proxy/ directory; the proxy was originally a thin TLS terminator and grew into the multi-protocol service it is today.
  • Aug 2022pgxn/ arrives, gathering the per-Postgres extension code and the walproposer C library.
  • Sep 2022 — first commit on the postgres-v15 vendored fork (Prepare pg 15 support, 2022-09-05), establishing the multi-version build system that survives today.

Era 3: The "Zenith → Neon" finalization and storage broker (Late 2022 – 2023)

The storage broker (storage_broker/) landed in November 2022 as a small gRPC pub/sub layer so pageservers and safekeepers could discover each other without ad-hoc shared state. This made multi-tenant deployments much easier to operate.

The user-facing "Zenith" name had been gone for a while, but residual code references took longer to retire. The cleanup commit NEON: Finish Zenith->Neon rename (#12566) only landed in early 2026, four years after the rebrand began — a reminder that names are sticky.

In September 2023 the vendor/postgres-v16/ fork was added (Feat/postgres 16 (#4761)), bringing supported Postgres versions to three.

The full year of 2023 saw ~1,700 commits with most activity centered on the pageserver: layer storage (pageserver/src/tenant/storage_layer.rs), compaction, and the page service all stabilized into the shape they have today.

Era 4: Sharding and the storage controller (Apr 2024 – 2025)

The storage controller (storage_controller/) appeared in April 2024, replacing what had been called the "attachment service" — see Clean up 'attachment service' names to storage controller (#7326). This component is the cluster-level brain: it owns shard placement, fencing generation numbers, and reconciliation.

The same period brought:

  • Jun 2024storage_scrubber/ lands as a dedicated tool to garbage-collect orphaned objects in cloud storage.
  • Sep 2024vendor/postgres-v17/ fork (feature: PostgreSQL 17 (#8573)), bringing supported Postgres versions to four.

2024 was the busiest year by commit volume (≈2,500 commits), reflecting the parallel work on storage controller, sharding, and the migration toward gRPC for some pageserver APIs.

Era 5: gRPC, GCS, and HCC (2025 – early 2026)

2025 introduced the gRPC-based page API alongside the older libpq-based page service. See pageserver/page_api/ and the client crate pageserver/client_grpc/. Routing pageserver requests to child shards via gRPC landed in pageserver: route gRPC requests to child shards (#12702) in early 2026.

In April 2025 the endpoint_storage/ service was added (endpoint_storage/ first commit on 2025-04-23), giving each compute endpoint a per-endpoint object store, useful for things like uploaded extension files.

The most recent visible commits (March 2026, on main at 6a35a3e9f) work on:

  • GCS as a remote storage backendInitial implementation of GCS provider (#11666) and follow-up bug fixes; libs/remote_storage/src/gcs_bucket.rs is the most actively edited file in the trailing 90 days.
  • HCC (a hot-content cache style improvement to the pageserver) — see HCC, resolved GCS upload permit deadlock, SK generation delete bug-fix (#12873), the tip of main.
  • Safekeeper generation deletion bugs and last_log_term semantics in membership configuration.

Longest-standing components

These directories have been in the repo essentially since the beginning and have been continuously edited but never replaced:

Component First appeared Notes
pageserver/ 2021-03 (as pageserver) Renamed once from "page server"; never rewritten wholesale.
control_plane/ 2021-04 The neon_local CLI is one of the oldest user-facing surfaces still in active use.
proxy/ 2021-06 Started as a thin TLS terminator; today supports four wire surfaces (libpq, websockets, SQL/HTTP, REST broker).
pgxn/neon (extension) 2022-08 The smgr replacement that makes stateless compute possible; cohabits with the upstream Postgres fork in vendor/.

Major rewrites and reorganizations

  • Walkeeper → safekeeper (2022). The WAL service was renamed and refactored from /walkeeper into safekeeper/. The Paxos-style consensus was preserved; what changed was packaging and the public terminology used in code, docs, and config.
  • Attachment service → storage controller (2024). The cluster manager was renamed and its responsibilities expanded. Clean up 'attachment service' names to storage controller (#7326) is the canonical reference.
  • Sharding rollout (2024–2025). Tenants were originally one-pageserver-per-tenant. Sharding required pervasive changes: a new shard identifier in pageserver_api, sharding-aware compute clients in pageserver/client/ and pageserver/client_grpc/, and shard-aware reconciliation in the storage controller (storage_controller/src/tenant_shard.rs, ~3,200 lines).
  • gRPC page API (2025–2026). The libpq-based page service has not been removed, but a parallel gRPC interface was added and is in active development. See pageserver/page_api/ and pageserver/client_grpc/.

Deprecated or retired things

  • walkeeper — replaced by safekeeper/ in 2022. References were systematically renamed.
  • zenith — the original product name. The cargo zenith command-line was renamed to cargo neon; the final cleanup commit landed in early 2026.

Growth trajectory

Year Commits Notable additions
2021 1,146 Pageserver, control_plane, proxy take initial shape
2022 1,429 safekeeper rename, libs/, pgxn/, Postgres 15 fork, storage_broker
2023 1,709 Postgres 16 fork; pageserver storage layer hardening
2024 2,539 storage_controller, storage_scrubber, Postgres 17 fork; sharding
2025 1,647 gRPC page API, endpoint_storage, GCS backend
2026 (Jan–Mar partial) 3 (in clone) HCC, GCS bugfixes, generation-deletion fixes

Distinct authors over the full history: 175. In the trailing 365 days roughly 55 distinct accounts (excluding bots).

Why this page exists

Knowing when something arrived helps with two everyday tasks: reading old code (it tells you which design constraints were live at the time) and triaging bugs (it tells you whether the suspect line is from the era of a now-retired pattern). For the technical "why" behind major decisions, see background.

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

Lore – Neon wiki | Factory