Transition to semantic versioning

You may have noticed two things.

First, we released several versions recently. Gephi 0.9.2 was released in September 2017. Then the version 0.9.3 in March 2022, with a 4+ years hiatus. Then 0.9.4 three weeks ago, in April 2022. Then 0.9.5 a week ago, in May. What is going on?

Second, the splash screen. Version 0.9.1 and 0.9.2 were like this:

Then version 0.9.3 changed color, to mark the end of the hiatus. It was somehow a big change.

…but since version 0.9.4 it just features the version number 0.9 (without the last bit):

What is going on?

We are transitioning to semantic versioning

Semantic versioning is a certain logic to attribute version numbers. It uses three numbers:

  1. The major version number. It is incremented when the new version breaks compatibility. It matters to the user because they may not want to upgrade, or not yet, because it may break for them.
  2. The minor version number. It is incremented when features are added, but in a compatible way. The user generally wants to upgrade, but may not like the changes, so we need a way to refer to that specific version.
  3. The patch number. It is incremented when it is just bug fixes. The user always wants to upgrade.

So far, Gephi was not versioned that way. In part because numbers have a cultural meaning. For example, 0.9 feels like we are getting close to version 1.0, and in many ways we are getting closer, but at the same time this does not have to do with the fact that we have release about 10 major versions. If it takes us 15 steps, then so be it. The next minor version will be 0.10 – which is not like version 0.1! Weird, but version numbers do not work like decimal numbers.

Semantic versioning is a reasonable and safe way to version, and we are getting there, but not in one go. We will only fully do that from version 1.0.0, which requires meeting a number of goals on our road map. Nevertheless, we need to be able to push bug fixes to everyone, and for that, the best is to use the patch number. Which is why we had two more versions in just a month. But it remains less dramatic than the move from 0.9.2 to 0.9.3, which is why we removed the mention of the patch number from the splash screen. Like for semantic versioning, new patch versions should not feel like new versions to the user. And importantly, patch versions are pushed to all users through the automatic update mechanism. So to recap, it works like this:

As final word, you may wonder: why not have the post-hiatus version numbered 0.10.0 instead of 0.9.3? You’d be totally right! It should have been. We did not realize it soon enough, unlike the most savvy members of our community. Oops! But we’re doing it now. Better late than never 🙂

One Comment

Leave a comment