Skip to content

Commit 0463f7a

Browse files
Add the long-horizon roadmap: 64, 99, 128, 256 and beyond
The first 64 languages are built by the core team in sessions of ten; the community takes over from 99. README, LANGUAGES and CHALLENGE link to the new ROADMAP.md. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent dc8a538 commit 0463f7a

5 files changed

Lines changed: 193 additions & 18 deletions

File tree

‎CHALLENGE.md‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,9 @@
44

55
> Italian original: [docs/CHALLENGE.it.md](docs/CHALLENGE.it.md)
66
7-
> **Update, October 2026.** The first public goal is **64 languages** (2⁶),
8-
> followed by 128 and 256, so every milestone is a power of two. See
9-
> [Why 64?](README.md#-why-64) in the README. The 100-language targets below
10-
> reflect the original proposal.
7+
> **Update, October 2026.** Milestones are now 64 (2⁶), 99, 128, 256 and
8+
> beyond, with no deadlines. See [ROADMAP.md](ROADMAP.md). The 100-language
9+
> targets below reflect the original proposal.
1110
1211
**Status:** consolidated project proposal
1312
**Date:** 14 October 2026

‎LANGUAGES.md‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,10 @@
1010
Verification status is computed by CI on every run (`./elc test`) and recorded
1111
in `reports/report.json`. Only `verified` implementations count.
1212

13-
### Next up (goal: 64 languages, then 128 and 256)
13+
### Next up
1414

15-
C, Rust, Prolog, JavaScript, Java, COBOL, FORTRAN, Haskell.
15+
Goal: 64 languages, built in sessions of ten. See the session plan in
16+
[ROADMAP.md](ROADMAP.md#-64-the-first-goal).
1617

1718
## What counts as a distinct language
1819

‎README.md‎

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,14 @@ Each implementation in this repository:
3535
- ✅ **passes the same 87 test vectors** with identical JSON output;
3636
- 🔍 **leaves evidence**: source hashes, environment, per-test results and logs.
3737

38-
Our target is **64 languages**, and then we keep doubling: **128**, **256** and
39-
beyond. [Why 64?](#-why-64)
38+
Our first goal is **64 languages**, then **99**, **128**, **256** and beyond.
39+
See [Why 64?](#-why-64) and the [roadmap](ROADMAP.md).
4040

4141
```text
42-
Goal 2⁶ ▋░░░░░░░░░░░░░░░░░░░ 2 / 64
43-
Next 2⁷ ░░░░░░░░░░░░░░░░░░░░ 2 / 128
44-
Extended 2⁸ ░░░░░░░░░░░░░░░░░░░░ 2 / 256
42+
64 2⁶ ▋░░░░░░░░░░░░░░░░░░░ 2 / 64 ← we are here
43+
99 🍺 ░░░░░░░░░░░░░░░░░░░░ 2 / 99
44+
128 2⁷ ░░░░░░░░░░░░░░░░░░░░ 2 / 128
45+
256 2⁸ ░░░░░░░░░░░░░░░░░░░░ 2 / 256
4546
```
4647

4748
## 🔢 Why 64?
@@ -64,9 +65,11 @@ keeps coming back to**:
6465
is also the largest unsigned 64-bit integer. It is still the classic way to
6566
explain exponential growth.
6667

67-
So we set the bar at 64 languages. After that the ladder stays binary: **128**
68-
is 2⁷, the size of the ASCII table, and **256** is 2⁸, the values of a single
69-
byte.
68+
So we set the bar at 64 languages. Next comes **99**, a toast to
69+
[*99 Bottles of Beer*](https://www.99-bottles-of-beer.net), the classic
70+
collection of one song in a thousand languages. After that the ladder goes
71+
back to binary: **128** is 2⁷, the size of the ASCII table, and **256** is 2⁸,
72+
the values of a single byte.
7073

7174
## 🇮🇹 The algorithm: the Italian Fiscal Code
7275

@@ -146,6 +149,19 @@ Every program speaks the same contract: **JSON in on stdin, JSON out on
146149
stdout, exit code 0 or 1.** Containers run with networking disabled, so the
147150
algorithm really has to be in the code.
148151

152+
## 🛣️ Roadmap
153+
154+
| | Milestone | Why | What happens |
155+
|---|---|---|---|
156+
| ✅ | Foundation | | Spec, 87 test vectors, dockerized runner, CI |
157+
| 🎯 | **64** | 2⁶ | Built by the core team, ten languages per session |
158+
| 🍺 | **99** | 99 Bottles of Beer | Community takes over; dashboard and Guinness application |
159+
| 🔤 | **128** | 2⁷, ASCII | Historical machines and emulators |
160+
| 💾 | **256** | 2⁸, one byte | Formal record attempt, second challenge (SHA-256) |
161+
| 🚀 | **512 → 1024** | 2⁹ → 2¹⁰ | The long tail, and the moonshot |
162+
163+
No deadlines, just milestones. Full plan in [ROADMAP.md](ROADMAP.md).
164+
149165
## 🤝 Contribute a language
150166

151167
The unit of contribution is **one language not yet on the board**.
@@ -183,6 +199,7 @@ the evidence we are collecting.
183199

184200
- [CHALLENGE.md](CHALLENGE.md): vision and operating plan ([🇮🇹 original](docs/CHALLENGE.it.md))
185201
- [SPECIFICATION.md](SPECIFICATION.md): the algorithm and the I/O contract
202+
- [ROADMAP.md](ROADMAP.md): milestones from 64 to 1024
186203
- [LANGUAGES.md](LANGUAGES.md): what counts as a distinct language
187204
- [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md)
188205

‎ROADMAP.md‎

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
# 🛣️ Roadmap
2+
3+
**One algorithm, every language, step by step.**
4+
5+
This is a long-horizon project. We grow by milestones, not deadlines: each
6+
milestone is a number of **verified** languages, and each one unlocks the
7+
infrastructure the next one needs. We move on when a milestone is reached,
8+
not when a date arrives.
9+
10+
```text
11+
✅ ──── 64 ──── 99 ──── 128 ──── 256 ──── 512 ──── 1024
12+
base 2⁶ 🍺 2⁷ 2⁸ 2⁹ 2¹⁰
13+
▲
14+
we are here
15+
```
16+
17+
| Milestone | Why this number | What it unlocks |
18+
|---|---|---|
19+
| ✅ **Foundation** | — | Spec, test vectors, runner, CI, first languages |
20+
| 🎯 **64** | 2⁶, the number of computing | Built by the core team, 10 languages per session; spec 1.0 |
21+
| 🍺 **99** | *99 Bottles of Beer* | Community takes over; dashboard, hidden suite, Guinness application |
22+
| 🔤 **128** | 2⁷, the ASCII table | Historical machines and emulators, spec extensions |
23+
| 💾 **256** | 2⁸, one byte | Formal record attempt, second challenge |
24+
| 🧮 **512** | 2⁹ | Rare and esoteric languages, long-term archive |
25+
| 🚀 **1024** | 2¹⁰, one "kibi" of languages | The moonshot: every language that can run it |
26+
27+
Live progress: [README](README.md) · open work:
28+
[milestones](https://github.com/openapi/every-language-fiscal-code/milestones).
29+
30+
---
31+
32+
## ✅ Foundation (done)
33+
34+
- [x] Translated and published the [challenge](CHALLENGE.md)
35+
- [x] [Specification](SPECIFICATION.md) v0.1.0: algorithm, I/O contract, error codes
36+
- [x] 87 shared [test vectors](test-vectors/), cross-checked by two independent implementations
37+
- [x] Dockerized runner (`./elc`), per-language containers, network disabled
38+
- [x] JSON report and per-language evidence
39+
- [x] GitHub Actions CI
40+
- [x] Python and PHP verified
41+
- [x] Hacktoberfest 2026, with one issue per wanted language
42+
43+
## 🎯 64: the first goal
44+
45+
*2⁶. The word size of every modern processor; see [Why 64?](README.md#-why-64).*
46+
47+
The first 64 languages are built **by the core team**, at a steady pace of
48+
**ten languages per working session**. That gives the community a solid,
49+
varied base to start from, and proves that the runner and the specification
50+
hold up across very different paradigms before anyone else depends on them.
51+
Community Pull Requests are welcome at any time and simply make us faster.
52+
53+
**Sessions** (languages already verified are ticked):
54+
55+
| Session | Languages | Total |
56+
|---|---|---|
57+
| 1 | ✅ Python, ✅ PHP, C, C++, Rust, Go, JavaScript, Java, Ruby, Perl | 10 |
58+
| 2 | C#, Kotlin, Scala, Lua, Swift, Dart, Haskell, OCaml, Elixir, Erlang | 20 |
59+
| 3 | F#, Clojure, Common Lisp, Scheme, Racket, Prolog, Julia, R, Tcl, Groovy | 30 |
60+
| 4 | Bash, AWK, COBOL, FORTRAN, Ada, Pascal, D, Nim, Zig, Crystal | 40 |
61+
| 5 | VB.NET, Octave, Smalltalk, Forth, Raku, PowerShell, Gleam, V, Odin, Standard ML | 50 |
62+
| 6 | Idris, Mercury, Haxe, Vala, Objective-C, FreeBASIC, x86-64 Assembly, Io, Rexx, Chapel | 60 |
63+
| 7 | APL, J, Pony, Hare | **64** |
64+
65+
The order may change if a toolchain turns out to be hard to containerize. A
66+
language that cannot be verified in its session moves to a later one instead
67+
of blocking the others.
68+
69+
**Infrastructure, built along the way.**
70+
- [ ] CI runs only the languages touched by a Pull Request, plus all of them nightly
71+
- [ ] Languages run in parallel in CI
72+
- [ ] Badge, progress bars and [LANGUAGES.md](LANGUAGES.md) generated from `report.json`
73+
- [ ] Contributor credits generated from manifests
74+
75+
**Specification.**
76+
- [ ] Freeze **spec 1.0**: no more changes to existing expected outputs
77+
- [ ] Publish the language-classification rules as final (versions, dialects, supersets)
78+
79+
**Community.**
80+
- [ ] Write-up: "The first 64 languages"
81+
- [ ] Open the issue backlog for the next milestones
82+
83+
## 🍺 99: a toast to 99 Bottles
84+
85+
*The [99 Bottles of Beer](https://www.99-bottles-of-beer.net) project has
86+
collected the same little song in well over a thousand languages since the
87+
1990s, a classic of polyglot programming. At 99 we raise a glass to it, one
88+
step before the symbolic 100.*
89+
90+
From here on the **community** leads: every language beyond the core set is
91+
an open issue waiting for a contributor.
92+
93+
**Infrastructure.**
94+
- [ ] Static dashboard on GitHub Pages: progress, languages, authors, tests, sources
95+
- [ ] Hidden verification suite, run by CI alongside the public one, so that
96+
implementations cannot be tuned to known examples
97+
- [ ] Tagged releases with a signed evidence bundle (report, hashes, logs)
98+
99+
**Record.**
100+
- [ ] Search for existing Guinness World Records categories
101+
- [ ] Submit the title proposal from [RECORD.md](RECORD.md)
102+
- [ ] Obtain the official guidelines and adapt evidence collection to them
103+
104+
**Community.**
105+
- [ ] Write-up: paradigms, toolchains, surprises
106+
107+
## 🔤 128: the ASCII milestone
108+
109+
*2⁷. The 128 characters of ASCII, the table that taught computers to write.*
110+
111+
**Historical computing.**
112+
- [ ] Support for languages that need emulators or vintage environments
113+
(e.g. DOS, mainframe or 8-bit toolchains in containers)
114+
- [ ] Distinguish **historically verified** implementations from those
115+
**verifiable in current CI**
116+
- [ ] Toolchain recipes preserved in the repository whenever legally possible
117+
118+
**Specification 1.x extensions.**
119+
- [ ] Validate an existing fiscal code
120+
- [ ] Decode the information contained in a code
121+
- [ ] Homocode (*omocodia*) variants
122+
123+
## 💾 256: one byte of languages
124+
125+
*2⁸. Every value a byte can hold: one language for each.*
126+
127+
**Record.**
128+
- [ ] Formal record attempt, **only** if the category has been approved and
129+
under the official rules received
130+
131+
**Ecosystem.**
132+
- [ ] Launch the second challenge, `every-language-sha256`, on the same runner
133+
- [ ] Multi-architecture verification (amd64 and arm64)
134+
135+
## 🧮 512: the long tail
136+
137+
*2⁹. Rare, academic and esoteric languages.*
138+
139+
- [ ] Dedicated track for esoteric languages, with classification rules
140+
- [ ] Long-term archive of sources and toolchain images (e.g. Software Heritage)
141+
- [ ] Reproducible rebuilds of every verified implementation from a tag
142+
143+
## 🚀 1024: the moonshot
144+
145+
*2¹⁰. One "kibi" of languages.*
146+
147+
Every programming language that can still be run, running the same algorithm
148+
and passing the same tests. We may never get there, and that is fine: the
149+
journey is the project.
150+
151+
---
152+
153+
## How the roadmap evolves
154+
155+
- A milestone is **reached** when the number of `verified` languages in the CI
156+
report on `main` reaches it.
157+
- Infrastructure items may land earlier than their milestone. They are listed
158+
where they become **necessary**.
159+
- Changes to this roadmap are proposed through issues or Pull Requests.

‎docs/CHALLENGE.it.md‎

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,9 @@
22
## Un algoritmo, tutti i linguaggi del mondo
33
### Progetto open source promosso da Openapi — Specifica e piano operativo
44

5-
> **Aggiornamento, ottobre 2026.** Il primo obiettivo pubblico è **64 linguaggi**
6-
> (2⁶), seguito da 128 e 256: ogni traguardo è una potenza di due. Vedi
7-
> [Why 64?](../README.md#-why-64) nel README. Gli obiettivi di 100 linguaggi
8-
> riportati sotto fanno parte della proposta originale.
5+
> **Aggiornamento, ottobre 2026.** I traguardi ora sono 64 (2⁶), 99, 128, 256
6+
> e oltre, senza scadenze. Vedi [ROADMAP.md](../ROADMAP.md). Gli obiettivi di
7+
> 100 linguaggi riportati sotto fanno parte della proposta originale.
98
109
**Stato:** proposta progettuale consolidata
1110
**Data:** 14 ottobre 2026

0 commit comments

Comments
 (0)