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. 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. We need to eliminate FIX - there is no such concept in semantic versioning. And PATCH exists as a concept but in semantic versioning terms it is a number.
That leads to two main choices in our current encoding as to how we achieve that: 1) leave old FIX blank 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) Option 2 offers the *least surprise* 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. 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 *entirely safe* - in that they would be assuming something more conservative rather than less conservative. And leaving the old PATCH blank doesn't hurt anyone. 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. And then when we do a major release update (like 1.1.1) we end up with a MAJOR version change. 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. That is doable - but I also think entirely unnecessary and confusing for our users. Tim
_______________________________________________ openssl-project mailing list openssl-project@openssl.org https://mta.openssl.org/mailman/listinfo/openssl-project