Every source behind this page, graded. Filter by kind. Two tiers are missing
entirely and that is reported rather than hidden: there are no conference talks and no
peer-reviewed papers here, because this session's network policy reached code hosts, package
registries and one cloud vendor's blog, and nothing else.
Source
Spotifyarchived 2024-09
spotify/helios
The in-house container orchestrator, public from May 2014 and archived in September 2024.
The sunset notice is the clearest build-versus-adopt statement in the estate: it names the
condition that justified building, and the event that ended it.
Carry forwardWrite the expiry condition into the README when you
build something because nothing else exists. Somebody will need it years later.
github.com/spotify/helios
Source
Spotifyarchived 2021-09
spotify/apollo
The Java microservice framework, archived with a notice saying development continues
inside the company and that the project has "very little (if any) use outside Spotify".
The archive is about the audience, not about the software.
Carry forwardWithdrawing a repository is a supportable decision,
but say so explicitly or readers will record your system as dead.
github.com/spotify/apollo
Source
Spotifyarchived 2023-07
spotify/styx
A batch scheduler running jobs in containers on Kubernetes against managed datastores.
Discontinued as a public repository while the README described more than 10,000 production
workflows, and while the older library it was built to orchestrate carried on shipping.
Carry forwardThe replacement can die before the thing it
replaced. Check which of your internal tools is actually load bearing before you retire
the other one.
github.com/spotify/styx
Source
Spotifyarchived 2021-03
spotify/heroic
The in-house time series database built on Bigtable, Cassandra and Elasticsearch, frozen
in March 2021 with no successor named in public. Its final build file is the evidence for
the abandonment-tail failure in section 04.
Carry forwardA freeze notice is a statement about the
maintainers, not about the deployments. Inventory the deployments.
github.com/spotify/heroic
Source
Spotify2021 build file
heroic build.gradle on master
Pins log4j-core 2.13.3 and a 2019-era dependency set including Elasticsearch 7.5.0,
Jackson 2.9.9 and slf4j 1.7.21. Read next to the Log4Shell advisory it dates the moment an
archived project became an unpatchable one.
Carry forwardDiff the dependency pins of every archived upstream
you still run against the advisory database once a quarter. It is a ten-line script.
raw.githubusercontent.com/spotify/heroic
Postmortem
GitHub Advisory DB2021-12-10
GHSA-jfh8-c2jp-5v3q, CVE-2021-44228
The Log4Shell advisory, CVSS 10.0, affecting log4j-core versions at or above 2.13.0 and
below 2.15.0. Heroic's pinned 2.13.3 falls inside that range, 258 days after the repository
went read-only.
Carry forwardArchive dates and disclosure dates are independent
random variables. Plan for the case where the second follows the first.
github.com/advisories/GHSA-jfh8-c2jp-5v3q
Source
Spotifyarchived 2022-03
spotify/docker-client
Deprecated with the admission that the internally used version was whatever the already
dying orchestrator pinned in its build file. Archived in a sweep with dockerfile-maven and
spydra in March 2022.
Carry forwardWhen one project pins another, retiring the first
freezes the second for everyone downstream of it.
github.com/spotify/docker-client
Source
Spotify2026-09 listing
Archived repository listing, 163 entries
The estate census: 163 archived against 126 active. The dates cluster, with eight
archives carrying a late March 2022 timestamp, which shows retirement being run as a
campaign rather than as a continuous practice.
Carry forwardRun the same census on your own organisation once
a year; the clusters tell you when someone last had time to clean up.
github.com/orgs/spotify/repositories
Source
Spotify2026-09 listing
Active repository listing, 126 entries
What Spotify publishes now: feature flag SDKs, a Rust flag resolver, audio libraries, a
Flink operator and an agent tooling plugin. No orchestrator, no service framework, no
metrics system.
Carry forwardThe genre of a company's open source output tells
you which layer it still considers differentiating.
github.com/orgs/spotify/repositories
Source
Spotifyactive
spotify/flink-on-k8s-operator
A maintained fork of a Google-originated Kubernetes operator for Flink and Beam. The
clearest evidence that renting a runtime is not a terminal state: some workloads come back
to code you maintain.
Carry forwardBudget for the fork. Adopting upstream converts
build cost into maintenance cost rather than removing it.
github.com/spotify/flink-on-k8s-operator
Source
Spotifyproduction since 2017-08
spotify/dbeam
Declares itself finished rather than abandoned: mature, in production since August 2017,
with no further features planned. The only repository in this estate that names that state
explicitly.
Carry forwardAdd a "finished" label to your own repository
taxonomy. It is the honest answer for most internal libraries.
github.com/spotify/dbeam
Source
PyPI2012 to 2026
Luigi release history
Eighty-seven releases from October 2012 to May 2026, still maintained by Spotify's data
team. The oldest tool in the corpus outlived the Kubernetes-native scheduler built to run
its jobs.
Carry forwardLongevity in a registry beats architecture
fashion as a predictor of what will still be running.
pypi.org/pypi/luigi
Source
PyPI2014 to 2023
Annoy release history
First release March 2014, last release 14 June 2023. The handover to its successor is
visible as a 45 day gap between the two projects' final and first releases.
Carry forwardRegistry dates give you the real end of life; the
archive flag gives you the paperwork date, often years later.
pypi.org/pypi/annoy
Source
Spotify2023 to 2024
spotify/voyager
The replacement vector index, justified on recall rather than on memory layout, and
described as serving hundreds of millions of queries a day. A rare in-house component that
was replaced by another in-house component rather than by a product.
Carry forwardKeep building where the state of the art moves
faster than the vendors, which for vector search it did.
github.com/spotify/voyager
Eng blog
Spotify via Google Cloud2016-03-03
Why Spotify migrated its event delivery system from Kafka to Pub/Sub
The only pre-2020 narrative source reachable here. Gives the scale of the system being
replaced, 700,000 events per second on Kafka 0.8 with HDFS and Crunch-MapReduce, and the
design goals of the successor.
Carry forwardVendor-hosted accounts of a customer migration
carry real numbers about the old system and marketing about the new one. Use the first
half.
cloud.google.com/blog
Eng blog
Spotify via Google Cloud2016-03-11
Spotify's experiments with stream processing on Cloud Dataflow
Names what was being retired, Kafka with HDFS and Crunch-MapReduce, and what the team had
to learn instead: windows, watermarks and late-arriving data. The operational surface moved
rather than disappeared.
Carry forwardManaged runners replace operations with semantics.
Budget the learning, not just the migration.
cloud.google.com/blog
Source
Maven Central2026-09
com.spotify artifact directory
The Java-era estate in one listing: apollo modules, crtauth, dns, docker-client, crunch,
dataproc-java-submitter, bigtable-autoscaler, heroic, scio, dbeam. A published artifact
survives the repository that built it.
Carry forwardPackage registries are the most durable record of
an architecture. They do not get archived.
repo1.maven.org/maven2/com/spotify
Decision record
Backstage2020
ADR001: Architecture Decision Record log
The first decision is to keep a decision log, and it records its own risk: "People stop
adding ADRs to the log and context gets lost." Fifteen ADRs exist six years later, and the
heavier decisions moved to a separate proposal process.
Carry forwardAn ADR log decays into style guidance unless a
second, heavier process exists for architecture-sized changes.
raw.githubusercontent.com ADR001
Decision record
Backstage2020
ADR002: Default software catalog file format
States that the format is carried over from an internal Spotify catalogue that "forms a
core part of Backstage and other important pieces of the infrastructure", and that it
borrows the Kubernetes object shape.
Carry forwardBorrow the entity shape your engineers already
read. Familiarity is a migration cost you can avoid for free.
raw.githubusercontent.com ADR002
Decision record
Backstageprocess
Backstage Enhancement Proposals
A Kubernetes-style proposal process where merging means approved and owned. Fourteen
proposals exist, with statuses including provisional, implementable, implemented, deferred
and rejected.
Carry forwardMake the owner a merge condition. A design with no
owner is a backlog item wearing a document.
raw.githubusercontent.com BEP README
Decision record
Backstage2024-01-28
BEP 0003: Auth architecture evolution
Inverts the default trust model so that an instance is safe to expose directly, adds an
on-behalf-of flow instead of forwarding user tokens, and moves ownership claims out of the
token because tokens had grown large enough to affect reliability.
Carry forwardToken payloads grow with your catalogue. Put
identity attributes behind a service before the cookie limit puts them there for you.
raw.githubusercontent.com BEP 0003
Decision record
Backstage2024-01-17, provisional
BEP 0002: Dynamic frontend plugins
Proposes loading plugins at runtime so an installation can be maintained without a
codebase. Two and a half years later it is still marked provisional, while a downstream
vendor distribution ships the capability.
Carry forwardWhen a proposal stalls, look downstream. Someone
with a commercial deadline has usually shipped a version of it.
raw.githubusercontent.com BEP 0002
Postmortem
Backstage2021 to 2026
Security advisory listing, 69 entries
Seven pages of advisories from June 2021 to September 2026, of which 37 carry a single
date, 28 August 2026. The distribution across components is the finding: templating and
documentation rendering dominate.
Carry forwardA one-day batch of dozens of advisories is the
signature of an audit, not of an attack. Read the component distribution, not the count.
github.com/backstage/backstage/security/advisories
Postmortem
Backstage2026-08-28
GHSA-g2v8-7jhw-pp8p, sensitive information exposure in Scaffolder
Critical, CVSS 9.6: an authenticated user reading another user's task may receive
internal execution data, including credentials for external systems in some deployments.
Patched across four release lines at once.
Carry forwardScope task log reads by ownership on day one. The
convenience of shared logs is worth less than the credential blast radius.
GHSA-g2v8-7jhw-pp8p
Postmortem
Backstage2021-06 to 2023-02
Advisory listing, the first two years
The earliest page of the record already shows the pattern: TechDocs configuration path
traversal and content sanitisation bypasses in June 2021, template remote code execution
in November 2021, catalogue cross-site scripting in February 2023.
Carry forwardFailure classes in a portal are stable across
years. If you adopt one, put your review effort where its advisories already cluster.
Advisory listing, page 7
Postmortem
Backstage2023-06 to 2026-03
Advisory listing, the middle years
Includes an insecure sandbox in the scaffolder in June 2023, storage bucket directory
traversal in TechDocs in September 2024, and arbitrary code execution through MkDocs hooks
in January 2026.
Carry forwardSandboxing user-supplied configuration inside your
own process keeps failing. Run it somewhere you can afford to lose.
Advisory listing, page 6
Source
Backstage2024 to 2025
Issues 26665 and 27907, catalogue scale
Two adopter bug reports with numbers: timeouts at 21,000 entities of which 14,000 are
users, and facet queries costing one to six seconds at just over 2,000 components. Both
closed as not planned.
Carry forwardSearch the issue tracker for the scale you plan to
run at before you adopt. The answer is usually there, filed by someone who got there
first.
Issue 26665
Source
Backstage2024-01-31
PR 20409, continued MySQL support, closed unmerged
A substantial contribution adding MySQL support for clustered deployments, rejected on
maintenance cost with the premise itself questioned. The most useful rejected pull request
in the repository for anyone planning a portal deployment.
Carry forwardCheck which database the project actually tests
before you promise your platform team the one you already run.
PR 20409
Source
Backstage2026
PR 32623, core queue service, closed unmerged
A queue service with five backend adapters, reviewed for two months and closed without
merging, in part because no existing subsystem was migrated onto it in the same change.
Carry forwardShip a new core abstraction with its first
consumer attached, or expect to be asked for one.
PR 32623
Source
npm2020 to 2026
Registry metadata for the Backstage packages
Dates the open sourcing at 26 March 2020, the backend core's deprecation at September
2024 after 1,347 versions, and the remediation release of the scaffolder backend at 28
August 2026, the same day as the advisory batch.
Carry forwardRegistry timestamps corroborate or contradict a
project's own narrative, and they are machine readable.
registry.npmjs.org
Case study
CNCF2020 to 2024
CNCF technical oversight issues for Backstage
Sandbox acceptance merged 8 September 2020, incubation proposal merged 15 March 2022, and
a governance review opened on 13 September 2024 and still open. Donation is a process with
recurring obligations.
Carry forwardFoundation donation moves governance cost rather
than removing it, and the review cadence is public.
github.com/cncf/toc
Case study
Red Hatactive
redhat-developer/rhdh
An enterprise distribution of the same portal, formerly janus-idp/backstage-showcase, that
ships dynamic plugin loading and a curated plugin set. The divergence point between
upstream and downstream is exactly the stalled proposal.
Carry forwardWhere a vendor distribution differs from upstream,
it is telling you what enterprise adopters could not live without.
github.com/redhat-developer/rhdh
Case study
Backstage2026-09
ADOPTERS.md
Roughly 290 self-reported adopters, from retailers and airlines to banks and scooter
companies. Spotify's own entry describes the portal as the "main interface towards all of
Spotify's infrastructure and technical documentation".
Carry forwardA self-reported adopter list is weak evidence of
success and strong evidence of who to ask for operational detail.
ADOPTERS.md
Case study
Spotify2026-09
spotify/XCMetrics
The build metrics platform for the iOS estate, with one of the few published internal
scale figures: close to a million builds and over ten billion build steps collected across
all Spotify iOS applications.
Carry forwardBuild telemetry is the cheapest platform
investment that produces defensible architecture decisions later.
github.com/spotify/XCMetrics
Source
crates.io2026-01
confidence_resolver crate
First published 19 January 2026, 25 versions and 72,115 downloads by September. The newest
infrastructure component Spotify publishes is a feature flag resolver in Rust, not a
platform runtime.
Carry forwardWatch which language a company chooses for new
systems code. It dates the shift more precisely than any announcement.
crates.io
Source
Backstage2024 onward
backstage/community-plugins
Roughly sixty plugins moved out of the core repository into per-plugin workspaces with
isolated releases, which is a decision about reviewer attention rather than about code. The
repository carries 9,702 commits and 697 forks.
Carry forwardSplit optional components out when their count
passes the number of people who can review them, and give each one its own release
cadence.
github.com/backstage/community-plugins