<div dir="ltr">If you accept that we have a MAJOR.MINOR.FIX.PATCH encoding currently documented and in place and that the encoding in OPENSSL_VERSION_NUMBER is documented then the semantic versioning is an easy change.<div>We do not need to change our encoding of MAJOR.MINOR - that is documented and fixed. We just need to start using it the way semantic versioning says we should.</div><div>We need to eliminate FIX - there is no such concept in semantic versioning.</div><div>And PATCH exists as a concept but in semantic versioning terms it is a number.</div><div><br></div><div>That leads to two main choices in our current encoding as to how we achieve that:</div><div>1) leave old FIX blank</div><div>2) move old PATCH to old FIX and leave old PATCH blank (i.e. old FIX is renamed to new PATCH and old PATCH is eliminated)</div><div><br></div><div>Option 2 offers the <b>least surprise</b> to users - in that it is how most users already think of OpenSSL in terms of a stable API - i.e. our current MAJOR.MINOR.FIX is actually read as MAJOR.MINOR.PATCH or to be more precise our users see FIX and PATCH as combined things - they don't see our MAJOR and MINOR as combined things.</div><div><br></div><div>Under option 2 it does mean anyone that thinks a change of our current MINOR means an ABI break would be interpreting things incorrectly - but that interpretation is <b>entirely safe</b> - in that they would be assuming something more conservative rather than less conservative. And leaving the old PATCH blank doesn't hurt anyone.</div><div><br></div><div>I don't think that moving to semantic versioning requires us to change our encoding of OPENSSL_VERSION_NUMBER except to move PATCH to FIX - as one of those concepts disappears.</div><div>And then when we do a major release update (like 1.1.1) we end up with a MAJOR version change.</div><div><br></div><div>Alternatively, we can elect to effectively say the OPENSSL_VERSION_NUMBER encoding we have documented and supported is subject to yet another change where we reinterpret things.</div><div>That is doable - but I also think entirely unnecessary and confusing for our users.</div><div><br></div><div>Tim<br></div><div><br></div></div>