Earthstar: una base de datos para apps personales, distribuidas y offline-first
(earthstar-project.org)- Earthstar es una especificación de datos y una biblioteca JavaScript para crear apps privadas y distribuidas que las personas usuarias poseen y operan directamente
- La nueva especificación de Earthstar pasó a estar basada en Willow, y Earthstar v11 está disponible actualmente en beta
- Las apps tienen el funcionamiento offline como base, y admiten sincronización en vivo, documentos temporales, eliminación real y almacenamiento de música, fotos y videos
- Los servidores son opcionales, pero el modelo de operación siempre es self-hosted, y no depende de blockchain ni de tokens
- Funciona en navegadores, Deno y Node, y ofrece verificación ed25519, acceso de solo lectura, sincronización por streaming, múltiples autores y drivers de almacenamiento
El rol de Earthstar y su estado actual
- Earthstar es una especificación y biblioteca JavaScript con características de base de datos para crear aplicaciones propiedad de las personas usuarias
- La nueva especificación de Earthstar está basada en Willow
- Earthstar v11 está disponible actualmente en versión beta
- Ofrece como principales puntos de entrada la documentación, la API de JavaScript, la especificación y un tutorial de una app de chat
Funciones para apps offline-first
-
Funciones de la aplicación
- Admite funcionamiento offline
- Admite sincronización en vivo y el método Sneakernet
- Permite almacenar música, fotos y videos
- Admite documentos temporales y eliminación real de datos
- Se pueden usar una o varias identidades (identity)
-
Modelo operativo
- Los servidores son opcionales
- El modelo de operación siempre es self-hosted
- No usa blockchain ni tokens
- Promueve la idea de ser “gratis para siempre en todos los sentidos”
-
Funciones técnicas
- Admite verificación ed25519
- Funciona en navegadores, Deno y Node
- Permite otorgar permisos de acceso de solo lectura
- Admite sincronización eficiente y sincronización por streaming
- Permite usar una identidad en varios dispositivos
- Admite múltiples autores, drivers de almacenamiento y permisos de escritura de documentos
1 comentarios
Opiniones de Hacker News
Es un poco parecido a nostr, pero tiene diferencias. Los datos no se direccionan por contenido, sino por nombre, así que admite sobrescrituras y eliminaciones, y el tipo de dato primitivo tampoco es un conjunto de mensajes, sino un arreglo asociativo que va de nombres a documentos.
Los documentos se agrupan en "shares", y para que un servidor reconozca que tiene los documentos de ese share, primero debe conocer la "share address". Es interesante el enfoque de acceso donde algunas cosas son privadas y otras públicas; los proyectos que eligen extremos en este eje suelen sufrir, y diría que la mayoría lo hace.
Parece que tendrá éxito para frenar a spammers y estafadores, pero sería cauto en grupos grandes frente a atacantes motivados. Si un usuario expone una share address que está en una zona ambigua entre pública y privada, parece que quedan expuestos todos los usuarios de ese share.
Sería mejor una web de confianza, donde un atacante tenga que romper cada salto del grafo de confianza antes de encontrar su objetivo, pero también entiendo por qué se acepta perder granularidad en favor de la simplicidad, ya que la complejidad para el usuario aumenta bastante. Ojalá cosas como esta tengan éxito; se siente como si hubiéramos perdido la web, y sin algo parecido a la web es difícil que mucha gente se coordine a gran escala en momentos importantes.
La share address debería tratarse como una clave ssh.
No tengo muy claro qué es exactamente esto.
¿Es algún tipo de base de datos de documentos y medios con bastante JavaScript? ¿Algo orientado un poco al self-hosting, que se replica en nodos pares al estilo de Mastodon? Parece tener una gran visión, pero no se alcanza a ver bien.
No sé qué se obtiene con la descentralización de Earthstar. Si se trata de respaldos, eso también es bastante sencillo con SQLite y PGlite. No veo claro que sea una gran ventaja para la mayoría de usuarios de bases de datos.
Sí parece beneficiar a quienes quieren guardar datos en sus propios dispositivos, compartir esos datos con otras personas y que ellas también tengan copias locales. Quizá también pueda servir para compartir contenido ilegalmente.
Sin duda tiene funciones interesantes, pero siento que la visión se diluye entre la lista de características.
Entiendo que esto fue reemplazado por el protocolo Willow [0], que ya se publicó antes.
Intenté leer Willow, pero no logré hacerme una idea [1]. Parece un almacén jerárquico de clave-valor con un montón de campos adicionales para timestamps y tokens criptográficos, pero faltan demasiados ejemplos de funcionamiento.
Incluso la biblioteca reciente en Rust [2] es básicamente un conjunto de clases abstractas y la implementación no hace más que lanzar errores. Podría hacer un chiste sobre el estado del refinamiento tecnológico europeo, pero lo dejaré pasar con una sonrisa educada.
[0] https://willowprotocol.org/earthstar/spec/
[1] https://willowprotocol.org/specs/data-model/index.html#data_...
[2] https://github.com/earthstar-project/willow-rs/tree/main
[1] https://nlnet.nl/project/current.html
[2] https://nlnet.nl/funding.html
Si juzgáramos la calidad del software hecho en Silicon Valley por los proyectos financiados por VC que no tuvieron éxito, no habría respuesta posible.
La gente detrás de Willow también parece ser el mismo equipo: https://earthstar-project.org/docs/future#willow-protocol
https://willowprotocol.org/more/compare/index.html#compare_e...“Todas las funciones anteriores son posibles gracias al nuevo Willow General Purpose Sync Protocol en el que hemos estado trabajando. Es un nuevo protocolo inspirado en Earthstar, que refina y amplía sus conceptos. Publicaremos un nuevo sitio web con la especificación completa de este protocolo.”
“Si Earthstar se siente muy parecido a Willow, no es casualidad. Willow comenzó como una reimaginación de Earthstar; las futuras versiones de Earthstar se construirán sobre Willow, y el mantenedor principal de Earthstar es uno de los dos autores de Willow.”
¿Existe un cliente de Python? En la documentación, lo único que veo relacionado con Python es esto:
# Earthstar timestamps in pythontimestamp = int(time.time() * 1000 * 1000)Mejor recomendaría jellyfin, immich, y para el resto simplemente sftp. La sincronización, no, la descentralización, se puede hacer con git, syncthing y rsync.
Todavía no he visto un gestor de identidad decente para self-hosting, ni algo como SSO. Entiendo que bluesky está creando uno, pero no sé si se podrá autohospedar. El autocompletado me lo cambió de forma freudiana a self hostage.
Otro problema que aún no he podido resolver en un homelab/nube privada es cómo convertirme en mi propia CA y gestionar el acceso a mis máquinas sin enseñarle ssh a la otra persona.
Quiero algo como meshnet de NordVPN, donde las personas que iniciaron sesión en el plan familiar puedan ver las máquinas de los demás como si fueran una red local. ¿Se puede con wireguard? yggdrasil también parece ser algo así, pero todavía no lo he mirado a fondo.
Cuando dices gestión de identidad “buena”, ¿te refieres a algo que no sea OpenLDAP o 389? Si también te importa Windows, no sé qué tan bien encaja.
Convertirse en tu propia CA es fácil, pero la parte de instalar esa CA en todas las máquinas donde la quieres es lo desagradable. Si usas Let’s Encrypt, todo funciona bien.
Wireguard puede conectar dos LAN a través de Internet, pero lo ideal es tener dos routers con soporte para wireguard, como pfsense, en ambos extremos. Si no, hay que instalar configuraciones especiales de ruteo en cada máquina cliente. Todavía no he descubierto cómo pasar avahi para autodescubrimiento al otro lado del enlace.
Todavía me da pena que se hayan sumado a la fiesta de SQLite justo después de que el navegador retirara el soporte para SQLite.
Creo que un post de blog sobre esto sería muy útil. Por ejemplo, uno que explique por qué lo diseñaron así y cuáles eran las alternativas.
La primera impresión es interesante. Me gusta que la identidad sea un par de claves y que se pueda acceder a los archivos y al contenido por nombre.
¿Hay posibilidad de que se implemente en otros lenguajes, como Python? Todo me gusta, pero me frena que sea JavaScript, y todavía soy cauteloso con usar JavaScript para este tipo de cosas.
Lamentablemente, ninguno de los dos es tan popular, así que al final uno termina pidiendo implementaciones en varios lenguajes, lo cual supongo que sería una carga para los maintainers de este tipo de proyectos. En fin, la realidad es esa, y si no es con uno de esos lenguajes, a mí también me interesaría una librería cliente en Python.
“Siempre self-hosted. El servidor es opcional. Sin blockchain. Sin tokens. Gratis para siempre en todos los sentidos”.
Es el mejor resumen de tesis.