<div dir="ltr">Now I get the conceptual issue that Richard and Matt are differing on - and it is about actually replacing OpenSSL's versioning concept with semantic versioning compared to adopting semantic versioning principles without actually being precisely a semantic version approach. <div><br><div>The whole concept of semantic versioning is that you define <b>precisely </b>what you mean by a version.</div><div>Everywhere you have the concept of a version you must use the semantic form of a <b>version encoding</b>.</div><div><br></div><div>That is the X.Y.Z[-prerelease][+buildmeta] format that is documented along with the rules for X.Y.Z in terms of your public API.</div><div>And all other information about a version goes into prerelease and into buildmeta. </div><div>Both prerelease and buildmeta are allowed to be a sequence of dot separated alphanumerichyphen combinations.</div><div><br></div><div>This is the point of semantic versioning. All versions for all products are all represented with the same sort of concepts and you know what the rules are for the numeric X.Y.Z handling and the parsing rules for prerelease and buildmeta.</div><div><br></div><div>Our concepts of versioning within OpenSSL if expressed in semantic form MUST fit into this approach.</div><div>No prefixes. No suffixes. Not special additional encoding The idea is consistency.</div><div><br></div><div>When dealing with API issues you only ever need to see X.Y.Z for any code related testing - it precisely identifies a point in time API release.</div><div>There should never be any code ever that varies that requires looking at prerelease or buildmeta in order to perform any action in terms of the code.</div><div><br></div><div>That maps to our concept of OPENSSL_VERSION_NUMBER<br></div><div><br></div><div>For the human reporting we should have the fill concept which is a text string - and that should be OPENSSL_VERSION_TEXT and that means not having anything else within the text other than the actual semantic version.</div><div>The syntax of the semantic version is fixed. </div><div><br></div><div>If you want to keep the concept of a build date in the macro you are calling the version then it must be encoded in that format - or you move that concept out of the macro that is the version.</div><div><br></div><div>Tim.</div></div><div><br></div></div>