SynchroEdit is a browser-based simultaneous multiuser editor, a form of same-time, different-place groupware. SynchroEdit project allows multiple users to edit a single web-based document at the same time, and it continuously synchronizes all changes so that users always have the same version.
SynchroEdit's main editor is fully WYSIWYG, dynamically displaying bolds, italics, underlines, strikethroughs, with various justifications, indents and listing styles as an author inputs them. SynchroEdit also supports a simple, text-only editor for more basic documents.
To clarify the multiuser experience, the editor window clearly depicts every user's changes in a specific color and also marks where each user is currently editing with a colored flag listing the user's name.
SynchroEdit can be used for any functionality where concurrent, synchronous editing of a single document is useful. It can easily be plugged into web pages using a variety of methods. Following are some of the current uses being considered:
Collaborative Editing - Two or more people can edit a document at exactly the same time, fine-tuning specific wordings and phrases.
Teleconferencing Notes - Members of a teleconference can write about their call, correcting or expanding upon notes made by other call members, thus supporting a true backchannel to a live conference call.
Wiki Editing - Editors can edit popular or heavily edited Wiki pages at the same time, instead of having to wait for their colleagues to complete their work.
Pair/XP Programming, Agile Development - Two or more programmers or web developers can write code at the same time.
Teaching Aids - Teachers can provide dynamic syllabi and lecture notes, and students can take shared class notes together.
Documentation Writing - Authors with a variety of expertise can come together to write a coherent document on a specific topic. This overview of SynchroEdit was originally written in SynchroEdit by multiple people.
The SynchroEdit engine consists of three parts:
The Request Server - The initial script that a user connects to in order to initiate a synchronous edit. Current samples are written in PHP and Perl, with a Kwiki Plugin implementation also planned.
The Sync Server - A Java-based server app that talks with the Request Server and Sync Client and mediates the synchronous editing.
SynchroEdit is built around W3C's Document Object Module (DOM). It ensures that user modifications do not interfere with each other by keeping track of where each user is located in the DOM tree, by node.
User changes to the document are tracked using event-handlers on the DOM mutation events. When data is appended to the DOM tree, unaffected nodes remain as they are, which allows users to safely continue editing, even if other users are modifying large chunks of text elsewhere, and even if there is lag in updates. When user changes are "colliding", the servers ensures the validity of the updated content by comparing out-of-sync updates, and by adjusting the local cursor and node positions.
Besides this solid technical base, SynchroEdit also offers a good user interface to optimize multiuser editing. Each user's edits are marked by "author-spanning" and the each users current position is marked with an "author flag". Thus all edits performed by a user are marked in the document in that user's specified color, which allows all users to easily see who is making which change.
What's New in This Release:
· This is the "halfway there" release, which includes a more standardized codebase, administration, and improved interoperability (ESPI and response service).