LOUST
LOUST-PRO/LinkMarks
Período: dic 2024 —
El reto
El sync de bookmarks del navegador estaba cloud-locked — Pocket, Raindrop, el resto — y requería un servidor central. Quería bookmarks que sincronizaran entre mis dispositivos sin un servidor coordinador y sin conflictos de merge cuando editaba en dos dispositivos entre syncs.
Mi rol
Construí un bookmark manager con CRDT en Rust con storage local-first, sync oportunista y un release v2.2.0 enviado a través de siete crates de LOUST-PRO en agosto de 2026.
Lo que hice
01 Reconciliación con CRDT entre dispositivos
Por qué: Merge conflict-free significa sin flujo de recovery por merge conflict. Cada dispositivo converge al mismo set de bookmarks sin importar qué ediciones llegaron primero.
Trade-off: Más storage por bookmark que una lista plana, porque los metadatos de merge son parte del registro. Convergencia es el premio — perder un bookmark en un sync conflict es peor que el costo de storage.
02 Storage local-first
Por qué: Los bookmarks viven en disco en un formato portable. El sync es oportunista en lugar de autoritario, así que la copia local sigue siendo usable incluso cuando la red está caída.
Trade-off: Footprint local mayor que el de bookmarks solo en cloud. La garantía de offline gana el espacio en disco.
03 Sync oportunista
Por qué: Los dispositivos en la misma LAN sincronizan rápido por peer discovery; los dispositivos remotos sincronizan por un relay opcional cuando está disponible. El path de sync es oportunista, no obligatorio.
Trade-off: El relay es infraestructura opcional que mantener. Para un proyecto single-author el relay es trivial; para un producto multi-usuario sería un costo real.
Lo que cambió
Conflictos de sync
Antes: Ocasionales (servicios cloud con last-write-wins)
Después: Ninguno (CRDT garantiza merge determinístico)
Convergencia cross-device
Antes: Minutos (roundtrip a cloud)
Después: Menos de 1 segundo por LAN discovery
Portabilidad de storage
Antes: Solo cloud — sin copia local
Después: Formato portable en disco, sync opcional
Trade-offs
Renuncié a la conveniencia del solo-cloud a cambio de la garantía de offline. Para substrato de workflow de research, la garantía gana — perder bookmarks en un sync conflict sería peor que el costo de disco local.
Lo que aprendí
Local-first no es solo una decisión de arquitectura — es una garantía de disponibilidad. Una vez que el substrato funciona sin la red, la red se vuelve una conveniencia en lugar de una dependencia.
Stack
- Rust
- CRDT
- bookmarks
- local-first
Repositorio
https://github.com/LOUST-PRO/LinkMarks ↗Evidencia
- Repositoryhttps://github.com/LOUST-PRO/LinkMarks ↗