La transformación operativa ( OT ) es una tecnología que permite ofrecer una amplia gama de funcionalidades de colaboración en sistemas de software colaborativo avanzados. La OT se inventó originalmente para el mantenimiento de la coherencia y el control de la concurrencia en la edición colaborativa de documentos de texto sin formato. Sus capacidades se han ampliado y sus aplicaciones se han expandido para incluir deshacer operaciones en grupo, bloqueo, resolución de conflictos, notificación y compresión de operaciones, reconocimiento de grupos, edición de documentos HTML/XML y estructurados en árbol, herramientas de productividad de oficina colaborativa, uso compartido de aplicaciones y herramientas de diseño de medios colaborativos asistidos por ordenador. [1] En 2009, la OT se adoptó como una técnica central detrás de las funciones de colaboración en Apache Wave y Google Docs .
Historia
La Transformación Operativa fue iniciada por C. Ellis y S. Gibbs [2] en el sistema GROVE (GRoup Outline Viewing Edit) en 1989. Varios años después, se identificaron algunos problemas de corrección y se propusieron de forma independiente varios enfoques [3] [4] [5] [6] para resolver estos problemas, a lo que siguió otra década de esfuerzos continuos para extender y mejorar la TO por parte de una comunidad de investigadores dedicados. En 1998, se creó un Grupo de Interés Especial sobre Edición Colaborativa [7] para promover la comunicación y la colaboración entre los investigadores de CE y OT. Desde entonces, SIGCE realiza talleres anuales de CE junto con las principales conferencias CSCW ( Trabajo Cooperativo Apoyado por Computadora ), como ACM, CSCW, GROUP y ECSCW.
Arquitectura del sistema
Los sistemas de colaboración que utilizan transformaciones operativas suelen utilizar almacenamiento de documentos replicados, donde cada cliente tiene su propia copia del documento; los clientes operan en sus copias locales de una manera libre de bloqueos y los cambios se propagan luego al resto de los clientes; esto garantiza al cliente una alta capacidad de respuesta en un entorno que de otro modo sería de alta latencia, como Internet. Cuando un cliente recibe los cambios propagados desde otro cliente, normalmente transforma los cambios antes de ejecutarlos; la transformación garantiza que los criterios de consistencia dependientes de la aplicación ( invariantes ) se mantengan en todos los sitios. Este modo de operación da como resultado un sistema particularmente adecuado para implementar funciones de colaboración, como la edición simultánea de documentos, en un entorno de alta latencia, como la web .
Lo esencial

