<div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Sat, Sep 22, 2018 at 11:55 AM Viktor Dukhovni <<a href="mailto:openssl-users@dukhovni.org" target="_blank">openssl-users@dukhovni.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">this is an ad-hoc encoding with monitonicity as the<br>
the only constraint.<br></blockquote><div><br></div><div>If you start from the position that the encoding of OPENSSL_VERSION_NUMBER is free to change so long as the resulting value is larger than what we have been using for all previous versions then a whole range of options come into play.</div><div>But we shouldn't assert that we aren't changing the meaning of OPENSSL_VERSION_NUMBER - and that is what others have been doing on this thread - and what your previous email also asserted.</div><div><br></div><div>It is a <b>breaking</b> change in our comments and our documentation and in what our users are expecting. Basically it is an API and ABI change - we said what the number means and we are changing that.</div><div>The impact of the breaking change for those using it for pure feature testing for API difference handling (where it isn't actually parsed) can be minimised just by always having a larger number that all previous uses.</div><div>The impact of the breaking change on anyone actually following our documented encoding cannot.</div><div>i.e. <a href="https://github.com/openssh/openssh-portable/blob/master/openbsd-compat/openssl-compat.c#L42-L67">openssh</a> as one example Richard pointed out.</div><div>That isn't the only code that actually believes our header files and documentation :-)</div><div><br></div><div>Semantic versioning is about MAJOR.MINOR.PATCH with specific meanings. There is no FIX concept as such. There is PRERELEASE and METADATA.</div><div>One of our existing concepts disappears - we have MAJOR.MINOR.FIX.PATCH currently and we also encode STATUS as a concept (which we can map mostly to PRERELEASE). </div><div><br></div><div>And if we are changing to fit into semantic versioning we need to use its concepts and naming and not our present ones. </div><div>A merge of concepts pretty much goes against the point of semantic versioning. </div><div><br></div><div>Tim.</div><div><br></div></div></div>