May 25, 2024 — I just pushed version 93.0.0 of my language Scroll. Version 93!
Why so many versions? I use Tom Preston-Warner's Semantic Versioning (2011).
In particular, I followed his advice in Major Version Numbers are Not Sacred.
Pushing so many major versions was no big deal because Scroll was a toy.
But Scroll now has a novel feature that makes it very useful.
I need to decide if I should ship fewer major versions with higher quality.
Let's do some research on what other programming language developers are doing.
I added version number data to over 600 languages in PLDB.
0Min | 1Median | 2.9Average |
73%< v3 | 95%< v10 | 99%< v30 |
Wow! No languages in the top 400 have surpassed 30 major versions.
Erlang, at version 27, ranks #34 and is the only top 100 language with more than 25 major versions.
My language, at version 93, is a huge outlier. Maybe I've done something wrong 😳.
Let's plot version number by rank.
We can see that there is a positive correlation between how many major versions a language has and how popular it is.
However, we can also see that 5 of the top 10 languages are on version 5 or less.
We can also see that ~15 of the top 25 languages are on version 5 or less.
If you have a great model of your core ideas, you can ship fewer major versions.
No. As you can see:
TIL I did SemVer wrong. In particular, I missed this part:
If you’re changing the API every day you should...still be in version 0.y.z
Whoops!
It took me about 5 years to figure out what Scroll 1.0.0 should be. I should be on version 0.93.0, not version 93.0.0.
No big deal. I will soon release Scroll 100.0.0, and from then on will have far fewer major releases.
An ounce of deep thought on the core of your language is worth a pound of major releases!
I learned a few things today. Hope you did too!