W3C Architecture Domain HTTP

Interoperability and Evolvability

Disclaimer: This document strictly represents my own opinion and not necessarily those of the W3C.

The following is a quick introduction to my definition of the terms interoperability, extensibility, and evolvability.

What is Interoperability?

Ineroperability is the intersection of features between two or more communicating peers:


That is, interoprability does not require complete knowledge about each other's features, nor that peers can't discover which features they have in common dynamically.

What is Extensibility?

Extensibility is the capability of starting from a common base and be able to extend the feature set over time without ever moving away from the common base

Model of

What is Evolvability?

Evolvability is like extensibility in that it allows to extend the feature set over time but at the same time it allows for old features to die out and applications gradually to become smarter. An example of an extensible but not evolvable data model is the model of ignoring everything you don't know.

Model of

Some application born with a fixed set of features, for example at Ts, will never change and will at some point die out. Other applications may be able to learn about new features over time. This is often what we see in a dynamic software component architecture.

The HTTP Extension Framework provides an evolvable datamodel as it allows to disallow certain features over time by forcing the use of new features. Needless to say which model I prefer!

Evolvability vs. Interoperability

Unfortunately evolvability and interoperability don't work towards the same goal - in fact they can be considered to be two forces that work against each other:

Evolvability vs.

The tricky part is of course to pick the "right" spot on this curve - this is pretty much what makes designing for the Internet hard.

Henrik Frystyk Nielsen,
@(#) $Id: Interevol.html,v 1.12 1999/05/03 22:26:36 frystyk Exp $