7 puntos por GN⁺ 2023-10-19 | 1 comentarios | Compartir por WhatsApp
  • Reflect es un nuevo framework para construir aplicaciones web multijugador similares a Figma, Notion y Google Sheets.
  • Es una versión evolucionada de Replicache, el framework de sincronización del lado del cliente, y agrega un servidor totalmente administrado para facilitar el desarrollo de apps multijugador.
  • Reflect ahora está disponible públicamente por primera vez.
  • Este framework aborda el problema de la resolución de conflictos en la edición colaborativa y hace que todos los usuarios vean el mismo contenido mientras los conflictos se resuelven de forma natural.
  • A diferencia de herramientas populares del ecosistema web como los CRDTs (Conflict-Free Replicated Data Types), Reflect usa la tecnología Transactional Conflict Resolution, popular en la industria de los videojuegos.
  • Las ventajas y diferencias distintivas de Reflect surgen de decisiones clave en el núcleo de este motor de sincronización.
  • Reflect usa funciones de JavaScript llamadas mutators para implementar cambios, y genera un mutation record cuando se invoca un mutator.
  • Las mutations se aplican localmente y se transmiten al servidor, donde este las lineariza según el momento de llegada para generar el siguiente estado autoritativo.
  • Reflect puede manejar aplicaciones que se mueven rápido y agregar mutations mientras espera la confirmación de las anteriores.
  • Este framework requiere un almacenamiento de datos rápido capaz de rebobinar, bifurcar y crear ramas, además de un almacenamiento rápido del lado del servidor que pueda seguir el ritmo de las mutations entrantes.
  • El enfoque de Reflect se generaliza bien y es adecuado para diversas tareas, como operaciones aritméticas, operaciones sobre listas y aplicación de invariantes de alto nivel.
  • El servidor de Reflect es autoritativo: vuelve a calcular por su cuenta el resultado de las mutations y hace que todos los clientes vean ese resultado.
  • Esta autoridad del servidor permite una autenticación detallada y la ejecución de otro código en el servidor.
  • Reflect también ofrece beneficios como validación de esquemas y migraciones.
  • La estrategia de sincronización de Reflect, Transactional Conflict Resolution, es simple, flexible y poderosa, por lo que es una buena opción para construir aplicaciones multijugador.

1 comentarios

 
GN⁺ 2023-10-19
Opiniones de Hacker News
  • Este artículo analiza Reflect, un framework para apps web multijugador con sincronización estilo videojuego.
  • La demo de Reflect en la página principal es interactiva y parece mostrar a usuarios expresando entusiasmo al completar tareas, lo que resulta muy interesante.
  • Reflect no es de código abierto, por lo que eso podría limitar su adopción en empresas que priorizan software open source para infraestructura crítica.
  • Reflect antes era conocido como Replicache y ahora incluye un servidor de sincronización rápido.
  • Este framework permite que los usuarios decidan cómo manejar conflictos con código simple y secuencial, lo cual se considera una ventaja frente a los CRDTs.
  • El modelo de datos y el modelo de programación de Reflect reciben elogios por su simplicidad.
  • Hay una discusión sobre los retos de implementar operaciones sobre listas en Reflect, especialmente en escenarios con actualizaciones simultáneas de varios usuarios.
  • Un usuario señala la terminología confusa usada en Reflect y propone “multiusuario” en lugar de “multijugador” para software que no es de videojuegos.
  • Hay preguntas sobre cómo Reflect maneja la autenticación, ya que las bibliotecas CRDT a menudo carecen de una autoridad central que valide las mutaciones.
  • La estrategia de Reflect se compara con la “sincronización determinista” usada en desarrollo de videojuegos para sincronizar el estado de muchas entidades.
  • Se plantean preguntas sobre cómo Reflect maneja las actualizaciones de los mutators y las posibles discrepancias entre las operaciones del cliente y del servidor.
  • Un usuario expresa que para manejar mensajería de alta frecuencia en un motor multijugador se necesita un protocolo UDP dentro del navegador, y critica la sobrecarga de TCP y WebSocket.