<div dir="ltr"><div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Fri, Sep 21, 2018 at 7:58 PM Richard Levitte <<a href="mailto:levitte@openssl.org">levitte@openssl.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Our FAQ says that such changes *may* be part of a major<br>
release (we don't guarantee that breaking changes won't happen), while<br>
semantic versioning says that major releases *do* incur backward<br>
incompatible API changes.<br></blockquote><div><br></div><div>I think you are misreading the semantic versioning usage - it states when things MUST happen.</div><div>It does not state that you MUST NOT change a version if the trigger event has not occurred.</div><div><br></div><div>Semantic versioning also requires you to explicitly declare what your public API is in a "precise and comprehensive" manner.</div><div>What do you consider the public API of OpenSSL?</div><div><br></div><div>That is pretty much a prerequisite for actually adopting semantic versioning.</div><div><br></div><div>I also think the concept of reinterpreting the current major version number into an epoch as you propose is not something that we should be doing.</div><div>We have defined the first digit as our major version number - and changing that in my view at least would be going completely against the principles of semantic versioning.</div><div>The version itself is meant to be purely X.Y.Z[-PRERELEASE] or X.Y.Z[+BUILDMETA] and your suggested encoding is not that at all.</div><div><br></div><div>What you have is EPOCH.X.Y.Z.FIX.STATUS - where EPOCH and STATUS are not concepts contained within semantic versioning.</div><div><br></div><div>Basically adopting semantic versioning actually requires something different to what has been proposed in my view.</div><div><br></div><div>I would suggest it means our current version encoding in an integer of MNNFFPPS becomes simply MNNFF000 and the information for PP and S is moved elsewhere as semantic versioning defines those concepts differently (as noted above).</div><div><br></div><div>Part of our challenge is ensuring we don't cause unnecessary breakage for users:</div><div><br></div><div>Vendors change the text string to add additional indicators for their variations.</div><div>Otherwise developers use the current integer version for feature testing - and it needs to remain compatible enough.</div><div><br></div><div>I haven't seen any code actually testing the S field within the version or doing anything specific with the PP version - other than reporting it to the user.</div><div><br></div><div>Tim.</div><div><br></div></div></div></div>