Collaborative software or groupware is a kind of software that is designed to support a group of people in achieving a common goal. This task typically includes viewing and editing of a shared media, which can be basically anything from a text document to a CAD model provided collaborative editing makes sense. A real-time collaborative editor allows its users, who are connected by some communication network, like the internet, to view and edit this shared media in a parallel fashion regardless of their geographical locations.
Although the idea of shared editing dates back to as early as the 1960's, tools supporting it had not gained overwhelming popularity for decades.
However, with the Web 2.0 phenomenon the demand for browser based online editors started to grow rapidly, which shed new light on collaborative editing. A great example of this is Google Docs, launched in 2006, which is probably the most widely known example of collaborative software. During the past ten years demand for such applications has grown further and collaborative editing has become available even in software we use every day like Microsoft Word.
Of the many challenges of designing and implementing these kinds of systems, consistency maintenance has proven to be the most significant one. Due to this, collaborative editing has been research topic for several decades. The goal of this paper is to go through some of the milestones of the research and give a brief introduction to some of the popular techniques used in present-day implementations and to design and implement a general-purpose a framework that can support developers in the integration of collaborative features into existing applications regardless of the application domain.