Cutting-edge software versioning for minimalists
With software releases at an all-time high, the consensus has never
been clearer: Major versions are over. So what does the past,
present, and future of software versioning look like? Welcome to
ZeroVer 0.0.1.
0verview
Unlike other versioning schemes like Semantic Versioning and
Calendar Versioning, ZeroVer (AKA 0ver) is simple:
Your software’s major version should never exceed the first and most
important number in computing: zero.
A down-to-earth demo:
YES: 0.0.1, 0.1.0dev, 0.4.0, 0.4.1, 0.9.8n, 0.999999999, 0.0
NO: 1.0, 1.0.0-rc1, 18.0, 2018.04.01
In short, software versioning best practice is like the modern
list/array: 0-based.
We’ll leave it to computer scientists to determine how expert coders
wield the power of the “zero-point” to produce top-notch
software. Meanwhile, open-source and industry developers agree:
ZeroVer is software’s most popular versioning scheme for good reason.
Just take a look at the list below. Some thought leaders might
surprise you.
Notable ZeroVer Projects
The growing vanguard of the versioning revolution. Add your project
here.
Project | Stars | First Released | Releases | Current Version | 0ver years |
---|---|---|---|---|---|
dep (Go) | 12,961 | 2017 | 13 | 0.5.4 (2019) | 6.1 |
NeoVIM | 67,093 | 2015 | 38 | 0.9.1 (2023) | 7.7 |
Tor | 3,928 | 2004 | 515 | 0.4.8.1-alpha (2023) | 19.3 |
Vala | 781 | 2009 | 335 | 0.57.0 (2022) | 14.4 |
Onion | 1,953 | 2011 | 11 | 0.8 (2016) | 12.2 |
datadogpy | 559 | 2015 | 56 | 0.45.0 (2023) | 8.4 |
Wheel | 421 | 2012 | 57 | 0.40.0 (2023) | 11.0 |
Magic Wormhole | 16,569 | 2015 | 34 | 0.12.0 (2020) | 8.3 |
docopt | 7,816 | 2012 | 11 | 0.6.2 (2014) | 11.2 |
httpbin | 11,812 | 2014 | 13 | 0.7.0 (2018) | 9.1 |
bottle.py | 8,015 | 2009 | 82 | 0.12.25 (2023) | 14.0 |
hugo | 67,803 | 2013 | 230 | 0.115.0 (2023) | 10.0 |
xhyve | 6,399 | 2015 | 2 | 0.2.0 (2015) | 8.1 |
zeal | 10,532 | 2015 | 10 | 0.6.1 (2018) | 8.2 |
Orc (liborc) | 58 | 2009 | 36 | 0.4.28 (2017) | 14.1 |
Gephi | 5,371 | 2010 | 19 | 0.10.1 (2023) | 13.4 |
vim-airline | 17,286 | 2013 | 11 | 0.11 (2019) | 10.0 |
zsh-completions | 6,078 | 2011 | 38 | 0.34.0 (2022) | 11.6 |
ProsodyIM | 564 | 2008 | 54 | 0.12.3 (2023) | 14.6 |
qtile | 4,103 | 2008 | 34 | 0.22.1 (2022) | 14.8 |
autokey | 2,778 | 2016 | 28 | 0.96.0 (2022) | 6.5 |
bup | 6,961 | 2013 | 37 | 0.33.2 (2022) | 9.8 |
You-Get | 47,650 | 2012 | 157 | 0.4.1650 (2022) | 10.8 |
Ramda | 23,079 | 2013 | 55 | 0.29.0 (2023) | 9.5 |
kubectx | 15,467 | 2017 | 20 | 0.9.4 (2021) | 6.2 |
Music Player Daemon (mpd) | 1,878 | 2004 | 189 | 0.23.13 (2023) | 19.3 |
wkhtmltopdf | 13,278 | 2008 | 50 | 0.12.6 (2020) | 15.1 |
pywinauto | 4,133 | 2006 | 33 | 0.6.8 (2019) | 17.5 |
Perkeep | 6,202 | 2013 | 11 | 0.11 (2020) | 10.1 |
asn1c | 937 | 2014 | 3 | 0.9.28 (2017) | 8.8 |
React Native | 110,402 | 2015 | 468 | 0.72.1 (2023) | 8.3 |
StreamEx | 2,067 | 2015 | 42 | 0.8.1 (2021) | 8.2 |
3proxy | 3,095 | 2014 | 16 | 0.7.1.2 (2015) | 9.2 |
Flow | 21,991 | 2014 | 305 | 0.210.2 (2023) | 8.6 |
JaCoCo | 3,680 | 2009 | 46 | 0.8.10 (2023) | 13.7 |
iodine | 5,204 | 2006 | 14 | 0.8.0 (2023) | 17.0 |
foreman | 5,876 | 2010 | 129 | 0.87.2 (2020) | 13.1 |
Pry | 6,621 | 2010 | 74 | 0.14.2 (2023) | 12.6 |
xonsh | 7,097 | 2015 | 120 | 0.14.0 (2023) | 8.3 |
ccls | 3,422 | 2018 | 31 | 0.20220729 (2022) | 5.1 |
Colyseus | 4,959 | 2016 | 118 | 0.14.17-alpha.1 (2021) | 6.5 |
Teeworlds | 2,138 | 2011 | 22 | 0.7.5 (2020) | 12.4 |
Numba | 8,711 | 2012 | 194 | 0.1.1 (2012) | 10.9 |
XMonad | 3,044 | 2007 | 22 | 0.17.2 (2023) | 16.2 |
Tendermint | 5,523 | 2019 | 243 | 0.37.0-rc2 (2022) | 4.3 |
Cosmos-sdk | 5,268 | 2020 | 278 | 0.50.0-alpha.1 (2023) | 3.1 |
Elm Language | 7,217 | 2013 | 26 | 0.19.1 (2019) | 10.1 |
winapi-rs (Rust) | 1,683 | 2017 | 8 | 0.3.9 (2020) | 5.5 |
Paper.js | 13,797 | 2011 | 63 | 0.12.17 (2022) | 12.0 |
Knex.js | 17,697 | 2013 | 176 | 0.16.2 (2018) | 10.1 |
zoxide | 11,005 | 2020 | 29 | 0.9.1 (2023) | 3.3 |
OpenRC | 1,218 | 2015 | 118 | 0.47.1 (2023) | 8.2 |
Notary | 3,051 | 2015 | 20 | 0.7.0 (2021) | 7.6 |
Enlightenment | 94 | 2012 | 88 | 0.25.3 (2022) | 10.5 |
mpv | 22,781 | 2013 | 82 | 0.35.1 (2023) | 9.9 |
PyTransitions | 4,923 | 2014 | 46 | 0.9.0 (2022) | 8.7 |
Stylus | 11,098 | 2011 | 170 | 0.59.0 (2022) | 12.4 |
nw.js | 39,684 | 2012 | 330 | 0.14.0 (2016) | 11.3 |
Video Speed Controller | 3,398 | 2019 | 10 | 0.7.3 (2022) | 3.5 |
Pyre | 6,387 | 2018 | 83 | 0.9.18 (2023) | 5.2 |
Qiskit | 3,015 | 2018 | 95 | 0.43.2 (2023) | 4.6 |
graphile-worker | 1,290 | 2019 | 39 | 0.14.0-rc.0 (2023) | 4.3 |
Monero | 7,960 | 2014 | 63 | 0.18.2.2 (2023) | 8.8 |
MultiMC Launcher | 3,931 | 2014 | 46 | 0.6.16 (2022) | 9.5 |
ASCEND | — | 1978 | — | 0.9.8 (2012) | 45.1 |
Dash | — | 1997 | — | 0.5.9.1 (2016) | 26.1 |
docutils | — | 2002 | — | 0.19 (2022) | 21.5 |
Compiz | — | 2006 | — | 0.9.13.1 (2016) | 17.1 |
distlib | — | 2013 | — | 0.2.6 (2017) | 10.3 |
PuTTY | — | 1999 | — | 0.7 (2017) | 24.5 |
MAME | 2,796 | 1997 | 196 | 0.196 (2018) | 26.4 |
Dwarf Fortress | — | 2006 | 142 | 0.44.09 (2018) | 16.9 |
Cataclysm: Dark Days Ahead | 1,775 | 2013 | 15 | 0.C (2015) | 10.4 |
Window Maker | — | 1997 | 92 | 0.95.8 (2017) | 26.5 |
ReactOS | 4,912 | 1996 | 55 | 0.4.9 (2018) | 27.5 |
OpenStreetMap API/website | — | 2004 | 14 | 0.6 February 2021 (2021) | 18.9 |
three.js | 75,000 | 2013 | 133 | 0.13 (2021) | 10.0 |
google-api-client (ruby) | 2,400 | 2010 | 201 | 0.53.0 (2021) | 12.7 |
rand | 1,411 | 2015 | 64 | 0.8.5 (2022) | 8.4 |
esbuild | 35,574 | 2020 | 377 | 0.18.11 (2023) | 3.2 |
suhosin | — | 2006 | — | 0.9.38 (2015) | 16.8 |
Pure Data | — | 1996 | — | 0.52-1 (2021) | 27.1 |
XeTeX | — | 2004 | — | 0.999992 (2020) | 19.2 |
PipeWire | — | 2017 | — | 0.3.72 (2023) | 6.0 |
gettext | — | 1987 | — | 0.22 (2023) | 36.5 |
At the time of writing, the list is somewhat biased toward Python
projects. If you know of some prominent ZeroVer projects, submit them
here!
Featured Use Cases
These flagship ZeroVer projects know how to get the most out of their
zeroes.
HashiCorp Vault and Terraform
HashiCorp’s Vault project aims to be an enterprise secret
management service, comprising the bedrock of a modern,
microservice-oriented environment. And that’s what makes it one of
ZeroVer’s most important adherents.
Low in the stack, low in the version. That’s the HashiCorp way.
To drive the point home, even further down the stack, HashiCorp’s
Terraform also complies with ZeroVer’s cutting-edge
versioning scheme. With Vault and Terraform, HashiCorp demonstrates
industry recognition of the importance of ZeroVer in infrastructure.
HashiCorp knows ZeroVer works, especially when the projects are
business-critical products, sold and supported.
TOML
Versioning schemes like SemVer and CalVer attempt
to guide developers away from the natural light of ZeroVer. In a
surprising and exciting move, the creator of SemVer
himself saw the light of ZeroVer with his new project, TOML.
From 2013 until 2021, TOML was a model ZeroVer user, barely cresting
half a version. Unfortunately, Tom’s passing of the
TOML maintainer torch resulted in the confusing situation
where new maintainers reverted to Tom’s outdated 2011-era versioning philosophy:
“If your software is being used in production, it should probably already be 1.0.0.”
Despite this turn, the ZeroVer academy salute Tom for showing
great versioning fortitude in forestalling TOML’s major version uptick
for so long. Thanks Tom!
Apache Kafka
One of the strongest brands in modern software also subscribed to the
strongest versioning scheme. To understand the version scheme, we have
to understand the name, as the software shares quite a bit in common
with its namesake.
Apache Kafka was named after Franz Kafka, who
lived as an author in turn-of-the-20th-century Austria. Like the
project named after him, he was slow to start,
inconsistent in delivery, and left a mess of
unpublished work after a tragically early
death. Most experts have come to agree, for all their complexity and
absurdity, Kafka’s writings have been influential, despite the
prevalence of bugs. Still, true consensus is only found
in the one true Kafka fact: most invocations of the name “Kafka” are
attempts at appearing smart by those with relatively little experience
on the topic.
So how does ZeroVer fit in to the Kafka brand? Whereas the Kafka name
mirrors his writing style, for over four years, Apache Kafka’s ZeroVer
policy mirrored Franz Kafka’s own life and relationships: short,
intense, and rarely conjugated or
consummated.
ZeroVer: the most Kafkaesque versioning scheme.
OpenSSL
Has there ever been a library more auspicious? By now it should come
as no surprise that OpenSSL has its roots in ZeroVer.
While no longer technically a ZeroVer project, OpenSSL held
out from 1998 to 2010 before finally succumbing to 1.0. What happened
after that is beyond the scope of this document, but let it serve as a
warning to those who might stray beyond 0.
In the good old days of 0ver OpenSSL, the project managed to change its name (from
SSLeay) and implementation technology (from
Perl to C), not to mention run through half the
alphabet in micro versioning.
That’s the power of a streamlined and minimal ZeroVer version.
Selected Emeriti
Dearly departed from the school of ZeroVer, either from above or from
legend. We remember them fondly.
Project | Stars | First Released | 0ver Releases | Last 0ver release | 0ver years |
---|---|---|---|---|---|
semver (Rust) | 490 | 2014 | 35 | 0.11.0 (2021) | 6.7 |
Apache Kafka | 25,273 | 2013 | 53 | 0.11.0.3-rc0 (2017) | 4.3 |
Minikube | 26,790 | 2016 | 52 | v0.35.0 (2019) | 2.8 |
Arrow (Python) | 8,328 | 2013 | 45 | 0.17.0 (2021) | 7.8 |
Home Assistant | 61,322 | 2015 | 686 | 0.118.5 (2020) | 5.3 |
Nim | 15,194 | 2012 | 24 | v0.20.2 (2019) | 7.6 |
Windows Terminal | 89,378 | 2019 | 40 | v0.11.1333.0 (2020) | 1.0 |
Bitcoin | 70,195 | 2009 | 258 | v0.21.2rc2 (2021) | 11.7 |
Caddy | 47,917 | 2015 | 47 | v0.11.5 (2019) | 4.0 |
Werkzeug | 6,391 | 2007 | 61 | 0.16.1 (2020) | 12.2 |
Cython | 8,043 | 2008 | 175 | 0.29.35 (2023) | 14.8 |
TOML | 18,467 | 2013 | 6 | v0.5.0 (2020) | 7.4 |
Flask | 63,468 | 2010 | 24 | 0.12.5 (2018) | 8.0 |
SciPy | 11,421 | 2001 | 92 | v0.19.1 (2017) | 16.2 |
Pandas | 38,877 | 2011 | 94 | v0.26.0.dev0 (2020) | 8.9 |
PyTorch | 68,394 | 2016 | 17 | v0.4.1 (2018) | 2.1 |
HTTPie | 28,274 | 2012 | 30 | 0.9.9 (2018) | 6.7 |
scikit-learn | 54,948 | 2010 | 90 | 0.24.2 (2021) | 11.7 |
certbot | 30,015 | 2015 | 83 | v0.40.1 (2019) | 4.2 |
sshuttle | 10,057 | 2015 | 12 | v0.78.5 (2020) | 4.5 |
Theano | 9,751 | 2011 | 27 | rel-0.10.0beta4 (2017) | 6.3 |
Bokeh | 17,708 | 2013 | 44 | 0.13.0 (2018) | 5.4 |
rq | 8,985 | 2012 | 47 | v0.13 (2019) | 7.0 |
drone | 27,018 | 2014 | 30 | v0.8.10 (2019) | 5.0 |
HashiCorp Terraform | 37,900 | 2014 | 195 | v0.15.5 (2021) | 6.9 |
HashiCorp Nomad | 13,718 | 2015 | 126 | v0.12.12 (2020) | 5.4 |
HashiCorp Vault | 27,957 | 2015 | 65 | v0.11.6 (2018) | 3.5 |
html5lib-python | 1,037 | 2007 | 15 | 0.999999999 (2017) | 10.9 |
MyPy | 15,635 | 2014 | 72 | v0.991 (2023) | 8.2 |
asn1crypto | 294 | 2015 | 29 | 0.24.0 (2019) | 4.2 |
Julia | 42,712 | 2013 | 63 | v0.7.0 (2018) | 5.5 |
Flatpak | 3,761 | 2015 | 89 | 0.99.3 (2018) | 3.4 |
Meson Build System | 4,742 | 2013 | 135 | 0.64.1 (2022) | 9.8 |
Wekan | 18,682 | 2015 | 99 | v0.99 (2018) | 2.7 |
runc | 10,498 | 2015 | 12 | v0.1.1 (2016) | 0.9 |
MechanicalSoup | 4,404 | 2014 | 23 | v0.12.0 (2021) | 6.6 |
Sway Window Manager | 12,567 | 2016 | 41 | 0.15.2 (2018) | 2.0 |
Pilosa | 2,466 | 2017 | 29 | v0.10.1 (2018) | 1.4 |
fail2ban | 8,364 | 2004 | 62 | 0.11.2 (2022) | 18.0 |
ClamAV Antivirus | 3,029 | 2007 | 177 | clamav-0.105.2 (2022) | 15.7 |
dateparser | 2,305 | 2014 | 20 | v0.7.6 (2020) | 5.9 |
rollup | 23,646 | 2015 | 260 | v0.68.2 (2018) | 3.6 |
VS Code C/C++ extension | 5,122 | 2017 | 109 | 0.30.0-insiders5 (2020) | 3.5 |
React | 209,824 | 2013 | 47 | 0.14.10 (2019) | 5.8 |
Rake | 2,251 | 2011 | 2 | v0.9.2.2 (2014) | 2.6 |
Chocolatey | 9,171 | 2015 | 60 | 0.12.1 (2022) | 7.1 |
PHPStan | 11,963 | 2016 | 160 | 0.12.100 (2021) | 5.3 |
Nuitka | 9,196 | 2011 | 285 | 0.9.6 (2022) | 10.9 |
GoReleaser | 11,795 | 2016 | 468 | v0.184.0 (2021) | 4.9 |
axios | 100,759 | 2014 | 59 | v0.27.2 (2022) | 7.8 |
Forge | 4,741 | 2013 | 129 | 0.10.0 (2022) | 8.6 |
Stellarium | 4,856 | 2017 | 37 | v0.22.2 (2022) | 5.5 |
Semgrep | 8,357 | 2020 | 156 | v0.123.0 (2022) | 2.8 |
Datasette | 7,943 | 2017 | 131 | 0.64.3 (2022) | 5.0 |
LocalStack | 47,594 | 2016 | 50 | v0.14.5 (2022) | 5.6 |
globalid (ruby) | 1,090 | 2014 | 18 | v0.6.0 (2021) | 7.3 |
Inkscape | — | 2000 | — | 0.92.5 (2020) | 19.7 |
OpenSSL | 6,706 | 1998 | 51 | 0.9.8n (2010) | 11.3 |
Factorio | — | 2012 | — | 0.18.47 (2020) | 7.6 |
pg (Ruby) | — | 2008 | 123 | 0.21.0 (2017) | 9.4 |
slrn | — | 1994 | — | 0.9.9p1 (2012) | 18.4 |
yup | 20,663 | 2015 | 94 | v0.32.11 (2020) | 5.7 |
With any luck, these projects will realize their folly.
More info
Check out the About page.