La idea básica de OT se puede ilustrar mediante un escenario de edición de texto simple como el siguiente. Dado un documento de texto con una cadena "abc" replicada en dos sitios que colaboran y dos operaciones simultáneas:
- O1 = Insertar[0, "x"] (para insertar el carácter "x" en la posición "0")
- O2 = Delete[2, "c"] (para eliminar el carácter "c" en la posición "2")
generado por dos usuarios en los sitios colaboradores 1 y 2, respectivamente. Supongamos que las dos operaciones se ejecutan en el orden O1 y O2 (en el sitio 1). Después de ejecutar O1, el documento se convierte en "xabc". Para ejecutar O2 después de O1, O2 debe transformarse contra O1 para convertirse en: O2' = Delete[3, "c"], cuyo parámetro posicional se incrementa en uno debido a la inserción de un carácter "x" por O1. Ejecutar O2' en "xabc" elimina el carácter correcto "c" y el documento se convierte en "xab". Sin embargo, si O2 se ejecuta sin transformación, elimina incorrectamente el carácter "b" en lugar de "c". La idea básica de OT es transformar (o ajustar) los parámetros de una operación de edición de acuerdo con los efectos de operaciones concurrentes ejecutadas previamente de modo que la operación transformada pueda lograr el efecto correcto y mantener la consistencia del documento.
Modelos de consistencia
Una de las funciones de OT es respaldar el mantenimiento de la coherencia en los sistemas de edición colaborativa. Se han propuesto varios modelos de coherencia en la comunidad de investigación, algunos de ellos en general para sistemas de edición colaborativa y otros específicamente para algoritmos de OT.
El modelo CC
En el artículo de Ellis y Gibbs de 1989 "Control de concurrencia en sistemas de software colaborativo", [2] se requieren dos propiedades de consistencia para los sistemas de edición colaborativa:
- Preservación de la causalidad: garantiza que el orden de ejecución de las operaciones causalmente dependientes sea el mismo que su orden natural de causa y efecto durante el proceso de colaboración. La relación causal entre dos operaciones se define formalmente mediante la relación " sucedió antes " de Lamport. Cuando dos operaciones no son causalmente dependientes, son concurrentes. Dos operaciones concurrentes pueden ejecutarse en orden diferente en dos copias de documentos diferentes.
- Convergencia : garantiza que las copias replicadas del documento compartido sean idénticas en todos los sitios en estado de inactividad (es decir, todas las operaciones generadas se han ejecutado en todos los sitios).
Dado que las operaciones concurrentes pueden ejecutarse en diferentes órdenes y las operaciones de edición no son conmutativas en general, las copias del documento en diferentes sitios pueden divergir (ser inconsistentes). El primer algoritmo OT se propuso en el artículo de Ellis y Gibbs [2] para lograr la convergencia en un editor de texto grupal; se utilizó el vector de estado (o reloj vectorial en computación distribuida clásica) para preservar la propiedad de precedencia.
El modelo CCI
El modelo CCI fue propuesto como una gestión de consistencia en sistemas de edición colaborativa. [4] [8] Bajo el modelo CCI, se agrupan tres propiedades de consistencia:
- Preservación de la causalidad : igual que en el modelo CC.
- Convergencia : igual que en el modelo CC.
- Preservación de la intención : garantiza que el efecto de ejecutar una operación en cualquier estado del documento sea el mismo que la intención de la operación. La intención de una operación O se define como el efecto de ejecución que se puede lograr al aplicar O en el estado del documento a partir del cual se generó O.
El modelo CCI extiende el modelo CC con un nuevo criterio: la preservación de la intención. La diferencia esencial entre convergencia y preservación de la intención es que la primera siempre se puede lograr mediante un protocolo de serialización, pero la segunda no se puede lograr mediante ningún protocolo de serialización si las operaciones siempre se ejecutan en sus formas originales. Lograr la propiedad de preservación de la intención no serializable ha sido un gran desafío técnico. La OT se ha considerado particularmente adecuada para lograr la convergencia y la preservación de la intención en sistemas de edición colaborativa.
El modelo CCI es independiente de los tipos de documentos o modelos de datos, tipos de operaciones o técnicas de soporte (OT, multiversiones, serialización, deshacer/rehacer). No fue pensado para la verificación de corrección de técnicas (por ejemplo, OT) que están diseñadas para modelos de datos y operaciones específicos y para aplicaciones específicas. En [4], la noción de preservación de la intención se definió y refinó en tres niveles: primero, se definió como un requisito de consistencia genérico para sistemas de edición colaborativa; segundo, se definió como condiciones de pre y post transformación basadas en el contexto de la operación para funciones OT genéricas; tercero, se definió como criterios de verificación de operaciones específicos para guiar el diseño de funciones OT para dos operaciones primitivas: inserción y eliminación de cadenas, en editores de texto sin formato colaborativos.
El modelo CSM
La condición de conservación de la intención no se especificó formalmente en el modelo CCI para fines de pruebas formales. Los enfoques SDT [9] y LBT [10] intentan formalizar condiciones alternativas que puedan probarse. El modelo de consistencia propuesto en estos dos enfoques consta de las siguientes condiciones formales:
- Causalidad : la misma definición que en el modelo CC
- Efectos de una sola operación : el efecto de ejecutar cualquier operación en cualquier estado de ejecución logra el mismo efecto que en su estado de generación.
- Efectos de múltiples operaciones : la relación de efectos de dos operaciones cualesquiera se mantiene después de que ambas se ejecutan en cualquier estado.
El modelo CA
El modelo CSM anterior requiere que se especifique un orden total de todos los objetos del sistema. En efecto, la especificación se reduce a los nuevos objetos introducidos por las operaciones de inserción. Sin embargo, la especificación del orden total implica políticas específicas de la aplicación, como las destinadas a romper los vínculos de inserción (es decir, nuevos objetos insertados por dos operaciones actuales en la misma posición). En consecuencia, el orden total se vuelve específico de la aplicación. Además, en el algoritmo, el orden total debe mantenerse en las funciones de transformación y el procedimiento de control, lo que aumenta las complejidades temporales y espaciales del algoritmo.
Alternativamente, el modelo CA se basa en la teoría de admisibilidad . [11] El modelo CA incluye dos aspectos:
- Causalidad : la misma definición que en el modelo CC
- Admisibilidad : La invocación de cada operación es admisible en su estado de ejecución, es decir, cada invocación no debe violar ninguna relación de efectos (ordenamiento de objetos) que haya sido establecida por invocaciones anteriores.
Estas dos condiciones implican convergencia. Todos los sitios cooperantes convergen en un estado en el que hay un mismo conjunto de objetos que están en el mismo orden. Además, el orden está determinado efectivamente por los efectos de las operaciones cuando se generan. Dado que las dos condiciones también imponen restricciones adicionales al ordenamiento de los objetos, en realidad son más fuertes que la convergencia. El modelo CA y el enfoque de diseño/prueba se desarrollan en el artículo de 2005. [11] Ya no requiere que se especifique un orden total de objetos en el modelo de consistencia y se mantenga en el algoritmo, lo que, por lo tanto, da como resultado complejidades de tiempo/espacio reducidas en el algoritmo.
Estructura del sistema OT
La OT es un sistema de múltiples componentes. Una estrategia establecida para diseñar sistemas OT [2] [3] [4] [5] [12] [13] es separar los algoritmos de control de transformación (o integración) de alto nivel de las funciones de transformación de bajo nivel.
El algoritmo de control de transformación se ocupa de determinar:
- ¿Qué operación debe transformarse frente a una nueva operación causalmente preparada?
- El orden de las transformaciones
El algoritmo de control invoca un conjunto correspondiente de funciones de transformación, que determinan cómo transformar una operación en relación con otra según los tipos de operación, las posiciones y otros parámetros. Las responsabilidades de corrección de estas dos capas se especifican formalmente mediante un conjunto de propiedades y condiciones de transformación. Los diferentes sistemas OT con diferentes algoritmos de control, funciones y topologías de comunicación requieren mantener diferentes conjuntos de propiedades de transformación. La separación de un sistema OT en estas dos capas permite el diseño de algoritmos de control genéricos que se pueden aplicar a diferentes tipos de aplicaciones con diferentes modelos de datos y operaciones.
El otro enfoque alternativo fue propuesto en [11] . En su enfoque, un algoritmo OT es correcto si satisface dos criterios de corrección formalizados:
- Preservación de la causalidad
- Preservación de la admisibilidad
Mientras se cumplan estos dos criterios, las réplicas de datos convergen (con restricciones adicionales) después de que se ejecuten todas las operaciones en todos los sitios. No hay necesidad de imponer un orden total de ejecución con el fin de lograr la convergencia. Su enfoque es generalmente primero identificar y probar condiciones suficientes para unas pocas funciones de transformación, y luego diseñar un procedimiento de control para asegurar esas condiciones suficientes. De esta manera, el procedimiento de control y las funciones de transformación funcionan sinérgicamente para lograr la corrección, es decir, la preservación de la causalidad y la admisibilidad. En su enfoque, no hay necesidad de satisfacer propiedades de transformación como TP2 porque no requiere que las funciones de transformación (inclusivas) funcionen en todos los casos posibles.
Datos OT y modelos de operación
Existen dos modelos subyacentes en cada sistema OT: el modelo de datos que define la forma en que las operaciones abordan los objetos de datos en un documento, y el modelo de operaciones que define el conjunto de operaciones que pueden transformarse directamente mediante funciones OT. Diferentes sistemas OT pueden tener diferentes modelos de datos y operaciones. Por ejemplo, el modelo de datos del primer sistema OT [2] es un único espacio de direcciones lineal; y su modelo de operaciones consta de dos operaciones primitivas: inserción y eliminación de caracteres. El modelo de operaciones básico se ha ampliado para incluir una tercera actualización de operaciones primitivas para soportar el procesamiento colaborativo de documentos Word [14] y la edición de modelos 3D. [15] El modelo de datos OT básico se ha ampliado a una jerarquía de múltiples dominios de direccionamiento lineal, [16] [17] [18] que es capaz de modelar una amplia gama de documentos. A menudo se requiere un proceso de adaptación de datos para mapear modelos de datos específicos de la aplicación a un modelo de datos compatible con OT. [19] [20]
Existen dos enfoques para respaldar operaciones a nivel de aplicación en un sistema OT:
- Enfoque del modelo de operación genérico: consiste en diseñar funciones de transformación para tres operaciones primitivas: insertar, eliminar y actualizar. [19] Este enfoque necesita un proceso de adaptación de operaciones para asignar las operaciones de la aplicación a estas operaciones primitivas. En este enfoque, el modelo de operación de OT es genérico, por lo que las funciones de transformación se pueden reutilizar para diferentes aplicaciones.
- Enfoque del modelo de operación específico de la aplicación: consiste en diseñar funciones de transformación para cada par de operaciones de la aplicación. [20] [21] Para una aplicación con m operaciones diferentes, se necesitan mxm funciones de transformación para respaldar esta aplicación. En este enfoque, las funciones de transformación son específicas de la aplicación y no se pueden reutilizar en diferentes aplicaciones.
Funciones OT
Se han diseñado varias funciones OT para sistemas OT con distintas capacidades y se utilizan para distintas aplicaciones. Las funciones OT utilizadas en diferentes sistemas OT pueden tener nombres diferentes, pero se pueden clasificar en dos categorías:
- Transformación de inclusión (o transformación hacia delante): IT(Oa, Ob) o , que transforma la operación Oa contra otra operación Ob de tal forma que el impacto de Ob se incluye efectivamente. Este es, por ejemplo, el caso de dos inserciones en nodos diferentes.
- Transformación de exclusión (o transformación hacia atrás): ET (Oa, Ob) o , que transforma la operación Oa contra otra operación Ob de tal forma que el impacto de Ob se excluye de manera efectiva. Este es, por ejemplo, el caso de una inserción y una eliminación en nodos diferentes [22]
Por ejemplo, supongamos un tipo String con una operación ins(p, c, sid) donde p es la posición de inserción, c es el carácter a insertar y sid es el identificador del sitio que ha generado la operación. Podemos escribir la siguiente función de transformación de inclusión: [23]
T(ins( ),ins( )) :- si ( ) devuelve ins( ) De lo contrario, si ( y ) devuelve ins( ) De lo contrario, devuelve ins( )
También podemos escribir la siguiente función de transformación de exclusión: [23]
(ins( ),ins( )) :- si ( ) devuelve ins( ) De lo contrario, si ( y ) devuelve ins( ) De lo contrario, devuelve ins( )
Algunos sistemas de OT utilizan funciones tanto de TI como de ET, y otros utilizan solo funciones de TI. La complejidad del diseño de la función de OT está determinada por varios factores:
- la funcionalidad del sistema OT: si el sistema OT admite hacer (mantenimiento de consistencia), deshacer, bloqueo, [24] reconocimiento, uso compartido de aplicaciones, [19] [25] [26] [27] etc.;
- la responsabilidad de corrección en el sistema OT: qué propiedades de transformación (CP1/TP1, CP2/TP2, IP2, IP3, RP) se deben cumplir; si se utiliza ET;
- el modelo de operación del sistema OT: si el modelo de operación OT es genérico (por ejemplo, inserción, eliminación, actualización primitivas) o específico de la aplicación (todas las operaciones de la aplicación de destino); y
- el modelo de datos del sistema OT: si los datos en cada operación son caracteres (un objeto individual), cadenas (una secuencia de objetos), jerárquicos u otras estructuras.
Propiedades de transformación
Se han identificado varias propiedades de transformación para garantizar la corrección del sistema OT. Estas propiedades se pueden mantener mediante el algoritmo de control de transformación [4] [5] [13] [20] [28] [29] o mediante las funciones de transformación. [30] Los diferentes diseños de sistemas OT tienen diferentes divisiones de responsabilidades entre estos componentes. Las especificaciones de estas propiedades y las condiciones previas para requerirlas se dan a continuación.
Propiedades de convergencia


