Concepts et mécanismes pour la mise en oeuvre d'un environnement d'édition coopérative sur un réseau à grande échelle
The following dissertation addresses one aspect of cooperative editing which has not been well examined until now : the consideration of hardware limitations imposed by a large scale distributed system (namely the Internet). This system model implies heterogeneous hardware, unbounded communication delays, and process failures. In this context, mechanisms usually used for cooperative editing in a local area network are not suitable. The model proposed here is based on a dynamic decomposition of the document into independant parts, maintained by a replicated kernel. The decomposition is controlled by the users themselves, who can then act on the concurrency allowed at the document level. The more a document is fragmented, the more concurrency is allowed. The replication of the independant document parts within the kernel, ensures the document availability and this regardless of the performances of the users' sites. Communication is reduced to minimum, thus allowing use in large scale distributed system. Users interact with the kernel either by copying a kernel object to their own local environment where it can be modified, or by handling over the modified object to the kernel. Consistency is managed according to several policies that can be chosen by the user depending on the document maturity or the required interaction with the other users. A new criterion has been defined to ensure consistency : the NRT-linearizability. This criterion is more adapted to our problem than linearizability, and allows in particular a non-blocking implementation even in the case of failures (user site as well as kernel site failure), which is important when considering large scale distributed system. This criterion maintains the locality property of the linearizability. Contrary to the classical approach, this criterion is not applied to the read-modify-write operations ensuring the atomicity of the following actions : loading a document part into an editor, modifying it with the editor, and storing the modified part. The atomicity of the read-modify-write operations is only considered ot the application level and takes into account the knowledge of the users. Thus, the user is free to choose the way it will be performed His her choice will be made between several concurrency control policies based on rules established between the users, either optimistic based on conflict detection, pessimistic based on capabilities, or hybrid.