Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2013-05-28

Operational transformation

Некоторое время тому, была тут заметка про Meteor.js. Я тогда читал про этот проект и попалась мне на глаза такая информация

David Greenspan
David wrote Etherpad, unwittingly reinventing Operational Transformation, an obscure theory of data synchronization, in the process. He then sold Etherpad to Google and worked on Google Wave and Google App Engine


Ну, почитал, ну интересно, надо бы поподробнее разобраться. Но со временем этот вопрос отошел на задний план. А тут снова:

CoVim is a Vim Plugin that adds real-time collaboration to your favorite text editor

Представлен новый плагин для редактора Vim - CoVim, предназначенный для организации совместного редактирования одного документа одновременно несколькими пользователями, работающими на разных компьютерах и взаимодействующими по сети.

Казалось бы, что тут такого? А дело в том, что всё это относится к одной и той же теме — Operational Transformation.

Между прочим, плагин написан на Python и в качестве серверной платформы использует Twisted.

С развитием сети и повышением связанности людей через сеть, удаленно, все большее значение приобретают инструменты коллективной онлайновой работы над одним файлом/проектом/материалом. Кто помнит Google Wave? А он был. Теперь его части можно найти в ГуглоДоках и в ГуглоПлюсе. И еще Фонд Апач ведет проект-наследник

Так вот, о совместной работе. Основная сложность — синхронизировать рабочий документ между несколькими одновременно работающими над ним пользователями, вот эту проблему и решают с помощью теории Operational Transformation (по русски, типа, Операционная Трансформация?).

Operational transformation (OT) is a technology for supporting a range of collaboration functionalities in advanced collaborative software systems. OT was originally invented for consistency maintenance and concurrency control in collaborative editing of plain text documents. Two decades of research has extended its capabilities and expanded its applications to include group undo, locking, conflict resolution, operation notification and compression, group-awareness, HTML/XML and tree-structured document editing, collaborative office productivity tools, application-sharing, and collaborative computer-aided media design tools (see OTFAQ). In 2009 OT has been adopted as a core technique behind the collaboration features in Google Wave and Google Docs.


Разработки ведутся уже более 15 лет, но задача, применительно к реальному миру, настолько сложна и требует такого количества вычислительных ресурсов + пропускной способности сетей, что реальных приложений ОТ и поныне не слишком много.

Similarly, Joseph Gentle who is an ex Google Wave engineer and an author of the Share.JS library wrote: Unfortunately, implementing OT sucks. There's a million algorithms with different tradeoffs, mostly trapped in academic papers. The algorithms are really hard and time consuming to implement correctly. ... Wave took 2 years to write and if we rewrote it today, it would take almost as long to write a second time.



original post http://vasnake.blogspot.com/2013/05/operational-transformation.html

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) Klaipeda (14) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)