<div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div dir="ltr"><div class="gmail_quote"><div dir="ltr">On Fri, Sep 21, 2018 at 9:02 PM Matt Caswell <<a href="mailto:matt@openssl.org">matt@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">I think this is an incorrect interpretation of Richard's proposal. The<br>
OPENSSL_VERSION_NUMBER value is an *integer* value. It does not and<br>
cannot ever conform to semantic versioning because, because version<br>
numbers in that scheme are *strings* in a specific format, where<br>
characters such as "." and "-" have special meanings.<br></blockquote><div><br></div><div>It is the version number. We have it in two forms within OpenSSL from a code perspective  - we have an integer encoding and a text string.</div><div>They are precisely what semantic versioning is about - making sure the versioning concept is represented in what you are using versioning for.</div><div><br></div><div>For OpenSSL, codewise we have two macros and two functions that let us access the build-time version of the macros:</div><div>  OPENSSL_VERSION_NUMBER<br></div><div>  OPENSSL_VERSION_TEXT<br></div><div>  OpenSSL_version_num()</div><div>  OpenSSL_version()</div><div><br></div><div>We also separately have another form of version number - for shared libraries:<br></div><div>The macro:<br></div><div>  SHLIB_VERSION_NUMBER<br></div><div><br></div><div>We also encode the version number in release packages too.<br></div><div><br></div><div>What semantic versioning is about is sorting out how we represent the version. </div><div>It should impact both OPENSSL_VERSION_NUMBER and OPENSSL_VERSION_TEXT and it should be consistent.</div><div><br></div><div>For the semantic versioning document the status indicator is handled in the pre-release indicator.</div><div>We could limit that to a numeric number and have it in the OPENSSL_VERSION_NUMBER but I don't think that has helped and semantic versioning strictly defines precedence handling.</div><div><br></div><div>So I would see the simple mapping from semantic versioning very differently to Richard's write up - and in fact encoding something rather differently into the OPENSSL_VERSION_NUMBER to my reading and thinking actually goes against the principles of semantic versioning. </div><div><br></div><div>i.e. OPENSSL_VERSION_NUMBER should be X.Y.Z and OPENSSL_VERSION_TEXT should be "X.Y.Z[-patch][+buildmeta]" and that would be a simple, direct, and expected mapping to OpenSSL for semantic versioning. </div><div><br></div><div>A merged approach or keeping parts of our (non-semantic) approach while not fully adopting semantic versioning to me at least would be missing the point. </div><div><br></div><div>Tim.</div><div><br></div></div></div></div></div></div></div></div>