A Coordination-Level Middleware for Supporting Flexible Consistency in CSCW Cezar Ples ¸ca, Romulus Grigoras ¸, Philippe Qu´ einnec, G´ erard Padiou IRIT UMR CNRS 5505, ENSEEIHT-Informatique 2 rue Camichel Toulouse, France e-mail: {plesca, grig, queinnec, padiou}@enseeiht.fr Jean Fanchon LAAS-CNRS 7, avenue du colonel Roche Toulouse, France e-mail: fanchon@laas.fr Abstract Highly interactive collaborative applications need to of- fer each user a consistent view of the interactions repre- sented by the streams exchanged between dispersed groups of users. At the coordination level, strong ordering proto- cols for capturing and delivering streams’ interactions(e.g. CAUSAL, TOTAL order) may be too expensive due to the variability of the network conditions. This paper builds upon previous work on expressing streams causality and proposes a flexible coordination middleware in order to in- tegrate different delivery modes (e.g. FIFO, CAUSAL, TO- TAL) into a single channel (with respect to each of these protocols). Moreover, the proposed abstract channel can handle the mix of any partial or total order protocols. We present a cooperative streaming scenario and an experi- mental platform for measuring the cost of combining sev- eral protocols on various network conditions and show how our coordination service can adjust the degree of synchro- nization according to network variations. 1 Introduction Since its birth in 1984 [1], Computer Supported Cooper- ative Work (CSCW) has attracted a lot of research attention in distributed computing. In the broadest sense, CSCW is the application of computing and networking technologies to facilitate cooperation and collaboration among people. There are three main facets of CSCW research and de- velopment: communication, coordination and collaboration [2]. Collaboration is the final propose, while communica- tion and coordination mechanisms are to provide necessary support and environment for collaboration. Coomunication involves generic transport protocols point-to-multipoint. At this level, there is no semantic rela- tion between collaboration at the application level and data transmission. Such a protocol is Real-time Transport Proto- col(RTP). Coordination This level ensures synchronization re- quirements between different streams. Protocols used are mainly multipoint-to-multipoint(i.e. m sources and n desti- nations). An example of a coordination API is JGroups. Collaboration Mechanisms for supporting interactions between participants: session handling, window-share mechanisms, etc. JSDT is such a collaboration API. Communication Coordination Collaboration Figure 1. Collaborative applications levels In this paper we propose a flexible coordination mecha- nism that tradeoffs the temporal and logical requirements of the application (collaboration level) and transport require- ments (e.g. delay, jitter, bandwidth) induced by the com- munication level. Synchronization issues at the coordination level are called group synchronization. Group synchronization deals with assuring the coherence among all participants of an in- teractive session. They must have the same view or a simi- lar, consistent view at virtually the same time. For example, in a highly interactive session, the streams exchanged by the participants are causally related: each participant needs to see the answer to a question after the question itself. An im- portant range of same-time/different-place applications, e.g. teleconferencing systems, networked games and collabora- tion tools, are concerned with such group synchronization. For these applications, it is important to be able to sup- port a variety of policies for ordering data delivery (e.g. FIFO, CAUSAL or other partial orders and even TOTAL ordering). A FIFO protocol ensures that the data is de- livered in the same order as it was sent between any two participants. A CAUSAL protocol ensures the coordination of group discussion by preventing inconsistencies that may occur when responses are received before questions. A TO- TAL order protocol ensures that all participants in a group