ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Branko ─îibej <br...@apache.org>
Subject Re: Introducing "compatibility level" concept.
Date Wed, 30 Sep 2015 08:01:13 GMT
On 30.09.2015 09:51, Vladimir Ozerov wrote:
> Igniters,
>
> Normally we are trying to maintain backward compatibility with previous
> versions. But it is not always possible.
>
> E.g. we are about to release portable protocol. There are lots suggestions
> how to optimize it, but all of them are relatively hard to implement. It
> would not be a problem if are able to improve it iteratively from release
> to release while still allowing for different versions (e.g. 1.5 and 1.6)
> to communicate.
>
> What if we add a top-level property "*compatibility level*" allowing user
> to "downgrade" some parts of the system to communicate with earlier
> versions?

That's likely to be a huge pain to maintain. The problem is that it
doesn't force you to think about compatibility too much, and you'll end
up having any number of incompatible protocols that you'll have to
maintain simultaneously.

There's an IMO better way: define the protocol to be natrually
extensible, and introduce a capability exchange step. Map protocol
extensions to capabilities (these can represented as simple tokens, or
whatever), then make the client and server use any capabilities that are
common to both.

We do this in Subversion; that's how a 1.9 server can work with a 1.0
client but the same server will work much better (with more features
available) with a 1.9 client. And the other way around, of course.

-- Brane

Mime
View raw message