Un editor colaborativo en tiempo real es un tipo de software colaborativo o aplicación web que permite la edición colaborativa en tiempo real , la edición simultánea o la edición en vivo del mismo documento digital , archivo de computadora o datos almacenados en la nube (como una hoja de cálculo en línea , un documento de procesamiento de texto , una base de datos o una presentación ) al mismo tiempo por diferentes usuarios en diferentes computadoras o dispositivos móviles , con una fusión automática y casi instantánea de sus ediciones.
La edición en tiempo real realiza una sincronización automática, periódica y a menudo casi instantánea de las ediciones de todos los usuarios en línea mientras editan el documento en su propio dispositivo. Esto está diseñado para evitar o minimizar los conflictos de edición .
En la edición colaborativa asincrónica (es decir, no en tiempo real, con retraso o sin conexión), cada usuario debe enviar (publicar, enviar o confirmar) manualmente, actualizar (refrescar, extraer, descargar o sincronizar) y (si se produce algún conflicto de edición) fusionar sus ediciones. Debido a la naturaleza retardada de la edición colaborativa asincrónica, varios usuarios pueden terminar editando la misma línea, palabra, elemento, dato , fila o campo, lo que genera conflictos de edición que requieren la fusión o sobrescritura manual de ediciones, lo que requiere que el usuario elija qué ediciones usar o (según el sistema y la configuración) sobrescriba automáticamente sus ediciones o las ediciones de otras personas, con o sin advertencia.
El primer ejemplo de un editor colaborativo en tiempo real fue presentado por Douglas Engelbart en 1968, en The Mother of All Demos . Las implementaciones del concepto que estaban ampliamente disponibles tardaron décadas en aparecer.
En 1991, ON Technology lanzó un software llamado Instant Update para el sistema operativo Mac clásico . [1] [ se necesita una mejor fuente ] Permitía la edición en tiempo real de un solo documento por parte de múltiples usuarios a través de una LAN y dependía de un servidor de grupo de trabajo .
El interés en la edición colaborativa en tiempo real a través de Internet condujo al desarrollo de MoonEdit y SubEthaEdit en el período 2003-2005, seguidos poco después por Gobby .
Con la introducción de la tecnología Ajax y la función de "contenido editable" en los navegadores, la edición colaborativa basada en la web en tiempo real se desarrolló como parte del fenómeno Web 2.0 alrededor de 2005. En particular, un producto llamado Writely vio un crecimiento explosivo de usuarios y fue comprado por Google en marzo de 2006 (lo que se conoció como Google Docs y luego cambió de nombre a Google Drive ). Proporcionaba ediciones simultáneas en la totalidad de un documento, aunque los cambios de otros usuarios solo se reflejaban después de que el programa cliente sondeara al servidor (cada medio minuto aproximadamente). [ cita requerida ] Otra solución temprana basada en la web fue JotSpotLive, en la que la edición simultánea línea por línea estaba disponible casi en tiempo real. [2] Sin embargo, después de que Google comprara la empresa matriz JotSpot en noviembre de 2006, el sitio fue cerrado. Google Sites se lanzó en febrero de 2007 como una refactorización de JotSpot, [3] [4] [5] [6] pero carece de las capacidades multiusuario en tiempo real de JotLive. Los proyectos Synchroedit (texto enriquecido) y MobWrite (texto sin formato) son dos intentos de código abierto más recientes [ ¿cuándo? ] de llenar el vacío en la edición colaborativa en tiempo real basada en navegador, aunque aún no pueden lograr un verdadero rendimiento en tiempo real, especialmente en una arquitectura de gran escala. [ cita requerida ]
En 2009, Google comenzó a realizar pruebas beta de Google Wave , un entorno de colaboración en tiempo real que Google esperaba que eventualmente desplazara al correo electrónico y la mensajería instantánea. [ cita requerida ] EtherPad fue adquirido por Google, que asignó al equipo de EtherPad para trabajar dentro del proyecto Wave. Sin embargo, Google anunció en agosto de 2010 en su blog [7] que había decidido dejar de desarrollar Wave como un proyecto independiente, debido a la adopción insuficiente por parte de los usuarios. Después de que Google publicara el código fuente abandonado de EtherPad como código abierto en diciembre de 2009, la comunidad se hizo cargo de su desarrollo y produjo una reescritura completa llamada Etherpad lite , que está escrita completamente en JavaScript y construida sobre Node.js. Otra herramienta notable basada en la tecnología de transformación operativa es CKEditor . [8] 2020 ha visto un aumento de interés en el concepto, ya que Microsoft también lanzó recientemente su Fluid Framework , que se basa en una novedosa tecnología Total Order Broadcast, a diferencia de OT o CRDT. [9] Fluid es actualmente independiente del marco. Microsoft afirma que aún no está listo para su uso en producción. [10]
En junio de 2016, Collabora Productivity lanzó la versión 1.0 de Collabora Online , una suite ofimática en línea de código abierto que utiliza la tecnología LibreOffice y que se puede integrar en cualquier sitio web con unas pocas líneas de código. Existe un kit de desarrollo de software con código de integración de muestra en varios lenguajes: Node.js , PHP , Python , ReactJS y .NET ; estos tienen especificaciones API que permiten integraciones interoperables con interfaces de usuario personalizables. [11] [12] [13] Con Collabora Online, los documentos permanecen en el servidor, cada usuario comparte el mismo documento simultáneamente, lo que permite editar solo un documento en tiempo real e interactivamente sin retrasos ni latencia adicionales para ver lo que escriben otros usuarios. Evita la necesidad de bloquear párrafos en documentos de texto. Permite la edición colaborativa en tiempo real de documentos de procesamiento de texto, hojas de cálculo, presentaciones, dibujos y gráficos vectoriales.
Recientemente [ ¿cuándo? ] , la edición colaborativa en tiempo real ha regresado a las aplicaciones de edición de texto independientes con extensiones para Atom y Visual Studio Code lanzadas en 2020. [14] [15]
La edición colaborativa en tiempo real puede ocurrir en línea en aplicaciones web como Microsoft Office en la web (anteriormente Office Online ), que admite la edición simultánea en línea ( basada en la web ) (a la que Microsoft se refiere como "Co-Autoría") de documentos de Word , hojas de cálculo de Excel , PowerPoint y otros documentos de Microsoft Office almacenados en Office.com , OneDrive o almacenamiento en la nube de SharePoint , o Google Docs y otras aplicaciones de productividad de Google Workspace (paquete de oficina) , para la edición colaborativa en línea de procesamiento de textos y otros documentos almacenados en Google Drive . La edición colaborativa en tiempo real también puede ocurrir de manera híbrida, como con Power Sheet BI para Excel, [16] en edición colaborativa fuera de línea, basada en la web y en línea en software de escritorio, así como en aplicaciones móviles y basadas en la web, que se pueden sincronizar automáticamente con acceso instantáneo al historial de versiones. En 2020, se ha producido un resurgimiento del interés por integrar estas aplicaciones en aplicaciones web seguras, en particular para casos de uso empresarial, con Microsoft y Vaadin a la cabeza con backends de colaboración especializados en tiempo real que gestionan las complejidades del intercambio de datos sincrónicos en tiempo real, que los desarrolladores pueden utilizar a través de API. [17] [18] Mozilla lanzó en 2013 la biblioteca de JavaScript TogetherJS, que añade edición colaborativa en tiempo real a cualquier aplicación web a través de un sistema de mensajería y, opcionalmente, un algoritmo de transformación operacional para la sincronización de formularios. [19]
Vaadin Ltd., el proveedor de la plataforma Vaadin, lanzó la versión 1.0 de su motor de colaboración en octubre de 2020, [20] con la premisa de permitir a los desarrolladores crear rápidamente funciones de edición y colaboración en tiempo real en cualquier aplicación web con backends Java utilizando unas pocas líneas de código (para casos de uso específicos a través de sus API de alto nivel, aún limitadas). [21] Esta función actualmente es compatible con Java, aunque el proveedor señala que también se lanzará una API basada en TypeScript, en línea con la reciente expansión en curso de la plataforma Vaadin para permitir también la creación de UI basada en TypeScript en el futuro a través de su próximo marco Fusion. [22] [23]
La complejidad de las soluciones de edición colaborativa en tiempo real surge de la latencia de la comunicación. En teoría, si la comunicación fuera instantánea, crear un editor colaborativo en tiempo real no sería más difícil que crear un editor para un solo usuario, ya que se podría editar un documento utilizando un algoritmo similar al siguiente:
Sin embargo, la velocidad de la comunicación está limitada por la latencia de la red, lo que genera un dilema fundamental: los usuarios necesitan que sus propias modificaciones se incorporen al documento de forma instantánea, pero si se incorporan de forma instantánea, debido a la latencia de la comunicación, sus modificaciones deben insertarse necesariamente en diferentes versiones del documento.
Un ejemplo ilustra este problema. Supongamos que Bob y Alice comienzan con un documento que contiene la palabra Mary . Bob elimina "M" y luego inserta "H" para cambiar la palabra a Hary . Alice, antes de recibir cualquiera de las modificaciones de Bob, elimina "r" y luego "a" para cambiarla a My . Tanto Bob como Alice recibirán entonces modificaciones que se aplicaron a versiones del documento que nunca existieron en sus propias máquinas.
Por lo tanto, el desafío de la edición colaborativa en tiempo real es determinar exactamente cómo aplicar las ediciones de usuarios remotos, que originalmente se crearon en versiones del documento que nunca existieron localmente y que pueden entrar en conflicto con las ediciones locales del propio usuario.
Las soluciones más sofisticadas resuelven este problema de una manera que no requiere un servidor, no utiliza bloqueos (todos los usuarios pueden editar libremente todas las partes de un documento al mismo tiempo) y admite cualquier número de usuarios (limitado únicamente por los recursos de los ordenadores). UNA y SubEthaEdit son ejemplos de dos programas que adoptan este enfoque.
Si bien estos enfoques sofisticados permiten la mejor experiencia de usuario , también se puede crear un editor colaborativo básico en un modelo cliente-servidor . En un escenario cliente-servidor, a una de las instancias del editor se le asigna el rol de servidor de colaboración cuando se abre el documento. Este servidor garantiza que los demás editores se mantengan sincronizados al determinar la latencia de la red y actuar como un servidor de sincronización de tiempo . El servidor recibe notificaciones con marca de tiempo de los cambios realizados en el documento por otros usuarios. Determina cómo deberían afectar esos cambios a su copia local y transmite sus cambios al grupo de colaboración. En algunos modelos, los cambios no se reflejan en un cliente hasta que se devuelve una respuesta oficial del servidor, incluso si esos cambios se realizaron localmente.
Este enfoque, aunque es significativamente menos potente, permite una colaboración básica a un costo relativamente bajo, lo que lo hace preferible en situaciones en las que los recursos de procesamiento son limitados. NetSketch es un ejemplo de un programa que utiliza este modelo.
En el pasado, Microsoft e IBM han trabajado para agregar facilidades de colaboración a sus arquitecturas existentes. [24] Aunque se comercializan como colaboración en tiempo real, estos enfoques de "espacio de trabajo" requieren el bloqueo de documentos (para que solo una persona pueda editarlos a la vez) o la "conciliación" de cambios conflictivos, lo que generalmente los usuarios consideran insatisfactorio. [ cita requerida ]