A small history of the So6 project, by its father, Pascal Molli
The So6 project has started at the end of 2001 when i wrote the synchronizer for the TOXIC project. I realized that writing a synchronized is a tough work. You have so many cases to explore. I was reading the paper of Benjamin C. Pierce and S. Balasubramaniam What is a file synchronizer ?
(In Mobile Computing and Networking , pages 98--108, 1998), and in the same time, i was reading papers from Jean Ferrié on
SOCT4~~ . I understood that a Real-time editor is, by some way, a real time synchronizer. The only difference between real-time editors and real time synchronizer is the delay between two synchronizations.
However, it was not so easy to adapt the algorithm for the synchronization world. In fact, the transformational approach requires to write transformation functions and to prove some properties on it. Proving these properties is really difficult, error prone (and boring).
Fortunatly, i was participating locally to the QSL (QSL
) research program. And i have presented the transformational framework during some meeting. Michael Rusinowitch was in the audience and said to me that maybe he has a tool that could help me to prove automatically properties on transformation functions. I am really ignorant about theorem proving systems, but i said why not, we can try. Michael organized a meeting with me, Gérald oster and Abdessamad Imine. Abdessamad explained us how the SPIKE theorem prover works. I have not all understood but Gérald was ok.
Gérald and Abdessamad produced a wonderfull work and quickly generates first sets of proved transformation functions for Strings, File system and XML.
Then, by the mediation of INRIA (INRIA
), we were involved in the LibreSource
project. The ambition of this project was to build some new version of SourceForge but for the european Union and with new technology. We presented the S5 prototype built with Sébastien Jourdain to our partners and they agreed that it can be usefull.
At this time, we start to transform the S5 prototype in an alpha product. We met some difficulties: problems of out of memory, performance, fault tolerance, awareness. We rewrote the code maybe ten times.