4 ms·
> If your users have the ability to actively choose what version of your software they're using, it works. I don't think SemVer is about choosing which version
by Vinnl 6y ago
> If your users have the ability to actively choose what version of your software they're using, it works.
I don't think SemVer is about choosing which version to use; it's about being able to plan the impact of upgrades. So the only requirement really is for your users to be able to actively choose when to upgrade.
Which does still mean that breaking your API should be avoided: all a major version release does is communicating to your users that it is likely to be more work than a non-major upgrade, not actually lessen the work.
See also https://vincenttunru.com/semver-explained https://vincenttunru.com/semver-explained
I also don't buy this:
> Semver throws a complexity wrench in what would otherwise be straight-forward automated releases.
SemVer is part of proper communication with your users. So is a proper changelog that explains how a release will impact them. If you have a properly updated changelog, defining the scope of the version upgrade is trivial; if not, you have the task of updating the changelog as a wrench in your release anyway.
- ColeyG 6y agoIt seems like people think Semver is some sort of magic. I totally agree it should just be about release communication.
- jdmichal 6y agoI think you misinterpreted the part about automation. I think the argument is: How does an automated build determine what version number to assign the build? The answer is generally that a human has to be involved. This follows from the preceding sentence, emphasis mine: > Another small note, when dealing with automated CI/CD pipelines, the developer must always specify the semver to the automation.
- Vinnl 6y agoYeah, but I don't think it's a problem that a human is involved - someone has to tell the user what will be in the release. That needn't necessarily be at the time of the release, btw. If you have a consistent process to update your changelog, then if you do have some completely automated release system that just releases every x time, it can simply look at the changelog to determine what version number to give it.