Las siguientes dos propiedades están relacionadas con el logro de la convergencia.
- CP1/TP1 : Para cada par de operaciones concurrentes y definidas en el mismo estado, la función de transformación T satisface la propiedad CP1/TP1 si y solo si: donde denota la secuencia de operaciones que contiene seguido de ; y donde denota equivalencia de las dos secuencias de operaciones. Precondición CP1/TP1 : CP1/TP1 se requiere solo si el sistema OT permite que dos operaciones cualesquiera se ejecuten en diferentes órdenes.
- CP2/TP2 : Para cada tres operaciones concurrentes y definidas en el mismo estado de documento, la función de transformación T satisface la propiedad CP2/TP2 si y solo si: . CP2/TP2 estipula la igualdad entre dos operaciones transformadas con respecto a dos secuencias equivalentes de operaciones: la transformación de contra la secuencia de operación seguida por debe dar la misma operación que la transformación de contra la secuencia formada por y . Precondición CP2/TP2 : CP2/TP2 se requiere solo si los sistemas OT permiten dos operaciones y ser transformados por IT en dos estados de documento diferentes (o contextos).
Propiedades inversas
Las tres propiedades siguientes están relacionadas con la consecución del efecto de deshacer el grupo deseado. Son:
- IP1 : Dado cualquier estado de documento S y la secuencia , tenemos , lo que significa que la secuencia es equivalente a una única operación de identidad I con respecto al efecto sobre el estado del documento. Esta propiedad es necesaria en un sistema OT para lograr el efecto de deshacer correcto, pero no está relacionada con las funciones de TI.
- IP2 : La propiedad IP2 expresa que la secuencia no tiene efecto sobre la transformación de otras operaciones. Las funciones de transformación satisfacen IP2 si y solo si: , lo que significa que el resultado de la transformación contra la secuencia es equivalente al resultado de la transformación contra la operación de identidad I. Precondición de IP2 : IP2 se requiere solo si los sistemas OT permiten que una operación se transforme contra un par de operaciones de hacer y deshacer , una por una.
- IP3 : Dadas dos operaciones concurrentes y definidas en el mismo estado del documento (o contexto), si y . Las funciones de transformación satisfacen la propiedad IP3 si y solo si , lo que significa que la operación inversa transformada es igual a la inversa de la operación transformada . Precondición de IP3 : IP3 se requiere solo si el sistema OT permite que una operación inversa se transforme contra una operación que sea concurrente y definida en el mismo estado del documento que (o equivalente en contexto a) .
Algoritmos de control (integración) de OT
Se han diseñado varios algoritmos de control de OT para sistemas de OT con diferentes capacidades y para diferentes aplicaciones. La complejidad del diseño de algoritmos de control de OT está determinada por múltiples factores. Un factor diferenciador clave es si un algoritmo es capaz de soportar control de concurrencia (hacer) y/o deshacer en grupo. [3] [8] [12] [29] [31] Además, los diferentes diseños de algoritmos de control de OT implican diferentes compensaciones en:
- asignar responsabilidades de corrección entre el algoritmo de control y las funciones de transformación, y
- complejidad espacio-temporal del sistema OT.
La mayoría de los algoritmos de control de OT existentes para el control de concurrencia adoptan la teoría de causalidad/concurrencia como base teórica: las operaciones relacionadas causalmente deben ejecutarse en su orden causal; las operaciones concurrentes deben transformarse antes de su ejecución. Sin embargo, era bien sabido que la condición de concurrencia por sí sola no puede capturar todas las condiciones de transformación de OT. [3] [4] [5] [8] [32] En un trabajo reciente, se propuso la teoría del contexto de operación para representar explícitamente la noción de un estado de documento, que puede usarse para expresar formalmente las condiciones de transformación de OT para respaldar el diseño y la verificación de algoritmos de control de OT. [29]
La siguiente tabla ofrece una descripción general de algunos algoritmos de control/integración de OT existentes
Un orden total continuo es un orden total estricto donde es posible detectar un elemento faltante, es decir, 1,2,3,4,... es un orden total continuo, 1,2,3,5,... no es un orden total continuo.
Los algoritmos basados en transformaciones propuestos en [10] [11] se basan en los modelos de consistencia alternativos "CSM" y "CA" como se describió anteriormente. Sus enfoques difieren de los enumerados en la tabla. Utilizan marcas de tiempo vectoriales para la preservación de la causalidad. Las otras condiciones de corrección son la preservación de la relación de efectos de "operación única"/"múltiple" o la preservación de la "admisibilidad". Esas condiciones están garantizadas por el procedimiento de control y las funciones de transformación de manera sinérgica. No es necesario analizar TP1/TP2 en su trabajo. Por lo tanto, no se enumeran en la tabla anterior.
Existen otros algoritmos de control de consistencia optimistas que buscan formas alternativas de diseñar algoritmos de transformación, pero que no se ajustan bien a la taxonomía y caracterización anteriores. Por ejemplo, Mark y Retrace [35]
Los problemas de corrección de OT llevaron a la introducción de esquemas post-OT sin transformación, como WOOT, [36] Logoot [37] y árboles causales (CT). [38] Los esquemas "post-OT" descomponen el documento en operaciones atómicas, pero evitan la necesidad de transformar las operaciones empleando una combinación de identificadores de símbolos únicos, marcas de tiempo vectoriales y/o lápidas.
Crítica del AT
Si bien el enfoque clásico de OT de definir operaciones a través de sus desplazamientos en el texto parece simple y natural, los sistemas distribuidos del mundo real plantean problemas serios. Es decir, que las operaciones se propagan con una velocidad finita, los estados de los participantes a menudo son diferentes, por lo que las combinaciones resultantes de estados y operaciones son extremadamente difíciles de prever y comprender. Como lo expresan Li y Li, "Debido a la necesidad de considerar la cobertura de casos complicados, las pruebas formales son muy complicadas y propensas a errores, incluso para algoritmos OT que solo tratan dos primitivos por carácter (insertar y eliminar)". [39]
De manera similar, Joseph Gentle, ex ingeniero de Google Wave y autor de la biblioteca Share.JS, escribió: "Desafortunadamente, implementar OT es una tarea ardua. Hay un millón de algoritmos con diferentes compensaciones, la mayoría atrapados en artículos académicos. […] Wave tardó 2 años en escribirse y, si lo reescribiéramos hoy, nos llevaría casi el mismo tiempo escribirlo una segunda vez". [40] Pero más adelante modifica su comentario con "Ya no creo que Wave tardaría 2 años en implementarse ahora, principalmente debido a los avances en los marcos web y los navegadores web". [41]
Para que la OT funcione, es necesario capturar cada uno de los cambios que se realizan en los datos: "Obtener una instantánea del estado suele ser trivial, pero capturar las modificaciones es un asunto completamente diferente. […] La riqueza de las interfaces de usuario modernas puede hacer que esto sea problemático, especialmente en un entorno basado en navegador". Una alternativa a la OT es la sincronización diferencial. [42]
Otra alternativa a OT es utilizar tipos de secuencia de tipos de datos replicados libres de conflictos .
Véase también
- Sincronización de datos
- Editores colaborativos en tiempo real
- Tipos de datos replicados sin conflictos
- Modelos de consistencia
- Replicación optimista
Referencias
- ^ Sun, Chengzheng. "Preguntas frecuentes sobre OT". Archivado desde el original el 23 de junio de 2020.
- ^ abcdef Ellis, CA; Gibbs, SJ (1989). "Control de concurrencia en sistemas de software colaborativo". ACM SIGMOD Record . 18 (2): 399–407. CiteSeerX 10.1.1.465.2026 . doi :10.1145/67544.66963. S2CID 6488575.
- ^ abcde Ressel, Matthias y Nitsche-Ruhland, Doris y Gunzenhäuser, Rul (1996). Un enfoque integrador y orientado a la transformación para el control de concurrencia y la deshacer en editores de grupo . CSCW '96: Actas de la conferencia ACM de 1996 sobre trabajo cooperativo con apoyo informático. págs. 288–297. doi :10.1145/240080.240305.
{{cite conference}}: CS1 maint: multiple names: authors list (link) - ^ abcdefg Chengzheng Sun; Xiaohua Jia; Yanchun Zhang; Yun Yang; David Chen (1998). "Logro de convergencia, preservación de causalidad y preservación de intención en sistemas de edición cooperativa en tiempo real". ACM Trans. Comput.-Hum. Interact . 5 (1): 63–108. CiteSeerX 10.1.1.56.1251 . doi :10.1145/274444.274447. S2CID 14447070.
- ^ abcde Nichols, DA; Curtis, P.; Dixon, M.; Lamping, J. (1995). "Ventaneado de alta latencia y bajo ancho de banda en el sistema de colaboración Jupiter". Actas del 8º Simposio Anual de la ACM sobre Interfaz de Usuario y Tecnología de Software : 111–120. Archivado desde el original el 2015-11-30 . Consultado el 2009-09-27 .
- ^ ab Sun, C.; Ellis, C. (1998). Transformación operativa en editores de grupos en tiempo real: problemas, algoritmos y logros. Actas de la conferencia ACM de 1998 sobre trabajo cooperativo con apoyo informático. ACM Press Nueva York, NY, EE. UU., págs. 59–68.
- ^ "SIGCE - Un grupo internacional de interés especial sobre edición colaborativa". cooffice.ntu.edu.sg . Archivado desde el original el 2012-12-24 . Consultado el 2020-01-10 .
- ^ abcd C. Sun (2002). "Deshacer como inverso concurrente en editores de grupo". ACM Trans. Comput.-Hum. Interact . 9 (4): 309–361. doi :10.1145/586081.586085. S2CID 47453660.
- ^ Du Li; Rui Li (2004). Preservación de la relación de efectos de operación en editores de grupo . Actas de la Conferencia ACM CSCW'04 sobre trabajo cooperativo asistido por computadora. ACM Press Nueva York, NY, EE. UU., págs. 457–466.
- ^ ab Rui Li; Du Li (2007). "Un nuevo marco de transformación operativa para editores de grupos en tiempo real". IEEE Transactions on Parallel and Distributed Systems . 18 (3). IEEE Transactions on Parallel and Distributed Systems: 307–319. doi :10.1109/TPDS.2007.35. S2CID 18822760.
- ^ abcd Rui Li; Du Li (2005). Control de concurrencia basado en conmutatividad en groupware . Actas de la primera conferencia IEEE sobre computación colaborativa: redes, aplicaciones y trabajo compartido (CollaborateCom'05).
- ^ abc Prakash, Atul y Knister, Michael J. (1994). "Un marco para deshacer acciones en sistemas colaborativos". ACM Trans. Comput.-Hum. Interact . 1 (4): 295–330. CiteSeerX 10.1.1.51.4793 . doi :10.1145/198425.198427. S2CID 10705127.
- ^ abc Vidot, N.; Cart, M.; Ferrie, J.; Suleiman, M. (2000). Convergencia de copias en un entorno colaborativo distribuido en tiempo real (PDF) . Actas de la conferencia ACM de 2000 sobre trabajo cooperativo con apoyo informático. ACM Press Nueva York, NY, EE. UU., págs. 171–180. Archivado desde el original (PDF) el 12 de octubre de 2004.
- ^ D. Sun y S. Xia y C. Sun y D. Chen (2004). Transformación operativa para el procesamiento colaborativo de textos . Actas de la Conferencia ACM sobre Trabajo Cooperativo Asistido por Computadora. Págs. 437–446.
- ^ Agustina y F. Liu y S. Xia y H. Shen y C. Sun (noviembre de 2008). CoMaya: Incorporación de capacidades de colaboración avanzadas en herramientas de diseño de medios digitales {3D} . Actas de la conferencia ACM sobre trabajo cooperativo asistido por computadora. págs. 5–8.
- ^ Davis, Aguido Horatio y Sun, Chengzheng y Lu, Junwei (2002). Generalizing operating transforming to the standard general markup language . CSCW '02: Actas de la conferencia ACM de 2002 sobre trabajo cooperativo con apoyo informático. Nueva Orleans, Luisiana, EE. UU., págs. 58–67. doi :10.1145/587078.587088.
{{cite conference}}: CS1 maint: multiple names: authors list (link) - ^ Claudia-Lavinia Ignat; Moira C. Norrie (2003). Editor colaborativo personalizable basado en el algoritmo treeOPT . ECSCW'03: Actas de la octava conferencia sobre la Conferencia Europea sobre Trabajo Cooperativo Apoyado por Computadora. Kluwer Academic Publishers. págs. 315–334. doi :10.1007/978-94-010-0068-0_17.
- ^ Claudia-Lavinia Ignat; Moira C. Norrie (2008). "Edición multinivel de documentos jerárquicos". Trabajo cooperativo asistido por ordenador (CSCW) . 17 (5–6): 423–468. doi :10.1007/s10606-007-9071-2. S2CID 42752275.
- ^ abc C. Sun, S. Xia, D. Sun, D. Chen, H. Shen y W. Cai (2006). "Adaptación transparente de aplicaciones de un solo usuario para colaboración multiusuario en tiempo real". ACM Trans. Comput.-Hum. Interact . 13 (4): 531–582. doi :10.1145/1188816.1188821. S2CID 14184705.
{{cite journal}}: CS1 maint: multiple names: authors list (link) - ^ abcd "Transformación operativa de Google Wave". Archivado desde el original el 31 de mayo de 2009. Consultado el 29 de mayo de 2009 .
- ^ Christopher R. Palmer; Gordon V. Cormack (1998). Transformaciones de operaciones para una hoja de cálculo compartida distribuida . CSCW '98: Actas de la conferencia ACM de 1998 sobre trabajo cooperativo con apoyo informático. ACM Press. págs. 69–78. doi : 10.1145/289444.289474 .
- ^ Kagorskii, Anton. "Transformaciones operativas como algoritmo para la resolución automática de conflictos". medium.com . Consultado el 21 de diciembre de 2021 .
- ^ ab "Funciones de transformación de Tombstone para garantizar la coherencia en sistemas de edición colaborativa". Conferencia IEEE sobre computación colaborativa: redes, aplicaciones y compartición de trabajo . 2006-11-07.
- ^ C. Sun y R. Sosic (1999). Bloqueo opcional integrado con transformación operacional en editores de grupos distribuidos en tiempo real . En Proc. del 18.º Simposio ACM sobre principios de computación distribuida. págs. 43–52.
- ^ Begole, James y Rosson, Mary Beth y Shaffer, Clifford A. (1999). "Transparencia en la colaboración flexible: apoyo a la independencia de los trabajadores en sistemas replicados de uso compartido de aplicaciones". ACM Trans. Comput.-Hum. Interact . 6 (2): 95–132. CiteSeerX 10.1.1.23.1185 . doi :10.1145/319091.319096. S2CID 17895848.
{{cite journal}}: CS1 maint: multiple names: authors list (link) - ^ Li, Du y Li, Rui (2002). Uso compartido transparente e interoperación de aplicaciones heterogéneas de un solo usuario . CSCW '02: Actas de la conferencia ACM de 2002 sobre trabajo cooperativo con apoyo informático. Nueva Orleans, EE. UU., págs. 246–255.
- ^ Li, Du y Lu, Jiajun (2006). Un enfoque ligero para compartir de forma transparente editores familiares de un solo usuario . CSCW '06: Actas de la conferencia del 20º aniversario de 2006 sobre trabajo cooperativo con apoyo informático. Banff, Alberta, Canadá. págs. 139–148. doi :10.1145/1180875.1180896.
- ^ ab Shen, Haifeng y Sun, Chengzheng (2002). Notificación flexible para sistemas colaborativos . CSCW '02: Actas de la conferencia ACM de 2002 sobre trabajo cooperativo con apoyo informático. págs. 77–86. doi :10.1145/587078.587090.
- ^ abcd D. Sun y C. Sun (2009). "Transformación operativa basada en contexto para sistemas de edición colaborativa distribuida". IEEE Transactions on Parallel and Distributed Systems . 20 (10): 1454–1470. doi :10.1109/TPDS.2008.240. S2CID 18740053.
- ^ Gerald Oster; Pascal Molli; Pascal Urso; Abdessamad Imine (2006). "Funciones de transformación de Tombstone para garantizar la coherencia en sistemas de edición colaborativa" (PDF) . Procs. 2nd Intl. Conf. On Collaborative Computing: Networking, Appln. And Worksharing . Consultado el 26 de julio de 2007 .
- ^ ab M. Ressel y R. Gunzenhauser (1999). Reducción de los problemas de deshacer grupales . Actas de la Conferencia de la ACM sobre apoyo al trabajo grupal. Págs. 131-139.
- ^ ab Suleiman, M.; Cart, M.; Ferrié, J. (1998). Operaciones concurrentes en un entorno colaborativo distribuido y móvil . Actas de la decimocuarta conferencia internacional sobre ingeniería de datos, febrero. págs. 23–27. doi :10.1109/ICDE.1998.655755.
- ^ R. Li, D. Li y C. Sun (2004). Un algoritmo de control de consistencia basado en intervalos de tiempo para aplicaciones interactivas de software colaborativo . ICPADS '04: Actas de los sistemas paralelos y distribuidos, Décima Conferencia Internacional. pág. 429. doi :10.1109/ICPADS.2004.12.
- ^ M. Cart, Jean Ferrié (2007). Sincronizador basado en transformación operativa para entornos P2P (PDF) . Actas de la 3.ª Conferencia internacional sobre computación colaborativa: redes, aplicaciones y compartición de trabajo. pp. 127–138 . Consultado el 26 de julio de 2007 .
- ^ Gu, Ning y Yang, Jiangming y Zhang, Qiwei (2005). Mantenimiento de la consistencia basado en la técnica de marcado y retrazado en sistemas de software colaborativo . GROUP '05: Actas de la conferencia internacional ACM SIGGROUP de 2005 sobre apoyo al trabajo en grupo. págs. 264–273. doi :10.1145/1099203.1099250.
{{cite conference}}: CS1 maint: multiple names: authors list (link) - ^ Imine, Abdessamad y Molli, Pascal y Oster, Gerald y Urso, Pascal (2005). Editores de grupos en tiempo real sin transformación operacional. Informe de investigación INRIA RR-5580. pág. 24.
{{cite conference}}: CS1 maint: multiple names: authors list (link) - ^ Stephane Weiss y Pascal Urso y Pascal Molli (2010). "Logoot-Undo: sistema de edición colaborativa distribuida en redes P2P". Transacciones IEEE sobre sistemas paralelos y distribuidos . 21 (8). Transacciones IEEE sobre sistemas paralelos y distribuidos: 1162. doi :10.1109/TPDS.2009.173. S2CID 14172605.
- ^ Victor Grishchenko (2010). Hipertexto profundo con control de revisión integrado implementado en expresiones regulares (PDF) . Actas del 6º Simposio Internacional sobre Wikis y Colaboración Abierta (WikiSym '10). Archivado desde el original (PDF) el 2012-03-09 . Consultado el 2010-06-30 .
- ^ Du Li y Rui Li (2010). "Un marco de transformación operativa basado en la admisibilidad para sistemas de edición colaborativa". Trabajo cooperativo asistido por ordenador (CSCW) . 19 (1). Trabajo cooperativo asistido por ordenador: 1–43. doi :10.1007/s10606-009-9103-1. S2CID 35748875.
- ^ "ShareJS". 6 de noviembre de 2011. Archivado desde el original el 11 de mayo de 2012. Consultado el 16 de agosto de 2013 .
- ^ "¡Sí, soy yo! Por si sirve de algo, ya no creo que esa ola tardaría dos años... | Hacker News". news.ycombinator.com . Consultado el 13 de febrero de 2019 .
- ^ Neil Fraser (enero de 2009). "Sincronización diferencial".
Enlaces externos
- Preguntas frecuentes sobre transformación operativa: preguntas frecuentes y respuestas
- SIGCE: Grupo de Interés Especial de Edición Colaborativa
- Taller internacional sobre sistemas de edición colaborativa
- Sistema distribuido en línea: edición colaborativa
- Explicación sencilla de OT en Google Docs
- Conceptos básicos de OT en el marco Open Coweb
Charlas online relevantes
- Google Wave: edición colaborativa en vivo
- Google Tech Talk: Problemas y experiencias en el diseño de sistemas de edición colaborativa en tiempo real
- Charla de Microsoft Research: Mantenimiento de la coherencia en sistemas de edición colaborativa en tiempo real