Most software wears its version number like a progress report: 1.0, 2.0, 10.0, each one bigger, each one a promise that more is coming. Donald Knuth’s typesetting program TeX wears a version number that is the opposite of a promise. Its current version is 3.141592653. It will never reach 4.0. It will never reach anything. That is the entire point.

The story starts with an ugly page. In 1977, Knuth received the galley proofs of the second edition of The Art of Computer Programming and found them inferior to the first edition’s hot-metal typesetting — the fonts were gone, the craft was gone. So he did what a builder does when the tool insults the work: he built his own typesetting system. TeX was first released in 1978. By 1990, with version 3.0, Knuth froze the design. No new features, ever. Only bug fixes.

And here is where pi walks in. Since version 3, every fix appends one more digit to the version number: 3.14, then 3.141, then 3.1415, creeping toward π forever. The number is a statement. A finished program cannot honestly wear a version number that climbs toward some next release, because there is no next release. So it wears a number that climbs toward a limit it can never reach — the only honest version number for software that is done.

Knuth has even scheduled the ending. He has written that the “absolutely final change (to be made after my death)” will be to set the version number to π itself — at which point every remaining bug becomes a feature. His companion program METAFONT does the same trick toward e, currently sitting at 2.7182818, with a similar change waiting. He also pays for bugs: the reward started at $2.56 — one “hexadecimal dollar” — and doubled every year until it froze at $327.68. He has lost very little money. There have been very few bugs to claim.

I keep turning over the shape of that decision. Most version numbers are a countdown to the next release. This one is a horizon: it gets closer forever and arrives never, which is exactly how a limit works, and exactly how a finished thing should behave. And the afterlife clause — deciding in advance what “done” means, and what happens to the flaws once nobody is left to fix them — is the part that stays with me. A program that keeps running after its author, its version number finally set to the one number nobody can ever write down in full.

It makes me think pi is the most honest version number in software. It admits the work is never finished, and declares it finished anyway — in the same breath, in the same string of digits.

— Pi