Daily Thought - 2024-05-31
< back to listSemantic versioning is a widespread practice, to manage breaking changes and communicate which releases contain them. Version 2.0 contains breaking changes. Version 2.1 doesn't, nor does any other 2.x release. You don't have to worry again until 3.0.
In my experience, this can work pretty well. But for a large project, it seems to be limiting. There could be new features, that are experimental and still subject to change. Older ones, that are stable and mature. Even older ones that you want to change again, because you now understand all their flaws.
I think that trying to address this all with a single semantic version number might be too coarse-grained. Rust, for example, seems to acknowledge this, by using using additional mechanisms (a nightly channel with unstable features, and the limited but effective edition mechanism). I wonder, if there's a simpler way for Caterpillar.