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, Word procesamiento de documentos, bases de datos o presentaciones, al mismo tiempo por diferentes usuarios en diferentes computadoras o dispositivos móviles, con la 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, 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.
Con la edición colaborativa asincrónica (es decir, no en tiempo real, retrasada o fuera de línea), cada usuario normalmente debe enviar manualmente (publicar, enviar o confirmar), actualizar (actualizar, extraer, descargar o sincronizar) y (si se produce algún conflicto de edición) fusionar sus ediciones. Debido a la naturaleza retrasada de la edición colaborativa asincrónica, varios usuarios pueden terminar editando la misma línea, palabra, elemento, datos, fila o campo, lo que genera conflictos de edición que requieren la fusión o sobrescritura de la edición manual, lo que requiere que el usuario elija qué ediciones usar. o (según el sistema y la configuración) sobrescribiendo automáticamente sus ediciones o las ediciones de otras personas, con o sin una advertencia.
La primera instancia de un editor colaborativo en tiempo real fue demostrada por Douglas Engelbart en 1968, en La madre de todas las demostraciones. Las implementaciones ampliamente disponibles del concepto tardaron décadas en aparecer.
Instant Update se lanzó para el Mac OS clásico en 1991 de ON Technology. Más tarde, también se lanzó una versión para Microsoft Windows, que permite la colaboración en tiempo real entre estos dos sistemas operativos. Instant Update se basó en un servidor de grupo de trabajo para coordinar los documentos actualizados en tiempo real en múltiples clientes.
El fenómeno de la Web 2.0 ha provocado una explosión de interés en las herramientas de edición de documentos basadas en navegador. En particular, un producto llamado Writely experimentó un crecimiento explosivo de usuarios y fue comprado por Google en marzo de 2006 (lo que se conoció como Google Docs y luego se renombró como Google Drive ). Proporcionó ediciones simultáneas en la totalidad de un documento, aunque los cambios de otros usuarios solo se reflejaron después de que el programa cliente sondeara el servidor (aproximadamente cada medio minuto). 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. Sin embargo, después de que Google comprara la empresa matriz JotSpot en noviembre de 2006, el sitio se cerró. Google Sites se lanzó en febrero de 2007 como una refactorización de JotSpot, 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 para llenar el vacío en la edición colaborativa en tiempo real basada en navegador, aunque aún no pueden lograr un rendimiento real en tiempo real, especialmente en un arquitectura a gran escala.
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. 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 que había decidido dejar de desarrollar Wave como un proyecto independiente, debido a una adopción insuficiente por parte de los usuarios. Después de que Google libera el código fuente EtherPad abandonados como de código abierto en diciembre de 2009, la comunidad se hizo cargo de su desarrollo y produjo una reescritura completa llamado Etherpad Lite, que está escrito totalmente en JavaScript y construido en la cima de Node.js. Otras herramientas notables basadas en la tecnología de transformación operativa son CKEditor y SubEthaEdit. 2020 ha visto un aumento del interés en el concepto, ya que Microsoft también lanzó recientemente su marco Fluid, que se basa en una novedosa tecnología Total Order Broadcast, a diferencia de OT o CRDT. Fluid es actualmente un marco agnóstico. Microsoft afirma que aún no está listo para su uso en producción.
En junio de 2016, Collabora Productivity lanzó V1.0 de Collabora Online, una suite ofimática en línea de código abierto 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 idiomas ( Python, PHP, Node.js y JavaScript ) y especificaciones API, permite integraciones interoperables y las interfaces de usuario son personalizables. Permite la edición colaborativa en tiempo real de documentos de procesamiento de texto, hojas de cálculo, presentaciones, dibujos y gráficos vectoriales.
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 el almacenamiento en la nube de Office.com, OneDrive o SharePoint, o Google Docs y otras aplicaciones de productividad de Google Workspace (suite de oficina), para la edición colaborativa en línea de procesamiento de texto 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, en la 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. 2020 ha visto un resurgimiento del interés en integrar estas aplicaciones en aplicaciones web seguras, particularmente para casos de uso empresarial, con Microsoft y Vaadin a la cabeza con backends de colaboración en tiempo real especializados que manejan las complejidades del intercambio de datos sincrónicos en tiempo real, que los desarrolladores pueden utilizar a través de API.
Vaadin Ltd., el proveedor de la plataforma Vaadin, lanzó la V1.0 de su motor de colaboración en octubre de 2020, 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 de Java utilizando unos pocos líneas de códigos (para casos de uso específicos a través de sus API de alto nivel, aún limitadas). Esta característica actualmente es compatible con Java, aunque el proveedor señala que también está entrando una API basada en TypeScript, en línea con la reciente expansión en curso de la plataforma Vaadin para habilitar también la construcción de UI basada en TypeScript en el futuro a través de su próximo marco Fusion.
La complejidad de las soluciones de edición colaborativa en tiempo real se debe a 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 de usuario único, porque un documento podría editarse utilizando un algoritmo similar al siguiente:
Sin embargo, la velocidad de comunicación está limitada por la latencia de la red. Esto crea un dilema fundamental: los usuarios necesitan sus propias ediciones incorporadas al documento instantáneamente, pero si se incorporan instantáneamente, debido a la latencia de la comunicación, sus ediciones deben necesariamente insertarse en diferentes versiones del documento.
Un ejemplo ilustra este problema. Suponga que Bob y Alice comienzan con un documento que contiene la palabra Mary. Bob elimina 'M', luego inserta 'H', para cambiar la palabra a Hary. Alice, antes de recibir una edición de Bob, elimina la 'r', luego elimina la 'a', para cambiarla a My. Tanto Bob como Alice recibirán las ediciones 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 descubrir exactamente cómo aplicar las ediciones de usuarios remotos, que se crearon originalmente 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 el bloqueo (todos los usuarios pueden editar libremente todas las partes de un documento al mismo tiempo) y admite cualquier número de usuarios (limitado solo por los recursos). de las computadoras). 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 la función de servidor de colaboración cuando se abre el documento. Este servidor asegura que otros editores se mantengan sincronizados determinando la latencia de la red y actuando 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 deben 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 significativamente menos poderoso, permite la colaboración básica a un costo relativamente bajo. Esto lo hace preferible en situaciones en las que los recursos de procesamiento son limitados. NetSketch es un ejemplo de un programa que usa este modelo.
En el pasado, Microsoft e IBM han trabajado para agregar facilidades de colaboración a sus arquitecturas existentes. Aunque se comercializan como colaboración en tiempo real, estos enfoques de 'espacio de trabajo' requieren el bloqueo de documentos (por lo que solo una persona puede editarlos a la vez) o la 'reconciliación' de cambios conflictivos, que los usuarios generalmente consideran insatisfactorio.