W3C Activities

WW and OO

A possibly very significant step in the development of the web is its use as a space of objects in the sense of Object-Oriented Programming (OOP).


The Web may be viewed as a collection of objects and indeed, as originally designed, had an extensible space of methods to be applied to those objects. In the current Web, however, the almost all traffic consists of the application of the "GET" method for rendering an object. Heterogeneity is provided by standardizing data transfer formats (for example SGML or JPEG), and making both local stoage formats and implementation code local and hidden.

This much is similar to the principles of OO, but there the similarity ends. In the OO world, all data transfer takes place using a single consistent syntax (such as XDR, DCE, etc). Objects provide (export) a large set of operations (interface) rather than just "GET", and complex operations are typically performed on objects by invoking a succession of operations from the interface rather than retrieving a rendition of the object and operating on it locally. This is generalization, as the web may be used in more of an OO way, and OO systems in an HTTP-like way.

The real power of OOP comes from the ability to inherit properties of one object from another. Both interface definition and implementation code may be inherited. At the programming level, this gives great power, especially in single address space systems in which the implementation code of any object used is readily available to annother object which wishes to inherit it.

If the web is become an infrastructure for global computing rather than only for global human browsing, and if it is to be easily extended with objects of a plethora of types, it would be a major step backward were the power of OOP to be excluded by virtue of the web protocol design.

However, within the OOP world, there are many different models. In what the web does, it does in a very flexible way. Format negotiation allows data formats to introduced smoothly over time, and the URI format allows new protocols to be introduced over time. The web puts as few constraints as possible on anything, defining the minimum amount for interoperability. Applications can interact to the limit of the concepts which they share. Can we define a structure for global OOP which will allow all current, and curretly inconcievable future, OO systems to interoperate limited only by their common concepts? The challenge is to make an OO WWW which does not force one to buy into one OO model.

OO systems vary in their typing models, their inheritance models. Distributed OO systems vary in their models for asynchronous invokation of methods.


I propose the following general requirements.
  1. The ability to interogate a remote object as to the interfaces which it supports, with a format negotiation in which the response is sent.
  2. The support for an interface (OO protocol) as a first class object on the Web.
  3. A way of finding suitable formats for the submission of parameters for remote operations, or a standard data syntax.


What W3C products would help bring about an interoperable OO Web?