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:

Package First – Newest Release Years Version Number Semverflation
Chrome 2008/09/02 – 2022/03/29 13.57 100 73.6
Safari 2003/01/07 – 2022/03/13 19.19 15.4 8.0
Firefox 2002/09/23 – 2022/03/23 19.50 98 50.2
React 2013/05/29 – 2022/03/29 8.83 18 20.4
Eleventy 2018/01/09 – 2022/01/08 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!


< Newer
Eleventy: Build vs. Serverless vs. Edge
Older >
Coding Design Systems episode 11: Design Systems with 11ty

Zach Leatherman IndieWeb Avatar for https://zachleat.com/is a builder for the web at IndieWeb Avatar for https://cloudcannon.com/CloudCannon. He is the creator and maintainer of 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 77 talks in nine different countries at events like Beyond Tellerrand, Smashing Conference, Jamstack Conf, CSSConf, and The White House. Formerly part of Netlify, Filament Group, NEJS CONF, and NebraskaJS. Learn more about Zach »

4 Reposts

Fynn BeckerBaldur BjarnasonBasixChristopher Wood

3 Likes

Christopher WoodgcollazoJared C.S.S. White
1 Comment
  1. Christopher Wood

    Christopher Wood

    @zachleat I can definitely see the uses for that in the modern tech workplace. ("You want to use what in production?")As near as I can tell that scores GNU Emacs as 7.7*, interesting thought.https://en.wikipedia.org/wiki/GNU_Emacs#Release_history*Or 0.3 depending on what … Truncated

Shamelessly plug your related post

These are webmentions via the IndieWeb and webmention.io.

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)