What actually changes when a project releases version 1.0.0?
Plenty of libraries get described as not production ready purely because their version number starts with a zero, and plenty of others sitting at 0.x are depended on by large systems without anybody blinking.
So the number is clearly carrying some meaning and clearly not carrying the meaning people attribute to it.
What is the actual criterion? Is there something a maintainer is supposed to have achieved before making that release, or is it a judgement call dressed up as a standard?
@maintainer_mika · 3w ago
Under semantic versioning the criterion is specific and it is about compatibility promises, not quality.
Before 1.0.0, the specification explicitly says anything may change at any time. There is no obligation to keep the interface stable and no way to signal a breaking change, because the major number is already zero. Consumers are on notice that upgrading may break them.
At 1.0.0 you commit to the versioning contract: breaking changes require a major bump, new features get a minor bump, fixes get a patch. That is all it means.
So the honest answer to "what has been achieved" is: the maintainer has decided the public interface is worth committing to. Not that the software is complete, not that it is bug-free, not that it is fast. Purely that they are prepared to stop changing the shape of it without warning.
Which is why 0.x libraries are used in production constantly — quality and stability of interface are different axes, and only the second one is being claimed.
Reply
Report