An object-oriented open world

The WWW is an open environment that everyone can create a new web page without asking for permissions, and link to existing pages by knowing their URLs alone. Likewise, the GPG is meant to be an open environment that everyone can freely create a new object (i.e., a new service), and use existing types and objects by knowing their UTLs alone. The figure above shows that news.com, mobile.com, and tech.com each has an object implementing the imop:api.org/service.IBulletin interface. Since the interface type is publicly defined, everyone can implement it at will. People at api.org do not directly know where their interface is being used, just like that we do not know where our web page is being referenced either.

Assume that search.com wants to maintain a directory for all known imop:api.org/service.IBulletin implementations. The Directory object above on the right shows a crude implementation of it. The object pre-registers three known services upon initialization, and provides an add(IBulletin) method publicly to accept new registrations. When the add(IBulletin) method is invoked remotely, the Meso runtime at search.com will reflection the provided argument's type over the network to ensure that it indeed implements the IBulletin interface before passing the argument in. The runtime verification is done automatically behind the scene.
The modified Client on the left gets a list of IBulletin objects from the Directory. The Meso runtime for Client will also verify each object's type before assigning the list to the pool variable. Once their types are verified, we can invoke the post() method on each object with great confidence.
Even though the OO concept is well understood and widely used, applying it to an Internet-scale open system like this is still rare. Some people deem that strongly-typed solutions are too complex for Internet applications. However, we believe that with a good abstraction layer, a strongly-typed methodology is simpler and less error-prone to work with than, say, the do-everything-yourself RESTful style. Implementing the functionalities above in REST or Web Services technologies would be very difficult. Doing so with Meso and IMOP is just as intuitive as writing a local-only application.
