BackwardCompatibility

From W3C Wiki

In the development of technologies, and specifically at W3C, process, etc. we often hear about the notion of backward compatibility but what this notion covers. Is it really possible to have backward compatibility? Is there only one way of defining backward compatibility?

Wikipedia defines backward compatibility with different meanings. In fact the notion of backward compatibility can't be taken in isolation. It's the relation between two things of different nature and their evolution in time.

Examples

  • FooML is a defined language. A file which has been produced by Software version 2.0, will it be readable by version 1.0 of the software?
  • A software X is able to read and produce a language BarML 1.0, will it be able to read and produce the version BarML 2.0?
  • A language FooML is working well with the BarML version 1.0, will BarML version 2.0 be designed in a way that it will still works with FooML language?
  • etc.

Mechanism to ensure Backward Compatibility

What are the mechanisms which help to define backward compatibility? How do you create an XML language that will be still readable by future versions of software.

Versioning mechanism

It is certainly one of the answer. By creating a precise and defined versioning mechanism, it gives the possibility for implementers to develop an engine, a piece of code that will be able to refer precisely to a previous version of the language. Without this mechanism, the implementer has to develop hack mechanism to try to guess the "pseudo-version" of the language.

Backward Compatibility, a chimera?