Semantic versioning in general doesn't have any specific format, it just means 
that within a project the succession of version numbers conveys information by 
itself.  There's no requirement there has to be 3 parts or whatever.  I 
consider 
SQLite's versioning scheme to both be very appropriate and it is semantic 
versioning, not just like such.

As a digression, for my own projects I like to use a semantic versioning scheme 
of 4 parts like [major.branch.incompatible.compatible] that works like this 
(assume generally each increment of a part means subsequent parts reset to 
zeros):

1. Incrementing 'major' means what it typically means, a substantial rewrite 
that is free to be arbitrarily different and incompatible with the prior major.

2. The 'branch' is inspired by Perl's versioning scheme, in that it alternates 
between even and odd numbers where even means production and odd means 
development.  When one is making changes that are large enough that there 
should 
be dev releases first, eg alpha/beta/etc, a development branch is created and 
those releases are x.odd.y.z until they're considered production ready, then, 
the development branch becomes a maintenance branch and releases become 
x.even.y.z etc.  So example first production releases are 1.0.0.0 or 1.2.0.0 
etc 
while first dev/alpha/etc releases are 1.1.0.0 and 1.3.0.0 etc.  Each branch 
may 
be but isn't necessarily incompatible with prior ones.

3. Incrementing 'incompatible' means that some change was made that is known to 
break at least some use case, whatever the reason for it, and this was done 
without having a separate branch / dev-prod status flip.  This includes 
security 
fixes that disallow something previously allowed.

4. Incrementing 'compatible' means that the authors consider the change to not 
break anything / be fully backwards-compatible, whether due to being a new 
feature or a bug fix.

-- Darren Duncan

On 2015-10-07 1:13 PM, Scott Robison wrote:
> Really, the SQLite3 versioning isn't that far off from Semantic Versioning.
> Instead of MAJOR.MINOR.PATCH we have FORMAT.MAJOR.MINOR.PATCH.
>
> Admittedly, the MAJOR.MINOR parts are a *little* intermingled, but reading
> through the release history it is fairly clear that a change in MAJOR
> usually results from MAJOR new functionality, MINOR is for relatively MINOR
> new functionality, and PATCH is apparently never used outside that context.
>
> While I personally have no complaints with people who use Semantic
> Versioning, I don't see SQLite versioning as being horribly incompatible
> with it. In fact, if I were making the decision, I'd keep the current
> versioning.
>

Reply via email to