Много работ про применение операционных преобразований (частью про них была
статья в ПФП) в разных областях совместной компьютерной деятельности - от совместного редактирования текста до совместного редактирования графики.
Для операционных преобразований важно поддерживать корректность объекта в целом, поэтому иерархические представления дают преимущество: даже не очень корректная работа по совмещению преобразований над отдельными символами текста может быть удовлетворительна, если работа над разными словами гарантировано не пересекается.
Например, если мы работаем над текстом в целом, то вставка двух символов в разные слова фразы "абв где" может мешать друг другу: если один сделал правку "абвг где" (+"г"[3]), а другой сделал правку "абв хгде" (+"х"[4]), то наивное совмещение двух правок может привести и к "абвгч где" (накатили первую, потом вторую) и к "абвг хгде" (вторая, затем первая). Если мы работаем со словами, то вставки произойдут в первое слово (в самый его конец) и во второе слово (в самое начало), гарантируя, что у нас всегда получится "абвг хгде".
Если иерархия более глубокая, то вероятность ошибочного соединения правок ещё меньше.
Моя давнишняя идея была про представление пользовательского интерфейса в виде дерева, поддержания двух копий дерева - для пользователя и БД, - и синхронизации между ними с помощью операций редактирования: вставки, удаления, переименования (смены содержимого) и перемещения элементов.
Пользователь вносит изменения, при синхронизации деревьев создаются операции редактирования дерева от дерева пользовательского интерфейса к дереву БД, которые отображаются в операции над БД. Другие пользователи вносят правки, изменяя БД, что приводит к изменению дерева БД, порождая синхронизацию и операции редактирования дерева пользовательского интерфейса, что приводит к его изменениям.
Поскольку дерево у нас получается сильно вложенное, вероятность неправильного наложения операций над ним невелика даже при наивном разрешении конфликтов.
Что и доказывают труды той дамы, доступные по первой ссылке. ;)
Хорошо получить подтверждение со стороны, да ещё и от умного человека. ;)
PS
Чтобы два раза не вставать.
Передающим мне привет: то, что всё работает "нормально" не говорит, что нельзя работать лучше. То, что ошибки привычны, не означает, что от них не надо избавляться.