I am researching collaborative editing systems for some work, but so far my search is turning up blank.Collaborative real-time editing systems almost all have features like:Many users can edit the document at the same timeAll changes are dated and saved in a linear revision historyEdits are visible in semi-real timeWho-wrote-what is tracked for all contentI cannot think of a data- and procedure model to encompass all of these without huge inefficiencies, for example:Take user input as a few typestrokes at a time, thus enabling real-time visibility but with horrible server loads.Take user input as element changes, thus disabling real-time visibility and complicating many-user-editing of one paragraph.Edit a XML Document Model Object in place responding to inputs, but making it difficult to version/revision track.Edit linear text stored in an appropriate editing structure responding to inputs, making it difficult to verify that correct markup is being generated.Store revision history accumulating, requiring computational resources but easing on space.Store revision history whole, requiring space but easing on computation.Am I off track? Does there exist good solutions to these problems? What, if any, is the relevant litterature?
What sort of algorithm/communication model/data structure do collaborative real time editors use?
data structures;efficiency