\section{Introduction}

Typical web activities like editing of a web page by several users at the same time are editing Wiki pages, writing papers, creating presentations and others. Those applications are made possible by Lively Kernel out-of-the-box since it allows changing the interface (and its behavior) of a web page in the browser. When saving a page, the whole DOM structure is saved into a subversion repository whereby changes made by others simultaneously get lost.

Collaboration tools enables several people working on the same thing in real-time. In Lively, such a framework could make possible that two users are writing a text together and a third user is changing the design on the same page. This way, changes can be applied in parallel without having to wait for other users finishing their work. Additionally, ideas can be shared immediately and other users can give feedback directly.

The main goal of this project is to solve frequent synchronization issues in a multi-user environment like the \emph{Lively Kernel Webwerkstatt Wiki}\footnote{http://lively-kernel.org/repository/webwerkstatt/webwerkstatt.xhtml}. This synchronization should be in nearly real-time so that every user can see the others working on a Wiki page. Normal activities like adding of new morphs, change position, resizing or editing text is synchronized. There should be no spontaneously changes (e.g. a morphing "jumping" from one place to another), therefore users see other mouse cursors and know in which part of the page the others are working. 

Although no direct goal of this project, the resulting framework should be extensible by more advanced collaboration features: Conflict management won't be available in the first step, but the solution should allow to use operational transformations \cite{google:ot} (which is an optimistic approach) to solve conflicts effective. Another neat but not as necessary feature would be a time-slider which gives each user the opportunity to travel back in time and view the Wiki page a few clicks behind (as seen in EtherPad\footnote{http://etherpad.com/} \cite{etherpad:playback}).

The remainder of this paper is structured as follows: The next section introduces our command-based collaboration approach. Section \ref{sec:architecture} presents the framework design and architecture, while section \ref{sec:impl} discusses special implementation considerations. Finally, section \ref{sec:conclusion} concludes and points to future work.



