Versioning Sucks

Has anyone else realised that software versioning is really complicated? There are so many different approaches and implementations it can be hard to get your head around.

There is a lot to take in. Then we have to deal with bad implentations of versioning systems.

Why don’t we just use an incremental number? Anytime there is a minor version, patch, build, bugfix… anything, we can just increment the number.

The only thing that doesnt really work is major versions.

On that note, I think we should get rid of major versions. If you break the API of the project, give it a new name. There is nothing wrong with calling a project awesome-project-2 if you can’t think of a new creative name. Creating an entirely new project conveys the fact that any other project’s API is not supported better than any versioning system ever could.

So what will this look like? Let’s say I have a project awesome-project the sbt signature for this project will look like:

libraryDependencies += "eamontaaffe" %% "awesome-project" % "9"

The npm versioning will look like this.

{
  "dependencies": {
    "awesome-project": "3 - 7"
  }
}

Let me know what you think, is this a terrible idea? ¯\_(ツ)_/¯

I’m Eamon, a software developer out of Melbourne, Australia. You can email me, find me on Github or reach out on LinkedIn.