Saturday, April 19, 2003

End-to-End Software, Continued

So, what would it mean for software to be end-to-end? It has to do with the ways that modules or objects invoke services from libraries or other objects.

Library methods can offer many different semantics or options: synchronized or not, logged or not, various degrees of precision, etc. Now, library methods must offer their own versions of each.

In an end-to-end software system, these different options, or orthogonal modifiers would be specified at the call site at runtime, and the library methods would be dynamically rewritten to conform to the requested semantic. The advantages of this approach are that new options could be added to existing library methods without recompilation, and, as in the basic e2e argument, the burden of the extra features are not imposed on callers that do not require it.

I'm working on developing a programming language that offers this feature, and I'll talk about that more later.