[ 
https://issues.apache.org/jira/browse/CASSANDRA-5156?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13554936#comment-13554936
 ] 

Sylvain Lebresne commented on CASSANDRA-5156:
---------------------------------------------

bq. Z (patch-level) was reserved for non-normative changes, even if it resulted 
in a normative change to the document

I understand the intent, but let's be honest on the fact that "the document" is 
closer to a documentation of the implementation than a proper formal 
specification that drives said implementation (one may wish it was different 
but let's keep rants about how it should have been for other venue).  And yes, 
distinctions can be made between a language and it's implementation, and even 
to some extent between a language intent and the document specifying it. But 
realistically, I don't think that trying to have the version number reflect 
such subtleties is/will be practical for us.

What we should do I think is bumping the CQL version every time we change 
something that have a user visible impact and be careful at properly 
documenting said changes. And of course be careful at not breaking backward 
compatibility (but we all agree on that I'm sure). I think that for the most 
part that's what users expect, and doing that properly (the documentation in 
particular) will already require some effort.

Now, using a version of the form X.Y would definitively be enough to do what's 
above. But as a user, I don't always have the time to look at the details of 
what's new in every version of software/language I use. So I appreciate it when 
developers of said software use the version number to provide their estimation 
of how "important" a new version is so I can very quickly judge whether I want 
to look at the changelog now or later (or ever). As a user, I understand such 
"importance estimation" is bound to be somewhat subjective but I still 
appreciate it and in fact it's common enough that I somewhat expect it. I don't 
think I'm the only one and so for CQL, I'd prefer keeping a version of the form 
X.Y.Z and bumping Y or Z based on our estimation of the importance of (backward 
compatible) changes going versus only having X.Y and always bumping Y (and I 
certainly don't think the former convey *less* meaning than the latter).

But let's be concrete if possible. We should start thinking about shipping 
1.2.1 soon.  At a minimum I really think CASSANDRA-4936 should get in, though 
there is no real reason not to get things like CASSANDRA-4927 in too. For that, 
I want to 1) bump the CQL version because those have user visible impact and 2) 
document clearly said version bump in 
http://cassandra.apache.org/doc/cql3/CQL.html.  If it was just me, I'd call the 
resulting version 3.0.1 cause those are relatively minor additions. The main 
question to resolve in this issue is: is there a problem with that? And if so, 
what is the alternative proposition and why is that better? 

bq. I would even go so far as to suggest that Y might be incremented at most 
once during a release

If by "release" you mean "minor C* release" then I definitely agree (but 
honestly never intended otherwise). If it's "major C* release", I disagree.

                
> CQL: loosen useless versioning constraint
> -----------------------------------------
>
>                 Key: CASSANDRA-5156
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-5156
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: Sylvain Lebresne
>            Assignee: Sylvain Lebresne
>            Priority: Trivial
>             Fix For: 1.2.1
>
>         Attachments: 5156.txt
>
>
> So far the CQL doc says the CQL language follows http://semver.org/. Meaning 
> that a version is X.Y.Z where:
> * X is the major version and denotes backward incompatible changes
> * Y is the minor version and denotes backward compatible changes
> * Z is the patch version and denotes backward *and* forward compatible 
> changes, i.e. change to the implementation.
> Now I don't think for CQL we have much use of the patch version. Not that 
> knowing when implementation fixes have been done is not useful but:
> # The Cassandra version number already kind of cover that.
> # While a patch version would be more precise in that it would only concern 
> CQL3 related changes, I have no illusion on our capacity in maintaining such 
> patch version accuratly (and frankly, I don't blame us).
> So instead of keeping a number that will end up having no usefulness 
> whatsoever, I suggest that we either:
> # remove it and have CQL3 version being just major and minor.
> # use that latter number as a sub-minor version, i.e. a version that only
> # denotes backward compatible changes, not forward ones. We would then bump 
> the two last digit at our discretion, to denote some form of "importance" of 
> the changes.
> I don't care much about which of the two we end up doing, but since we 
> already have a 3 numbers version and since I kind of like the idea of having 
> two numbers to convey a sense of importance of the changes, I'm attaching a 
> patch for the 2nd solution.
> Note that the patch removes the changes section from the doc, but that's 
> because I think it's useless in it's current form (on top of being 
> inaccurate).  I do plan on adding a new changes section that lists changes 
> between CQL minor version as soon as we have some of those.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to