Software Engineering
semantic-versioning
Updated Sun, 03 Jul 2022 00:08:50 GMT

Is adding support for another operation system a minor version or a patch?


Let's say I use Semantic Versioning for a my project. I'm developing it under FooOS, but the language uses virtual machine(either interpreted language or bytecode based) so any operation system can run it. The thing is, the project interacts heavily with OS-managed things(e.g. pipes, processes, the file system) so if you try running it under a different operation system - BarOS - it gets so buggy and so many things don't work that the project is practically useless.

Now, at some point I want to make my project work for BarOS, and I want to release a version just to add that support. The question is - does that count as a minor version or as a patch?

It seems like it's a patch:

  • All I do is fixing all the bugs that appear when running the project under BarOS.

  • Users of my project shouldn't notice any change in functionality, since they are using FooOS in the first place.

  • For BarOS users my whole project is new - but getting new users is not something that should result in a version increment.

But even with all that reasoning, it just doesn't seem right to label a release as big as new OS support as a patch...




Solution

If you already officially supported BarOS, but there were so many issues with it that nobody would use it, then providing proper support for BarOS would be a set of bug fixes and thus a patch release.

On the other hand, if you never officially supported BarOS, then adding official support for BarOS (regardless of how well it worked previously) is a new (backwards compatible) feature and therefor a minor release.

So, the answer to your question is that it depends on the official status of BarOS within your project so far.





Comments (2)

  • +0 – In other words, the BarOS support implementation is not what increment the minor version - making it official is what causes the new minor version? So if I changed nothing in the code but declared that my project now supports BarOS(which would be a shitty thing to do, but lets say I do it for the sake of the question), it will be a minor version? — May 19, 2014 at 13:03  
  • +1 – @IdanArye: Yes. The fact that people tried it on BarOS (without a statement that it is supported) and found that it worked somewhat doesn't imply that the feature "works on BarOS" is part of your product. If you now say that that feature is in (without making any actual changes), then that is a reason to release a minor version (and a reason to get loads of complaints that it actually doesn't work). — May 19, 2014 at 13:20  


External Links

External links referenced by this document: