| ▲ | necovek 5 days ago | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Developers are "users" (of a library, API, tool...), and "API functionality" is a subset of "functionality": what purpose would such distinction serve? For example, in end user desktop software (say a text editor), how would you indicate a security bug fix for an old version v2023-11-02 without forcing users to pay for a new version of v2025-09-15? Again, versioning is a tool, and depending on the release structure of a project, SemVer might work well or it might not (including for APIs/libraries). | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| ▲ | rswail 4 days ago | parent [-] | ||||||||||||||||||||||||||||||||||||||||||||||||||||
Semver is semantic. It tells you about the changes in the API, not in the implementation. So it's relevant to the users (ie developers) of that API. If I fix a bug in the implementation that doesn't affect the API itself, the semver doesn't change. So it works to define the versioning of an interface. Release versioning (like vyyyy-mm-dd) is about SRE and configuration management, it's about documenting what is actually operating in production. User versioning is about user expectations. If you're doing a security bug fix, then a) it should be free to users affected, and b) it should be documented as the reason for the release. For a security bug fix of v2023-11-02, you can add a "hotfix" extension to the numbering so v2023-11-02.001 or equivalent. | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||