La edición multiusuario afronta un problema fundamental: cuando dos personas editan el mismo documento sin conexión o en conexiones distintas, ambas copias cambian y alguien debe reconciliarlas. Los enfoques tradicionales o bien bloquean partes del documento —lo que obstaculiza la colaboración— o bien recurren a la transformación operacional, cuyas combinaciones de estados se multiplican y son famosas por ser difíciles de demostrar correctas.

En 2011, Marc Shapiro y sus colegas propusieron los tipos de datos replicados sin conflictos (CRDT): estructuras de datos diseñadas para que las actualizaciones concurrentes conmuten. Si toda actualización conmuta y las fusiones son asociativas, las réplicas que divergieron pueden fusionarse en cualquier orden y aun así converger a un único estado idéntico, sin coordinador central ni diálogo de conflictos. Los registros, contadores, conjuntos y editores de texto pueden construirse todos de este modo.

La teoría se afianzó en los años siguientes: el artículo OpSets de 2018, de Martin Kleppmann y sus colegas, construyó un marco ejecutable que verifica mecánicamente algoritmos de tipos de datos replicados, expuso una propiedad de corrección para el texto colaborativo que varios algoritmos publicados infringían, y especificó una operación de movimiento atómica que antes se consideraba imposible sin bloqueos.

Los sistemas en producción adoptaron la idea. El motor multijugador de Figma se inspira explícitamente en la investigación sobre CRDT: su diseño con autoridad del servidor y por propiedad funciona como un registro de último escritor gana, elegido después de que la empresa rechazara la transformación operacional por considerarla innecesariamente compleja. Redis, Riak y Cosmos DB incluyen tipos de datos basados en CRDT, y Notas de Apple usa CRDT para sincronizar ediciones sin conexión entre dispositivos.

Hacer que el tipo de datos sea conmutativo en la fusión por diseño

Las fusiones conmutativas hacen que el resultado sea independiente del orden de las actualizaciones

Las réplicas pueden editar sin conexión y converger sin ninguna autoridad central

La verificación mecánica sustituyó a las demostraciones de corrección poco rigurosas

Los productos al estilo de Figma obtuvieron colaboración en tiempo real sin la complejidad de la transformación operacional

Si la coordinación es el cuello de botella, rediseñe los datos para que la coordinación sea innecesaria: elija operaciones cuyos resultados sean independientes del orden, y los usuarios concurrentes obtendrán consistencia gratis.

Los CRDT son ahora la respuesta estándar para la colaboración y la replicación centradas en lo offline: la sincronización multijugador de Figma, los tipos de datos de Notas de Apple, Redis y Riak, y las herramientas de edición entre pares se basan en la idea, y la línea de investigación continúa con las partes difíciles de la edición de texto, los movimientos de árboles y los entornos bizantinos.

CONSULTA LAS PRUEBAS

Las fuentes

  1. OpSets: Sequential Specifications for Replicated Datatypes arXiv · arxiv.org ·
  2. How Figma's multiplayer technology works Figma Engineering Blog · figma.com
  3. Conflict-free replicated data type Wikipedia · en.wikipedia.org