Notion implementa CRDTs para editar texto concurrentemente sin conflictos

Notion ha rediseñado su sistema de edición de texto para soportar la colaboración simultánea mediante la implementación de Conflict-free Replicated Data Types (CRDTs). Este cambio técnico resuelve el problema de las ediciones concurrentes en el modelo de bloques de la plataforma, donde dos usuarios

Prolly: un mapa ordenado inmutable con árboles de prólly en GitHub

Prolly es una biblioteca en Rust publicada como crate que ofrece un índice clave-valor ordenado e inmutable construido sobre árboles de prólly, una estructura con direccionamiento por contenido. Cada nodo se identifica mediante un CID calculado como el hash SHA-256 de sus bytes deterministas, lo que

¿Quién debe costear la disponibilidad del código fuente?

Este artículo reflexiona sobre quién debe asumir el coste de garantizar que el código fuente de los proyectos de software permanezca disponible de forma fiable. El autor parte de un caso concreto: su proyecto Zine, un generador de sitios estáticos con once dependencias repartidas entre GitHub, Codeb

120.000 líneas de Rust: así es el backend de Nosdesk

El autor de Nosdesk, una plataforma de soporte al cliente, detalla en un artículo técnico la arquitectura de su backend, escrito por completo en Rust y compuesto por unas 120.000 líneas de código repartidas en 260 módulos, con alrededor de 1.030 tests. El sistema se distribuye como un único binario

Bijou64 supera a LEB128 en rendimiento para CRDTs

El equipo de inkandswitch ha lanzado una nueva codificación de enteros de longitud variable denominada Bijou64. Diseñada para el protocolo de sincronización CRDT, esta codificación asegura que cada número tenga una única representación binaria, eliminando la necesidad de verificaciones de canonicida

Editor colaborativo perdía cambio por error de surrogates en emoji

Este artículo narra la historia de un bug particularmente insidioso que el autor descubrió mientras trabajaba en un editor colaborativo basado en TipTap y Yjs. El problema se manifestó de forma silenciosa: el editor dejaba de guardar cambios sin dar errores visibles, haciendo que el contenido del us

CodeMirror: Diseño simple para edición colaborativa

Este artículo del blog de Marijn Haverbeke explora el diseño de la estructura de datos para cambios de documentos y la función de edición colaborativa en la próxima versión de CodeMirror. El objetivo principal es explicar por qué se optó por una solución aparentemente simple: la transformación opera

Contador distribuido: desafío en Fly.io

Este artículo explora un desafío específico dentro de una serie sobre sistemas distribuidos en Fly.io: la construcción de un contador de crecimiento (grow-only counter) utilizando un servicio de almacenamiento clave-valor secuencialmente consistente (SeqKV) de Maelstrom. El objetivo es crear un cont

Nuevo sistema Git evita pérdida de historial

El desarrollador Bram Cohen, conocido por BitTorrent, ha propuesto una alternativa más segura a las funciones de 'rebase' y 'squash' de Git, los cuales son herramientas para combinar cambios en el control de versiones. La propuesta se centra en un sistema que recuerda el historial completo, evitando

Edición colaborativa: por qué descartaron Yjs

Este artículo de Moment.dev explora por qué el equipo decidió no utilizar Yjs, una biblioteca popular para edición colaborativa, a pesar de su amplia adopción. La primera parte de la serie ya había señalado problemas con la corrupción de documentos en algoritmos colaborativos, especialmente en escen

CRDT: Colaboración en tiempo real sin servidor

Este artículo introduce los CRDT (Tipos de Datos Replicados sin Conflicto), una herramienta poderosa para construir aplicaciones colaborativas en tiempo real sin depender de un servidor centralizado. Imagina Google Docs o Figma: todos los usuarios ven y editan el mismo documento simultáneamente, inc

Sistemas distribuidos: guía esencial para la computación moderna

Este texto, publicado originalmente en 2013, ofrece una introducción accesible a los sistemas distribuidos, un tema crucial en la era de la computación en la nube y el big data. La necesidad de estos sistemas surge cuando los problemas superan la capacidad de una sola máquina, ya sea por limitacione

SCM más sencillos: ¿alternativa a Git para la era IA?

El artículo explora una nueva aproximación a los sistemas de control de versiones (SCM), argumentando que los sistemas actuales, como Git, son excesivamente complejos y difíciles de manejar, especialmente con la proliferación de código generado por IA. Git, con su intrincada jerarquía de ramas, repo

Git en riesgo: LLMs desafían el control de versiones

El desarrollo de software está evolucionando rápidamente, y las herramientas tradicionales, como los IDEs, están perdiendo relevancia a medida que los desarrolladores pasan más tiempo explorando código y interactuando con modelos de lenguaje grandes (LLMs). El sistema de control de versiones Git, qu