Currently, Wikis are the most popular collaborative editing systems. They allow people to
easily create and modify content on the web. This ease of interaction and operation makes
a wiki an effective tool for collaborative writing. Collaborative writing is becoming increasingly
common; often compulsory in academic and corporate work. Writing scientific articles,
technical manuals and planning presentations are a few examples of common collaborative
writing activities.
A lot of critical data are now under the control of wiki systems. Wiki is now used
within enterprises or organizations. For example, United States intelligence community use
Intellipedia for managing national security informations. Wikis are now an important piece
in the information system of many organizations and communities. This introduce the issue
of data availability in case of failure, heavy load or off-line access.
Current Wiki systems are intrinsically centralized. Consequently, in case of failure or
off-line work, data are unavailable. In case of heavy load, system scales poorly and the cost
linked to underlying hardware cannot be shared. Our objective is to replace the centralized
architecture of a wiki server by a P2P network of wiki servers. This make the whole wiki
system fault tolerant, this allows to balance the load on the network and finally costs of the
underlying hardware can be shared between different organization.
This approach suppose that Wiki data are replicated on P2P network of wiki sites.
Consequently, the main problem is how to manage replicate consistency between wiki sites.
Traditional pessimistic replication approaches ensure consistency but are not adapted to
this context. They scale poorly and do not support off-line work.
Optimistic replication approaches suppose to know how to safely merge concurrent updates.
Some previous work tried to build a P2P wiki relying on distributed version
control system (DVCS) approaches. The main problem with DVCS approach is correctness.
An optimistic replicated system is considered as correct if it eventually converge i.e. when
the system is idle all Wiki sites contain identical data. This is called eventual consistency.
Version control system have never ensured this property. Consequently, building a P2P system
with traditional DVCS will not ensure eventual consistency. Other approaches ensure
convergence but are not compatible with P2P networks constraints. Finally some others
approaches converge and are adequate with P2P constraints but does not support collaborative
editing constraints.
We developed the WOOT algorithm to manage consistency of replicated linear structure
in a P2P environment. This algorithm ensure convergence without managing versions.
Wooki is a fully functional P2P wiki system based on this algorithm. We refined the original
algorithm to achieve a better time complexity. We combined this new algorithm with an
probabilistic dissemination algorithm for managing updates propagation on the overlay network
and with an anti-entropy algorithm for managing failures and disconnected sites.
Wooki is currently available under GPL license.
A Wooki network is dynamic p2p network where any site can join or leave at any time. Each site has a unique identifier named siteid. Site identifiers are totally ordered. Each site replicates wiki pages of other sites. Each site only requires a partial knowledge of the whole network.
A Wooki site generates a sequence of operations when a Wooki user saves its page. These operations are integrated locally on the Wooki site page by executing the WOOT algorithm, and broadcasted for integration on all other sites.