versioning notes from yesterday

A given language  L1 attributes semantics S1(x) to a serialization x,
where x is a member of L1.

What do we mean by L2 being back-compatible with L1? We mean any  
serialization x written in L1 will be interpreted as though in L2  
with the same meaning:

L2 is superset of L1
S2(x) = S1(x) for all x in L1.


It is forward compatible if a document written in L2 will be  
interpretable by an L1 processor and has the same meaning.

L2 is subset of L1
S1(x) = S2(x) for all x in L2

This is just the same relation, but the other way around.

Maybe we can make a weaker form, in which there are some semantics  
lost?, such as where S1(x) is a subset of S2(x)?

It is "weakly forward compatible" if a document written in L2 will be  
interpretable by an L1 processor and has a subset of the meaning  
which would have been interpreted by L2.  In this case, no  
inconsistent information is created, but some information may be lost  
if the serialization is interpreted by S1 instead of S2.

L2 is subset of L1
S1(x) is subset of S2(x) for all x in L2.


For this weakly forward compatible systems, an L2-aware agent sending  
a message with body x to an L1-aware agent will be held accountable  
for S1(x), a subset of S2(x), which is fine because the agent was  
prepared to be held accountable for S2(x).

Weakly backwards compatible is a rather low bar to aim for so we  
won't discuss it but it is defined as one might expect.

HTML versions have typically been weakly forward and strongly  
backward compatible.

Received on Thursday, 22 September 2005 13:07:45 UTC