Bad Versioning For Libraries
Bad Versioning For Utilities
Bad Versioning For Games
Bad Versioning is better than Semantic Versioning
When someone compares two versions of a piece of software that uses SemVer, they don't know anything about the actual difference between those versions of the software. All they know is that, for some definition of compatibility (and probably an arbitrary/useless one), versions with the same major number are compatible in one direction. They don't know how much compatibility there is, how large any of the changes between the two versions are.
Because any apparent "incompatible" change changes the major version number. Any. If it doesn't, then they're not using SemVer. Even the minor version number doesn't help. Adding new features can go with large architectural changes that accidentally break functionality. Most programs do not have well defined interfaces, and behavior can be changed in ways that, in practice, break users, without actually being considered incompatible. This is not an oddity. In practice, this is the norm.
Semantic Versioning promises much and delivers only the bare minimum needed to allow the linux distro culture of misusing dynamic linking to go on turning, and in the process, destroys the purpose of version numbers. Only one digit is actually useful.
With bad versioning, two entire digits are useful. This is a blessing. Now, just like you should, you only have to do an equality check, not gamble that a minor version update is actually forwards compatible like it promises it is. If a platform does not provide the specific necessary version of a library, it should. There's nothing weird about having multiple versions of the same library on the same system, folks, and distros already do, as they should, backport security fixes.
How Do We Handle Linking Compatibility?
Stop Misusing Version Numbers For Linking Compatibility, They Don't Actually Tell You What You Want And They Don't Handle Backports Or Forks In The First Place. Make a real system for handling linking compatibility, one that's not inherently too simple to handle it.