On May 13, 2013, at 5:11 PM, Rintze Zelle wrote:

> On Mon, May 13, 2013 at 10:48 AM, Sylvester Keil <[email protected]> wrote:
>> Every processor that supports the new version can still support the older 
>> version.
> 
> Is supporting one version of CSL that requires support for two
> different algorithms worse than having to support two CSL versions?

For the CSL implementation it is the same thing, but it *gives you the choice* 
to support only the new version. The CSL implementation becomes simpler.

>> And what is the big problem of having both 1.0 and 1.1 styles in the 
>> repository?
> 
> In a single branch? We have trouble enough as it is to explain to
> style contributors how to submit their styles. Would we have 1.0 and
> 1.1 versions of the same style?

No. As long as the style does not require any 1.1 features it stays at 1.0.

If it needs 1.1 features it is updated – the 1.0 version can keep existing in a 
separate branch like it does now if anyone wants it.

That's why I said that if there are any changes which absolutely must be 
updated by all styles, they should always go into a 'truly' backwards 
compatible release.

> How is that not a nightmare to maintain?

The difference to what we have now is that you mark the style as updated by 
updating it's version number and that you must update all backwards 
incompatible parts of a style. This can be a burden, true, but what are the 
backwards compatible parts? The ordinals in locales? The conditionals?

I realize that maintenance is a big issue – we can make it part of the decision 
of whether or not to include a backwards incompatible feature. For example, we 
could try to write a script which updates the feature in question ahead of time 
and only if we know that we can update styles automatically do we agree to drop 
support for a legacy feature.

For example, ordinals and conditions: if we have a script that updates locales 
and styles to the new syntax, we could drop the old syntax from a 1.1 release. 
CSL implementations could still implement 1.0 in order to keep supporting old 
styles – it's essentially the same as specifying two variants in the spec but 
going forward the spec is lighter and implementations can make use of the 
version number to have much cleaner separations of alternative algorithms.

> And if you're proposing to use multiple branches, we already
> do that: https://github.com/citation-style-language/styles/tree/1.0
> (which is about as much proof as I can give you that nobody is
> interested in maintaining 1.0 styles).

I think the legacy branches are a good pragmatic approach. 

> 
>> The ordinal solution now is awkward – the processor can't make use of the 
>> version number and needs to look closely at the ordinal terms to decide 
>> which algorithm to use.
> 
> I guess we could have allowed for a "1.0.1" value on the "version"
> attribute. But that would have meant either bifurcating the schema to
> support validation of both 1.0 and 1.0.1 styles/locales, or using
> separate versions of the schema for validate the respective versions
> of styles and locales. Both would be a headache.

Like with the styles, what is the problem of keeping a 1.0 version of the 
schema around? When validating a style you must check the style's version and 
validate against the appropriate schema. It's not a problem at all to built 
this into the QA tests – in fact I had it implemented already, because I had 
been unaware that the 1.0.1 value was not used.

>> Why do we even use version numbers if we can't use them?
> 
> For "major" updates, like a 1.1 release. (which might not be the right 
> approach)
> 
>> to keep the implementations backwards compatible. If you put all that into 
>> the spec, however, it will become more convoluted with every release.
> 
> We would strip any "old" algorithms from the spec on every "major"
> backwards-incompatible release.

I was not aware of that : )

This makes it much easier for me to swallow the 'backwards compatible by 
retaining old variants' approach for minor releases.

Sylvester
 


------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and 
their applications. This 200-page book is written by three acclaimed 
leaders in the field. The early access version is available now. 
Download your free book today! http://p.sf.net/sfu/neotech_d2d_may
_______________________________________________
xbiblio-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbiblio-devel

Reply via email to