Saltar al contenido

← Volver a proyectos

LOUST

LOUST-PRO/LinkMarks

Período: dic 2024 —

Shipped

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

  1. 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.

  2. 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.

  3. 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

← Volver a proyectos · curated 2026-09-20