Caltech Infospheres Project

Accepted Position Paper for DOMC June 96

See also the slides that accompany this position paper.


The Caltech Infospheres Project deals with the theory and implementation of compositional systems that support peer-to-peer communication among persistent multithreaded distributed objects. Though our implementation uses Java, TCP/IP, and the Web, the ideas apply to any object-oriented system that supports messages and threads. A key concern is the development of reliable distributed applications by composing software components in structured ways.


Millions use the World Wide Web for information exchange and client-server applications. Several institutions are developing distributed web-based applications in commerce and collaboration. A number of these examples are implemented using industry standards such as Java and CORBA.

The Caltech Infospheres Project does research on theory, methods and tools that support the development of reliable distributed applications. A focus of our project is on methods of composing software components that are networks of communicating persistent multithreaded objects. The objects are implemented in Java and use the TCP/IP protocol. Resources such as object addresses and documentation are implemented on the Web.

The term infosphere originated in the military and refers to an individual's collection of interfaces to (possibly remote) software tools, data, appliances, servers, and collaborators. An interface is implemented by means of communicating objects. Our research project deals with the systematic design of such objects and the organization of these objects into infospheres.

Next, we discuss problems that are of specific concern to us. The contributions of our project are:

  1. the identification and specification of key problems,
  2. an analysis of the solution space to these problems,
  3. an implementation of a solution in this space, and
  4. theories and methods that support the solution.

Key Problems

Compositionality and Interfaces

There are many different tools that do similar things. For instance, there are many calendar tools that help in setting up common meeting times and places for a group of collaborators. The tools of the collaborators in a group must be composed into a single distributed application. How can different tools that do similar things, be integrated into a reliable distributed application?

The problem has several features:

The solution space deals with different ways of defining interfaces, the degree of formality employed, the rigor used in demonstrating that a composition of tools is correct, the scalability of solutions across the global information infrastructure, and the extent to which standards such as TCP/IP, HTML, the Web, and Java are exploited to deal with these problems. Our emphasis is on rigorous scalable solutions based on industry standards.


The software community has learned that we can reason about (or test and debug) systems by reasoning about individual modules and then reasoning about their composition. Traditional distributed systems such as air traffic control deal with one application domain and are developed by a small number of expert institutions who define methods for module integration. By contrast, distributed applications on the Internet are drawn from a bewildering variety of domains, and an application may be composed of objects developed by different groups. Yet, we have to reason about this chaotic environment.

The problems we address are that of

  1. identifying a unit that can form the basis for specification and reasoning,
  2. developing methods of reasoning about this unit, and
  3. showing how these methods can be used in practice.
We call this unit a session. The concept of a session is useful both for reasoning and for abstraction as a unit to which services can be provided. Thus, a session is similar to a transaction in a distributed database system.

A session is a temporary composition of collaborating objects into a distributed system; the session specification defines the way in which the persistent states of collaborating objects are to be changed by the session (in terms of pre- and post-conditions and invariants). We define sessions so that we can specify and reason about each session independently of others.

Tools to Support Widespread Use

The Web has spawned a cottage industry of documentation and applet development. It will, likewise, support widespread development of both client-server and peer-to-peer distributed applications. We are developing simple tools that help design safe distributed applications. Examples of such tools are graphical specification of

  1. the initial network topology of communicating objects,
  2. workflow defining the behavior of a transaction (such as insurance claim) as it progresses through the network, and
  3. the behavior of single-threaded persistent communicating objects.
We are also developing libraries of patterns of network topology, workflow, and process behavior, with support to instantiate a pattern to help implement an application.


Industry standards now support applications that consist of fluid temporary collections of objects from different infospheres. Our project deals with theories, methods and tools for such applications. Our emphasis is on compositionality, sessions as a modularity principle, and correctness. Our implementation uses Java, TCP/IP, and the World Wide Web; the theory and methods are, however, quite general.

Project Members:
K. Mani Chandy, Anand Chelian, Boris Dimitrov, Joe Kiniry, Huy Le, Jacob Mandelson, Matthew Richardson, Adam Rifkin, Eve Schooler, Paolo A.G. Sivilotti, Wesley Tanaka, and Luke Weisman

Infospheres Project of the Compositional Systems research group, California Institute of Technology and Center for Research on Parallel Computation.

Attending the Workshop:

More information about the Caltech Infospheres Project:

From the Infosphere Infrastructure group of the Caltech Infospheres Project,
maintained by Adam Rifkin, (last modified May 10, 1996)
This work is supported in part by NSF Problem-Solving Environments grant ASC-9527130.