RFC Atlas: the whole RFC series, on a sphere
9834 documents, 65511 relationships
The RFC series is almost ten thousand documents that constantly point at each other. One obsoletes three others, which update a fourth, which normatively references a dozen more. The index is a list, and a list is exactly the wrong shape for that.
So I built RFC Atlas, which puts the corpus on a sphere and draws the relationships. Thus, you can see and explore the connections between Internet standards and how they evolve over time.

Why a sphere
A citation graph laid out in two dimensions turns into a hairball at a few hundred nodes. There are 9834 RFCs. Atlas places them on a uniform Fibonacci sphere, which distributes points evenly over a surface with no clustering artefacts and no poles where everything piles up.
Relationships are drawn as geodesic arcs that follow the surface instead of cutting through the middle, so an edge between two distant documents stays readable instead of becoming one more line through a solid ball of them.
Everything renders in WebGL 2, points on the GPU, with orbit controls, inertia, zoom and raycasting to pick a document. There are 65511 edges in the published graph, and drawing that on the CPU is not a conversation worth having.
Where the data comes from
Three sources, and the split matters for trust:
rfc-index.xmlfrom the RFC Editor, the official index, for metadata and theupdatesandobsoletesrelationships.- The IETF Datatracker API for normative, informative and unclassified references, which the index does not carry.
- Stéphane Bortzmeyer’s RFC index, for a link to his analysis when he has written one. If you read RFCs in French you already know why that link is worth having.
A generator normalises and deduplicates all of it through a local SQLite cache, computes citation degrees, and writes a single self-contained graph.json. Conditional HTTP requests make refreshes cheap, and the artifact can be rebuilt offline from the cache.
That last point is deliberate. The site loads one static file. There is no API behind it, nothing to keep running, and no request to a third party when you open a document.
It is meant to be read, not only looked at
A 3D toy that you cannot link to is a demo. So the parts that make it usable are the boring ones: search by number, title, author or keyword. Filters on publication range, status, stream and relationship type. Every RFC has its own route and the filters live in the URL.
The pages are crawlable, shareable, with structured metadata and a sitemap, which for a WebGL application is not automatic and was an important part of the work.
The command line half
Atlas is the visual companion to ietf-tools, a CLI I wrote in V for the same corpus. The two answer different questions. The CLI answers one document at a time:
$ rfc info 9110
RFC9110 — HTTP Semantics
Authors: R. Fielding, Ed., M. Nottingham, Ed., J. Reschke, Ed.
Date: June 2022
Status: INTERNET STANDARD
Obsoletes: RFC2818, RFC7230, RFC7231, RFC7232, RFC7233, RFC7235, RFC7538, RFC7615, RFC7694Nine documents replaced by one. xref shows the graph around a document in both directions:
$ rfc xref 2616
RFC2616 — Hypertext Transfer Protocol -- HTTP/1.1
Obsoletes:
2068 Hypertext Transfer Protocol -- HTTP/1.1 (January 1997)
Obsoleted by:
7230 Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing (June 2014)
7231 Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content (June 2014)
7232 Hypertext Transfer Protocol (HTTP/1.1): Conditional Requests (June 2014)
7233 Hypertext Transfer Protocol (HTTP/1.1): Range Requests (June 2014)
7234 Hypertext Transfer Protocol (HTTP/1.1): Caching (June 2014)
7235 Hypertext Transfer Protocol (HTTP/1.1): Authentication (June 2014)
Updated by:
2817 Upgrading to TLS Within HTTP/1.1 (May 2000)
5785 Defining Well-Known Uniform Resource Identifiers (URIs) (April 2010)
6266 Use of the Content-Disposition Header Field in the Hypertext Transfer Protocol (HTTP) (June 2011)
6585 Additional HTTP Status Codes (April 2012)One document replaced by six and amended by four more, in three directions at once.
There is also search, track for an Internet-Draft’s Datatracker state, errata, iana for registry lookups, and latest. Everything caches locally and --offline never touches the network, which is the behaviour I want from a tool I use on a train.
It installs the way I install everything now:
mise use -g github:davlgd/ietf-toolsWhat it is for
Honestly, curiosity first. Watching the HTTP lineage light up across the sphere, or seeing which documents everything points at, is the kind of thing you cannot get from an index page.
The practical use is the one that started it: working out what is still current. “Is this RFC obsolete, and by what?” is a question with a graph-shaped answer, and until now the way to answer it was to open a lot of tabs.
Both are open source. If a relationship type is missing or a rendering choice annoys you, the issues are open 😉
← → jump to the previous / next post