In recent years we have seen an impressive growth in the number of systems that try to solve the problems of distributing computing activities. Of these systems, those that deal with distributed computing by providing a group-oriented approach (e.g., Amoeba[2], Delta-4[4] and ISIS[1]) have been very successful, both in the academic and commercial sense. These systems are intended to support two major application classes: fault-tolerant systems (e.g., replicated services) and data dissemination applications (e.g., stock trading).
As distributed computing is becoming more and more ubiquitous, other classes of applications now also require support for distribution. These classes include parallel computing, real-time control, medical diagnoses and imaging, and CSCW and multi-media. These applications are often very complex and their distribution needs can no longer be satisfied by the original group communication systems. One of the most important lessons we, and other developers of such systems as Isis, Delta-4, and Amoeba, have learned is that application developers need complete control over the composition of the network subsystem. This way they can make the optimum trade-off between which services they use and their impact on performance.
The new emerging applications are composed out of a number of subsystems, each of which having specific distribution requirements. For example, CSCW applications combine floor and participant control, the management of shared data objects, and the timely dissemination of text, audio and images. Usually, the developer has to deal with a variety of toolkits that each deal with a single side of the distribution problems. We believe we need to avoid this, because combining toolkits will complicate meeting the timing, consistency, and security guarantees, if not making them impossible.