Too many low-level crates are still at 0.x.x and unstable

This is endemic, and probably requires a sea change in how we treat open source developers to resolve.

Big honking edit: Your frustration with breaking changes, not clearly communicated and at your expense as a user, is absolutely valid, and I encourage you to talk to the maintainers of those libraries to share with them how their choices have affected you. Communication solves many things, or at least raises awareness. End big honking edit.

Under semver, moving to version 1.0 represents a strong commitment: it's the first major version where the author promises not to make a breaking API change. Up to that point, during the zero major version, the author hasn't made that promise and probably hasn't even had to think about the compatibility implications of changes. Adopting an API "permanently" is a high psychological and social barrier, and demands additional work from then onwards, in perpetuity, or at least until the library is no longer maintained at all.

Most of the people you're implicitly asking to commit to an API would be making that promise entirely at their own cost. We do not, habitually, pay these developers, or volunteer our time to audit changes for compatibility risks, or otherwise offer much in return for a developer who releases version 1.0. We only ask that they take on additional work, that they're excused from so long as the version number starts with a zero.

Semver at least makes this explicit - zero versions are expressly permitted to have breaking changes at any time. Changing dev culture to consider compatibility versions from the first time code is released to users, rather than when it's "done," might work, but that's a long term social engineering project. In specific cases, appealing to the author to release version 1 might work, but only case by case.

The Rust community is in absolutely no position to dictate to library authors that their crates must go to 1.0.0 or that an author must do uncompensated work. If you want to take on that work, in many cases you're free to - all three crates are MIT licensed, so you can release nagle-argparse 1.0.0 if you so choose - but I can't support the idea that tailhook should be told that if they don't release 1.0.0, someone else will and the crates.io registration will be taken away, for example. And, by the same token, we absolutely cannot demand that you rely on development releases of anything, either.

21 Likes