Un editor colaborativo en tiempo real es un tipo de software o aplicación web colaborativa que permite la edición colaborativa en tiempo real , la edición simultánea o la edición en directo del mismo documento digital , archivo informático o datos almacenados en la nube (como una hoja de cálculo en línea , un documento de procesamiento de textos , una base de datos o una presentación ) al mismo tiempo por diferentes usuarios en diferentes ordenadores o dispositivos móviles , con una fusión automática y casi instantánea de sus ediciones.
La edición en tiempo real sincroniza automáticamente, de forma periódica y casi instantánea, las ediciones de todos los usuarios en línea mientras editan el documento en sus respectivos dispositivos. Esto está diseñado para evitar o minimizar los conflictos de edición .
Con la edición colaborativa asíncrona (es decir, no en tiempo real, con retraso o sin conexión), cada usuario normalmente debe enviar (publicar, enviar o confirmar) manualmente, actualizar (actualizar, extraer, descargar o sincronizar) y (si se producen conflictos de edición) fusionar sus ediciones. Debido a la naturaleza diferida de la edición colaborativa asíncrona, 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 las ediciones, obligando al usuario a elegir qué ediciones usar o (dependiendo del sistema y la configuración) sobrescribiendo automáticamente sus ediciones o las de otros usuarios, con o sin advertencia.
Historia de los productos clave
El primer ejemplo de un editor colaborativo en tiempo real fue demostrado por Douglas Engelbart en 1968, en The Mother of All Demos . Las implementaciones ampliamente disponibles de este concepto tardaron décadas en aparecer.
En 1991, ON Technology lanzó un software llamado Instant Update para el Mac OS clásico . [ 1 ] Permitía la edición en tiempo real de un solo documento por varios usuarios a través de una LAN y dependía de un servidor de grupo de trabajo .
En COMDEX 2001 se presentó Quickoffice Conference , una hoja de cálculo colaborativa desarrollada por Jeff Musa de Cutting Edge Software. El software fue diseñado para permitir conferencias y colaboración entre pares y entre múltiples pares, y funcionaba en la plataforma móvil Palm OS. [ 2 ]
El interés por la edición colaborativa en tiempo real a través de Internet propició el desarrollo de MoonEdit y SubEthaEdit entre 2003 y 2005, seguidos poco después por Gobby .
Con la introducción de la tecnología Ajax y la función de "edición de contenido" en los navegadores, la edición colaborativa en tiempo real basada en la web se desarrolló como parte del fenómeno Web 2.0 alrededor de 2005. 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 ). Proporcionaba ediciones simultáneas en todo un documento, aunque los cambios de otros usuarios solo se reflejaban después de que el programa cliente consultara al servidor (cada medio minuto aproximadamente). 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. [ 3 ] Sin embargo, después de la compra de la empresa matriz JotSpot por parte de Google en noviembre de 2006, el sitio fue cerrado. Google Sites se lanzó en febrero de 2007 como una refactorización de JotSpot, [ 4 ] [ 5 ] [ 6 ] [ 7 ] pero carece de las capacidades multiusuario en tiempo real de JotLive. Los proyectos Synchroedit (texto enriquecido) y MobWrite (texto plano) son dos intentos más recientes de código abierto para llenar el vacío en la edición colaborativa basada en navegador en tiempo real, aunque todavía no pueden lograr un rendimiento en tiempo real real, especialmente en una arquitectura a gran escala.
En 2009, Google comenzó a probar en versión beta Google Wave , un entorno de colaboración en tiempo real que Google esperaba que eventualmente reemplazara el correo electrónico y la mensajería instantánea. Google adquirió EtherPad y asignó al equipo de EtherPad para trabajar dentro del proyecto Wave. Sin embargo, en agosto de 2010, Google anunció en su blog [ 8 ] que había decidido dejar de desarrollar Wave como un proyecto independiente, debido a la insuficiente adopción 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 . [ 9 ] En 2020 se ha visto un aumento del interés en el concepto, ya que Microsoft también lanzó recientemente su Fluid Framework , que se basa en una novedosa tecnología de difusión de órdenes totales, a diferencia de OT o CRDT. [ 10 ] Fluid es actualmente independiente del framework. Microsoft afirma que aún no está listo para su uso en producción. [ 11 ]
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 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 ejemplo en varios lenguajes: Node.js , PHP , Python , ReactJS y .NET . Estos lenguajes cuentan con especificaciones de API que permiten integraciones interoperables con interfaces de usuario personalizables. [ 12 ] [ 13 ] [ 14 ] Con Collabora Online, los documentos permanecen en el servidor y cada usuario comparte el mismo documento simultáneamente, lo que permite editar un solo documento de forma interactiva sin latencia adicional para ver la escritura de 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.
Otros ejemplos
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 "Coautoría") de documentos de Word , hojas de cálculo de Excel , PowerPoint y otros documentos de Microsoft Office almacenados en Office.com , OneDrive o el almacenamiento en la nube de SharePoint , o Google Docs y otras aplicaciones de productividad (suite de oficina) de Google Workspace , para la edición colaborativa en línea de documentos 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, [ 15 ] en edición colaborativa fuera de línea, basada en la web y en línea en software de escritorio, así como en aplicaciones web y móviles, que pueden sincronizarse automáticamente con acceso instantáneo al historial de versiones. En 2020 se observó un resurgimiento del interés en integrar estas aplicaciones en aplicaciones web seguras, particularmente para casos de uso empresarial, con Microsoft y Vaadin liderando con backends de colaboración en tiempo real especializados que manejan las complejidades del intercambio de datos síncronos en tiempo real, que los desarrolladores pueden utilizar a través de API. [ 16 ] [ 17 ] Mozilla lanzó en 2013 la biblioteca de JavaScript TogetherJS, que agrega 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 operativa para la sincronización de formularios. [ 18 ]
Vaadin Ltd., el proveedor de la plataforma Vaadin, lanzó la versión 1.0 de su Motor de Colaboración en octubre de 2020, [ 19 ] 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). [ 20 ] Esta función actualmente admite Java, aunque el proveedor señala que también se lanzará una API basada en TypeScript, en línea con la reciente expansión de la plataforma Vaadin para habilitar también la creación de interfaces de usuario basadas en TypeScript en el futuro a través de su próximo marco Fusion. [ 21 ] [ 22 ]
Desafíos técnicos
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 para un solo usuario, ya que un documento podría editarse utilizando un algoritmo similar al siguiente:
- Solicitar un token de "editar documento" al servidor.
- Espere hasta que el servidor indique que es nuestro turno de editar el documento.
- Indica al servidor cómo editar el documento.
- Libere el token de 'editar documento'
Sin embargo, la velocidad de comunicación está limitada por la latencia de la red. Esto crea un dilema fundamental: los usuarios necesitan que sus ediciones se incorporen al documento al instante, pero si se incorporan al instante, debido a la latencia de la comunicación, sus ediciones deben insertarse necesariamente en diferentes versiones del documento.
Un ejemplo ilustra este problema. Supongamos que Bob y Alice parten de un documento que contiene la palabra "Mary" . Bob borra la "M" y luego inserta la "H", transformando la palabra en "Hary" . Alice, antes de recibir cualquiera de las ediciones de Bob, borra la "r" y luego la "a", transformándola en "My" . Tanto Bob como Alice recibirán entonces ediciones aplicadas a versiones del documento que nunca existieron en sus respectivos ordenadores.
Por lo tanto, el reto de la edición colaborativa en tiempo real consiste en averiguar exactamente cómo aplicar las ediciones de los usuarios remotos, que fueron creadas originalmente en versiones del documento que nunca existieron localmente y que pueden entrar en conflicto con las propias ediciones locales del usuario.
Las soluciones más sofisticadas resuelven este problema sin necesidad de un servidor, sin utilizar bloqueos (todos los usuarios pueden editar libremente todas las partes de un documento simultáneamente) y admitiendo 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, una de las instancias del editor asume el rol de servidor de colaboración al abrir el documento. Este servidor garantiza la sincronización de los demás editores al determinar la latencia de la red y actuar como servidor de sincronización horaria . 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 los difunde al grupo de colaboración. En algunos modelos, los cambios no se reflejan en el cliente hasta que el servidor devuelve una respuesta oficial, incluso si se realizaron localmente.
Este enfoque, si bien es considerablemente menos potente, permite una colaboración básica a un costo relativamente bajo. Esto lo hace preferible en situaciones donde 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 funciones de colaboración a sus arquitecturas existentes. [ 23 ] Aunque se comercializan como colaboración en tiempo real, estos enfoques de "espacio de trabajo" requieren el bloqueo de documentos (de modo que solo una persona puede editarlo a la vez) o la "conciliación" de cambios conflictivos, lo que generalmente resulta insatisfactorio para los usuarios.
Véase también
Referencias
- ↑ "Manual de usuario" . Archivado del original el 21 de febrero de 2009.
- ↑ Castagna, Rich. "Comdex 2001: La informática móvil se hace realidad" . ZDNET . Consultado el 16 de mayo de 2025 .
- ↑ Michael Arrington (27 de septiembre de 2005). "JotSpot Live: ¿La wiki perfecta?" . TechCrunch .
- ↑ Michael Arrington (27 de febrero de 2008). "Google tardó 16 meses, pero relanza Jotspot" . TechCrunch .
- ↑ David Chartier (28 de febrero de 2008). "Primer vistazo: Google relanza JotSpot como Google Sites" . Ars technica.
- ↑ Dan Farber (27 de febrero de 2008). "JotSpot reencarnado como Google Sites" . Noticias de CNET . Archivado del original el 15 de mayo de 2008. Consultado el 19 de marzo de 2008 .
- ↑ Mark 'Rizzn' Hopkins (27 de febrero de 2008). "Google finalmente libera a JotSpot con Google Sites" . Mashable .
- ↑ Ina Fried y Josh Lowensohn (04/08/2010). "Google retira el soporte para Google Wave" . CNET .
- ↑ SunChengzheng; SunDavid; NgAgustina; CaiWeiwei; ChoBryden (2020-01-04). "Diferencias reales entre OT y CRDT bajo un marco de transformación general para el mantenimiento de la coherencia en coeditores" . Actas de la ACM sobre interacción humano-computadora . 4 : 1–26 . arXiv : 1905.01518 . doi : 10.1145/3375186 .
- ↑ "Preguntas frecuentes" . fluidframework-docs.azureedge.net . Consultado el 2 de noviembre de 2020 .
- ↑ "Fluid Framework" . fluidframework-docs.azureedge.net . Consultado el 2 de noviembre de 2020 .
- ↑ Gathoye, William (2 de junio de 2016). "Collabora Productivity lanza Collabora Online 1.0 "Engine" para proveedores de alojamiento y nubes" . Archivado del original el 7 de agosto de 2016. Consultado el 2 de septiembre de 2021 .
- ↑ "Collabora Online SDK" . Archivado del original el 1 de marzo de 2021. Consultado el 2 de septiembre de 2021 .
- ↑ Guoan, Xiao (10 de diciembre de 2020). "Integración de Collabora Online con Nextcloud en Ubuntu con Docker" . LinuxBabe . Archivado del original el 14 de junio de 2020. Consultado el 2 de septiembre de 2021 .
- ↑ "Aplicación gratuita sin código, IA analítica, blockchain, Excel y plataforma de colaboración Web 3.0" . PowerSheet.ai . Consultado el 8 de junio de 2020 .
- ↑ "Fluid Framework" . fluidframework-docs.azureedge.net . Consultado el 2 de noviembre de 2020 .
- ↑ "Motor de colaboración" . Vaadin . Consultado el 2 de noviembre de 2020 .
- ↑ "Mozilla Labs : Descripción general tecnológica de TogetherJS" . togetherjs.com . Mozilla Labs . Consultado el 12 de enero de 2023 .
- ↑ "Conoce Collaboration Engine: La forma más sencilla de crear aplicaciones web colaborativas" . Vaadin . Consultado el 2 de noviembre de 2020 .
- ↑ "Motor de colaboración" . Vaadin . Consultado el 2 de noviembre de 2020 .
- ↑ "Un vistazo al futuro de las funciones de colaboración en tiempo real de Vaadin" . Vaadin . Consultado el 2 de noviembre de 2020 .
- ↑ "Presentación de Vaadin Flow y Fusion" . Vaadin . Consultado el 2 de noviembre de 2020 .
- ↑ Microsoft Live Communications Archivado el 5 de marzo de 2008 en el Archivo Web Portugués Comercializado como en tiempo real, pero no en tiempo real en el sentido de este artículo.
- Colaboración
- Editores colaborativos en tiempo real