- Braid es un grupo de trabajo abierto que crea algoritmos, aplicaciones, herramientas y estándares para la sincronización de estado interoperable.
- Su objetivo es hacer que leer y escribir estado distribuido en sistemas de cómputo en red sea tan fácil como usar variables locales.
- Cada dos semanas, mediante reuniones abiertas, discuten los requisitos de aplicaciones y sistemas, identifican puntos en común y buscan consenso sobre protocolos compartidos.
Braid-HTTP: sincronización para HTTP
- Braid-HTTP es una extensión que generaliza HTTP de un protocolo de transferencia de estado a un protocolo de sincronización de estado.
- Agrega las siguientes funciones a HTTP:
- Control de versiones de recursos HTTP
- Suscripción (Subscription) para solicitudes GET
- PATCH para solicitudes Range
- Merge-Type para especificar operaciones OT o CRDT
- Estas funciones permiten que los recursos web se sincronicen automáticamente entre múltiples clientes, servidores y proxies, y que varios autores editen al mismo tiempo garantizando consistencia incluso con latencia y particiones arbitrarias de red.
- Las aplicaciones web pueden usar la extensión Braid para ofrecer edición colaborativa, modo offline serverless y redes P2P.
- Con las bibliotecas estándar, estas capacidades pueden añadirse fácilmente a aplicaciones web y navegadores existentes.
- Más detalles pueden consultarse en el borrador de Internet del IETF.
Uso del protocolo Braid
- Braid es compatible con la web actual, funciona en los navegadores actuales y puede añadirse fácilmente a aplicaciones web existentes.
- Hay bibliotecas para varios lenguajes:
- Javascript: braid-http, braid-protocol
- Haskell: wai-braid
- Lua: en desarrollo por Paul Kulchenko
- En Chrome, se puede usar la funcionalidad de Braid mediante la extensión Braid-Chrome.
Modelo de sincronización de Braid
- Implementaciones del protocolo:
- braid-http
- braid-protocol
- wai-braid
- Extensión del navegador:
- Bibliotecas de abstracción de estado:
- Braid-Text (para texto)
- Redwood
- Statebus
- Statecraft
- Algoritmos:
- Diamond Types: el CRDT de texto más rápido del mundo
- Antimatter: el primer CRDT de texto del mundo con poda de historial
- Sync9: CRDT+OT para texto y JSON
- SyncX: Sync9
- Shelf: un CRDT para JSON muy simple y útil
- Diffsync: CRDT+OT que usa merge recursivo de 3 vías
- Tiny-Merge: una biblioteca bien diseñada de CRDT práctico
- CR-SQLite: convierte SQLite en un CRDT muy útil
- Portals: operaciones de copiar, mover y envolver para cualquier OT o CRDT
- Simpleton: un cliente ligero muy simple y rápido para cualquier CRDT
- Compatibilidad:
- Compatibilidad con Automerge
- Compatibilidad con ShareDB y Sync9
Aplicaciones
- Este mismo sitio web
- Peery View: sistema de reputación P2P basado en Braid
- Quiet: chat P2P usando torDT
- Wiki
Trabajar juntos
- Es un grupo abierto.
- Tiene reuniones generales cada dos semanas mediante un enlace de Zoom.
- Presentan demos de nuevos avances, discuten estándares y analizan enfoques para construir una web distribuida.
- También se agregan periódicamente al calendario reuniones intermedias sobre temas especiales.
Cómo se crean los estándares
- El trabajo se realiza públicamente en el IETF.
- Las especificaciones se discuten en las listas de correo de Braid y HTTP.
- La especificación de Braid puede editarse en Github.
- Si hay un problema, se puede abrir un issue en Github.
- Si hay una idea, se puede escribir en la especificación y enviar un Pull Request.
- Cuando se alcanza un consenso general, el Pull Request es aceptado.
- Para mantenerse al día con las discusiones del estándar, se puede suscribir a la lista de correo y seguir Github.
- Si se necesita ayuda, se puede enviar un correo a Michael Toomim.
Protocolo Braid
- El protocolo Braid permite que varios algoritmos de sincronización interoperen mediante un protocolo de red común.
- Los mecanismos de sincronización actuales usan protocolos distintos, pero sus mensajes de red transmiten parches de espacio a lo largo de versiones en el tiempo, posiciones en el espacio y rangos en el tiempo.
- La composición del conjunto de parches forma una estructura matemática llamada braid.
- El protocolo Braid es un formato estándar de mensajes con el que cualquier mecanismo de sincronización puede expresar cambios en el tiempo y resolverlos en un estado consistente.
- Demo interactiva para explorar el modelo de datos:
- Interactuar con braid
- Generar braid aleatorio
- Si te interesa la sincronización sobre HTTP, puedes revisar la especificación del protocolo y dar tu opinión en la lista de correo.
Hoja de ruta del protocolo
- La especificación actual de Braid extiende HTTP en dos dimensiones de sincronización:
- Nivel 0: HTTP actual
- Nivel 1: suscripción con actualizaciones push
- Nivel 2: consistencia P2P (parches, versiones, merge)
- También se están prototipando las siguientes funciones P2P, aunque aún no están estandarizadas:
- Nivel 3: semántica P2P (métodos, validación, confirmación)
- Nivel 4: transporte P2P (URL, nombres, cifrado, routing)
- Para una explicación, puede consultarse la presentación de Mike en meeting-2.
- Se agradece la colaboración en las cuatro áreas.
Braid hace interoperables a los mecanismos de sincronización
- Rafie Walker sincroniza sistemas OT y CRDT usando el protocolo Braid.
- Hay un babelfish en WebSocket que convierte los mensajes de red de ShareDB en mensajes Braid y viceversa.
- Babelfish entre ShareDB y Sync9:
- Se puede probar en vivo.
- Gracias a Seph Gentle por aportar ideas sobre el protocolo de ShareDB.
- Este babelfish está casi completo, pero no maneja los casos en que dos mecanismos de sincronización resuelven conflictos con órdenes distintos.
- Para eso, deben implementar el mismo tipo de merge (ver la especificación del protocolo).
- También se empezó a diseñar un babelfish para Automerge, un sistema CRDT.
- Si tienes un mecanismo de sincronización, pueden trabajar juntos para desarrollar una capa de compatibilidad con Braid.
¿Por qué "Braid"?
- Braid añade viajes históricos en el tiempo a la web, como el videojuego Braid.
- Retuerce cada hebra de la World Wide Web para hacerla más gruesa, poderosa y resistente.
- Entreteje múltiples perspectivas sobre sincronización y tecnologías distribuidas en los estándares web.
- Un braid es una estructura matemática y una estructura de datos informática que contiene la información necesaria para los mecanismos de sincronización.
- Al representar las ediciones como parches de un braid, varios mecanismos de sincronización pueden interoperar.
Opinión de GN⁺
- El protocolo Braid es una herramienta potente para integrar diversos algoritmos de sincronización y puede ser de gran ayuda para mantener consistencia en sistemas distribuidos.
- El hecho de que soporte tanto CRDT como OT será muy útil para desarrolladores de aplicaciones colaborativas.
- La extensión de Braid-HTTP puede integrarse fácilmente en aplicaciones web existentes, por lo que no representará una gran barrera para adoptar nueva tecnología.
- Las reuniones abiertas de Braid fomentan la participación de la comunidad y ofrecen una oportunidad para crear mejores estándares incorporando distintas perspectivas.
- El soporte para varios lenguajes permite a los desarrolladores usar Braid en su lenguaje preferido, creando un entorno en el que más personas pueden participar.
1 comentarios
Opiniones en Hacker News
Resumen de comentarios de Hacker News
Próximo lanzamiento de la nueva biblioteca braid-text
simpleton, por lo que no hay sobrecarga de historial en el cliente.No incluye números de versión en la URL
Preferencia por usar estándares existentes en lugar de extender HTTP
PATCHen lugar departial PUTpodría ser más apropiado.Ventajoso para infraestructura distribuida
Posibilidad de apuntar a un objetivo más general de transmisión de eventos
Comparación con WebDAV
Pregunta sobre casos de uso
Enlace relacionado
Si es solo para tiempo real
Características de HTTP