Zach’s ugly mug (his face)

Zach Leatherman

Semverflation: a new software metric proposal

March 30, 2022

Look, y’all—it is well known that I will not shy from posting a ridiculous tweet. And just as a broken clock is right twice a day, sometimes I post a tweet that arguably deserves escalation from the ephermality of the twitterverse to the slightly more hardened blogoverse… blogverse… okay neither of those terms are good—I digress.

Chrome is now at version 100. React just released version 18. It has me thinking that it might be useful to have a standard metric for software that communicates how fast major versions are released.

Introducing: Semverflation.

How do you calculate a software package’s semverflation?

VersionNumber(newest release)
YearsBetween(newest release, first release)
× 10

For simplicity, the wild west of pre-1.0 releases are counted when calculating the date of the first release.

Here’s a smattering of semverflation calculations:

Releases
Package First Newest Years Version Number Semverflation
Chrome 2008/9/2 2022/3/29 13.57 100 73.6
Safari 2003/1/7 2022/3/13 19.19 15.4 8.0
Firefox 2002/9/23 2022/3/23 19.50 98 50.2
React 2013/5/29 2022/3/29 8.83 18 20.4
Eleventy 2018/1/9 2022/1/8 4.00 1 2.5

What does it mean?

Semverflation takes no position on how well maintained a software package is. A very well maintained package might deliver 100 minor versions and no new major versions (very low semverflation).

A high number is only a measure of the frequency of breaking changes (if the software package adhers to semver). It does not (and can not) measure the volume of breaking changes of a specific major version release.

A low number indicates a measure of stability for the package.

The other thing I like about this metric is that it doesn’t matter how much time has passed between now and the latest release. The semverflation for a retired package will not change over time, if no new releases are being delivered. The semverflation only changes when a new major version is released.

Of course, it’s a little bit wrong to use this metric on web browser releases, who rarely break the web by issuing breaking changes to the platform. But useful for other software packages!

Zach’s ugly mug (his face)

Zach is a builder for the web at IndieWeb Avatar for https://www.netlify.comNetlify. He created IndieWeb Avatar for https://www.11ty.devEleventy (11ty), an award-winning open source site generator. At one point he became entirely too fixated on web fonts. He has given 65 talks in nine different countries at events like Jamstack Conf, Beyond Tellerrand, Smashing Conference, CSSConf, and The White House. Formerly part of Filament Group, NEJS CONF, and NebraskaJS. Read more about Zach »

Previous
Eleventy: Build vs. Serverless vs. Edge
Next
Coding Design Systems episode 11: Design Systems with 11ty

3 Reposts

Fynn BeckerBaldur BjarnasonBasix

Shamelessly plug your related post:

Sharing on social media?

This is what will show up when you share this post on Social Media:

How did you do this? I automated my Open Graph images. (Peer behind the curtain at the test page)