# Project : ecoo

## Section: New Results

### Operational transformations

Participants : Pascal Molli, Gerald Oster, Hala Skaf-Molli.

#### Automatic proving of transformation functions

Operational transformation is an approach that allows to build real-time groupware like shared editors. Algorithms like aDOPTed, GOTO, SOCT 2,3,4 are used to maintain the consistency of shared data. However these algorithms rely on the definition of transformation functions. If these functions are not correct then these algorithms cannot ensure the consistency of shared data. Proving the correctness of transformation functions even on a simple typed object like a String is a complex task. If we have more operations on more complex typed objects, the proof is almost impossible without a computer. This is a serious bottleneck for building more complex real-time groupware software. We propose to assist development of transformation functions with SPIKE ( http://www.loria.fr/equipes/cassis/softwares/spike/) an automated theorem prover which is suitable for reasoning about functions defined by conditional rewrite rules. This approach requires specifying the transformation functions in first order logic. Then, SPIKE automatically determines the correctness of transformation functions. If correctness is violated, SPIKE returns counter-examples. Since the proofs are automatic, we can handle more (even complex) operations and develop quickly correct transformation functions [17] [18].

#### Safe and generic synchronizers

Reconciliating divergent data is an important issue in concurrent engineering, mobile computing and software configuration management. Currently, a lot of synchronizers or merge tools perform reconciliation. However, they do not define what is the correctness of their synchronization. We propose to use a transformational approach as the basic model for reasoning about synchronization. We propose an algorithm and specific transformation functions that realize a file system synchronization. Unlike classic synchronizers, our synchronizer ensures properties of convergence, causality and intention preservation and is extensible to new data types [19].

#### Perspectives

**Semantic constraints and Operational Transformation** In the operational transformation approach, the convergence of data on different copies does not necessarily means a consistent state. But by accounting for the semantics of the application, we can reach a convergent and a consistent state. A common way to ensure semantic consistency is to define a set of constraints and to check these constraints. In order to integrate constraints in a system, it is necessary to answer the following questions: what is the language of description of the constraints? Where are the constraints imposed? on each site, in a central site? when are they checked? and how? what measures to take in case the constraints are violated? Moreover, in the context of replicated data, the consistency of the data not only depends on the local operations but also on the operations taken on the other copies. So it is necessary to determine the impact of semantic constraints on the operational transformation approach and vice-versa [23].

**Synchronisation networks** In groupware, data synchronization can be seen as an update propagation among different users. However, this propagation has its own rhythm. A group of developer synchronize their data often, the group of beta tester synchronize their data with the group of developer from times to times. Group of regular users synchronize their data with the group of beta tester every six month ...In the classical Operational Transformation, propagation of operation is a broadcast of locally executed operation to all others sites. We propose to structure the propagation of operations according to a network. This network is built incrementally by users and represents their own dataflow. This kind network can be nicely deployed on peer-to-peer networks and will represent a service a synchronization for P2P networks.