2 puntos por GN⁺ 2023-10-12 | 1 comentarios | Compartir por WhatsApp
  • Spacedrive es una plataforma de datos entre dispositivos para manejar archivos de varios equipos y la nube en un solo lugar; indexa y busca archivos, correos, notas y fuentes externas, y los sincroniza por P2P
  • No reemplaza a Finder ni a Explorer, sino que actúa como una capa superior sobre el administrador de archivos del sistema operativo para buscar y explorar discos locales, unidades externas, NAS, almacenamiento en la nube y fuentes de datos archivadas
  • Asigna a todos los archivos un hash de contenido BLAKE3 para identificar el mismo archivo con el mismo hash, lo que permite el seguimiento de duplicados y la deduplicación entre múltiples dispositivos
  • La sincronización entre dispositivos se conecta directamente mediante sincronización P2P basada en Iroh/QUIC, sincroniza metadatos sin servidores, nube ni punto único de falla, y mantiene los archivos en su ubicación original
  • Indexa S3, Google Drive, Dropbox, OneDrive, Azure y GCS como volúmenes en la nube junto con el almacenamiento local; además, Gmail, Apple Notes, Chrome Bookmarks, Slack y GitHub, entre otros, se convierten en repositorios consultables mediante adaptadores basados en scripts
  • Se integra con Spacebot para ejecutar el runtime de agentes de IA como un proceso separado opcional; Spacedrive se encarga de la capa de datos, permisos y ejecución, mientras que Spacebot aporta la inteligencia
    • Cada instancia de Spacebot se empareja con un nodo de Spacedrive, y ese nodo realiza la autenticación del agente, mantiene el grafo de dispositivos, resuelve permisos y reenvía tareas a dispositivos pares
    • La lectura de archivos, los comandos de shell y las tareas se proxifican al dispositivo de destino a través de Spacedrive, y el sistema de permisos gestiona qué dispositivos, rutas, tareas y personas requieren confirmación
  • Cuando se activa, los registros que serán indexados pasan por una canalización de Safety Screening antes de quedar disponibles para búsqueda
    • Prompt Guard 2 detecta inyecciones de prompts en correos, mensajes y documentos mediante un clasificador local
    • Con capas de confianza, sistema de aislamiento y cercado de contenido, excluye de las consultas de agentes de IA los registros marcados y permite revisarlos en la app de escritorio
  • La arquitectura central está compuesta por un sistema de archivos distribuido virtual, un sistema de identificación por contenido, acciones transaccionales y sincronización sin líder
    • Los archivos y carpetas se convierten en objetos independientes de su ubicación física, y cada archivo tiene una dirección SdPath que funciona en varios dispositivos
    • Las operaciones sobre archivos tienen vista previa antes de ejecutarse, pueden aprobarse o cancelarse, y se manejan como trabajos durables que resisten cortes de red y reinicios del dispositivo
  • La implementación se basa en un único crate de Rust y en una arquitectura CQRS/DDD, y usa como tecnologías principales Tokio, SQLite, SeaORM, sqlx, Iroh, BLAKE3, LanceDB, FastEmbed, OpenDAL, Tauri 2, React Native, React 19, Vite, TanStack Query, Tailwind CSS v4 y Specta
  • La app de escritorio apunta a macOS, Windows y Linux; la app móvil, a iOS y Android; y también incluye estructuras de CLI, daemon, headless server y browser client
  • Los requisitos de ejecución son Rust 1.81+, Bun 1.3+, just y Python 3.9+ para los adaptadores, y los comandos de desarrollo son just setup, just dev-desktop y just test
  • El modelo de privacidad y seguridad es local-first; el tráfico P2P está cifrado con QUIC/TLS, la librería permite cifrado de disco con SQLCipher y no hay telemetría de seguimiento ni analítica
  • La licencia es FSL-1.1-ALv2 Functional Source License y cambia a Apache 2.0 después de 2 años

1 comentarios

 
GN⁺ 2023-10-12
Opiniones de Hacker News
  • Después de instalarlo, de inmediato me pidió crear una biblioteca, compartir datos de análisis e iniciar sesión, así que mis expectativas fueron distintas a las de otros exploradores de archivos.
    Fui a un directorio cualquiera del disco e hice doble clic, pero no pasó nada; abrirlo desde el menú contextual dio el mismo resultado.
    Resultó que, si hay 15 mil archivos en un directorio, en la práctica se vuelve imposible navegarlo.
    Total Commander y Windows Explorer no tienen este problema, así que parece que Spacedrive todavía necesita pulir primero las funciones básicas de exploración de archivos.

    • Gracias por usar Spacedrive; ya conocemos este bug que ocurre al navegar antes de agregar una “Location”.
      Spacedrive, a diferencia de lo que dicen algunas respuestas aquí, fue diseñado pensando en grandes volúmenes de datos: indexa de antemano las Locations para crear caché, y cachea y virtualiza todo.
      En la próxima actualización corregiremos el bug al navegar fuera de una Location, y parece que muchos usuarios primero intentan explorar antes de agregar algo como Location.
      Todavía es software alfa, así que esperamos ir puliéndolo con tiempo.
    • La mayoría de las apps en React no parecen considerar demasiado el soporte para grandes cantidades de datos.
      No es fácil culpar solo a los desarrolladores; creo que el framework debería soportarlo de forma predeterminada.
      No debería ser necesario entender las listas virtualizadas.
      Cuando hice un TableView con SwiftUI, pude desplazarme por miles de elementos sin saber nada de su funcionamiento interno.
    • Windows Explorer también se traba si hay muchos archivos en un directorio en un HDD.
      Como no tiene caché del orden de clasificación, si lo abres en un modo que no sea alfabético, hay que esperar más de 5 minutos mientras ordena.
  • Cuando lo vi hace bastante tiempo no había un paquete de lanzamiento para probarlo directamente, así que pensé revisarlo cuando estuviera listo; parece que hace una hora salió una versión alfa, por eso volvió a aparecer en HN.
    El concepto en sí me alegra.
    Hoy la frontera entre archivos estrictamente locales y múltiples almacenamientos en la nube se volvió difusa.
    Personalmente mantengo esa frontera y casi no monto almacenamiento en la nube en mi Mac, pero mi esposa, que es académica, trabaja con Dropbox, iCloud Drive, Google Drive y almacenamiento de Microsoft.
    Es porque la gente con la que colabora comparte archivos y hace revisión colaborativa a través de cada servicio.
    Si una herramienta así pudiera ocultar los problemas de conexión y comportamientos peculiares de cada proveedor, y ofrecer un sistema de archivos transparente que parezca local pero que por detrás pueda estar conectado a cualquier almacenamiento en la nube, ayudaría bastante al flujo de trabajo.
    La clave es la usabilidad, y si la latencia es alta y se siente más lento que Finder, sus posibilidades bajan.

  • Es muy probable que Hacker News no sea el público ideal para este tipo de producto.
    La gente de aquí probablemente ya tiene flujos de trabajo optimizados a su manera, y yo también.
    Este producto parece encajar mejor con creadores digitales que usan Windows y Mac, pero no están familiarizados con la terminal.
    Animadores, ilustradores, editores de video, artistas 3D, productores musicales, youtubers, streamers y gente similar.
    Dicho eso, no estoy seguro de que ese segundo grupo realmente quiera algo así.
    Solo viendo el marketing no entiendo exactamente qué hace el software, y creo que a ese grupo le pasaría lo mismo.
    Entiendo que intentan hablar de una “experiencia de archivos universal”, pero no queda claro qué significa concretamente.
    Los usuarios no deberían tener que instalar el software para entender sus funciones.
    Que sea open source o que funcione en Linux tampoco parece importarles demasiado.
    En esta etapa, rehacería por completo el marketing y lo optimizaría para ese segundo grupo.
    Conviene trabajar con alguien de PR o un especialista en marketing para comunicar de forma concreta y eficiente cuál es el valor que están construyendo.
    Además, para ahorrar esfuerzo del equipo, probablemente bajaría el repositorio de código y también discontinuaría la versión de Linux, o la mantendría privada hasta que haya demanda.
    Les deseo suerte.

  • Lo vengo siguiendo desde hace bastante tiempo y tengo algunos comentarios.
    Indexar un solo directorio local de desarrollo lleva ya más de 35 minutos, y no creo que vaya a esperar hasta que termine.
    Como dijeron otros, la latencia es un problema.
    En un modelo base de macOS M1 de 14 pulgadas, incluso después de agregar una Location, a veces tarda de 2 a 4 segundos en abrir una carpeta y mostrar los archivos.
    Si no se me pasó algo, parece que todavía no tiene pestañas.
    Las funciones de ordenamiento y agrupación de archivos son demasiado pobres o prácticamente inexistentes, aunque supongo que mejorarán durante el desarrollo.
    Para llegar a un estado de indexación razonable, parece que el usuario tiene que hacer mucho trabajo, como agregar muchas Locations a mano.
    Entiendo lo de local-first, pero la forma en que manejan la telemetría y el inicio de sesión no me gusta nada.
    En general, al probarlo directamente me decepcionó un poco y probablemente no sea para mí, aunque puede tener usuarios objetivo y todavía le queda camino por recorrer.
    Se ve realmente bien.

    • Actualización: olvidé que lo había dejado encendido y estuvo indexando la misma carpeta local de desarrollo durante más de 4 horas :(
  • Me pregunto por qué hicieron esto con React.
    Entiendo que Rust no tenga un framework de GUI como Qt, pero no sé si esto sea la respuesta.
    ¿Será porque no quieren aprender algo nuevo?
    Se puede hacer perfectamente como app en C++ o con Qt, escribir la GUI en QML y además conectar Lua, Python o JavaScript como lenguajes de scripting.
    Claro, es trabajo.
    Renderizar con un navegador se parece a una versión más fácil de crear una GUI con una API de GPU como OpenGL.
    El sistema operativo ya tiene herramientas de GUI, así que se pueden usar esas.
    Por lo demás se ve bastante bien, aunque creo que cosas como pcmanfm también soportan agregar ubicaciones remotas.
    Otra cosa que me da curiosidad es por qué usan Prisma.

    • Si quieres crear una app de escritorio multiplataforma en Rust, por ahora yo también recomendaría Tauri + React.
      Tauri facilita bajar a Rust cuando necesitas tareas de alto rendimiento o integración con el sistema operativo, y ya trae packaging para las principales plataformas.
      Usar React permite aprovechar un gran ecosistema con muchos componentes de UI ya existentes.
      Es distinto de la mayoría de los frameworks de GUI nativos en Rust.
      Además, puedes reutilizar ingenieros frontend y sus capacidades de colaboración con tecnologías web y diseñadores.
    • Decir que Rust no tiene frameworks de GUI es demasiado, porque existen Slint, egui y crates de bindings para Qt.
      Se puede decir que no son tan maduros como Qt, pero comparados con algo que corre en el navegador, en muchos casos son suficientes.
  • Es un poco difícil de creer que este repositorio tenga tantas estrellas en GitHub cuando está en una etapa alfa temprana y tiene muchos bugs conocidos.
    Además, parece que recibió inversión de VC, lo cual me resulta aún más desconcertante que las inversiones en langchain o pinecone.
    Al menos esos son proyectos basados en IA, pero este proyecto está en un área que ya se ha abordado mucho.
    Aunque fuera gratis para siempre, no creo que la gente lo quiera; y si le agregan anuncios, rastreo o una suscripción mensual, mucho menos.
    Básicamente no hay razones para confiar y sí muchas para desconfiar.
    No es un ataque personal, pero si no han considerado este punto de vista, sería bueno pensarlo.

  • Después de “welcome”, la primera pantalla es de inicio de sesión.
    No entiendo por qué hay que iniciar sesión en un explorador de archivos; esta época es rara.

    • Desde la primera línea del enlace dice esto: “Spacedrive is an open source cross-platform file manager, powered by a virtual distributed filesystem (VDFS) written in Rust.”
      La razón para iniciar sesión es que se trata de un sistema de archivos remoto.
      Es más correcto pensar en Dropbox que en un explorador de archivos.
    • Lo agregamos a último momento y no se lo explicamos con claridad al usuario; fue culpa nuestra.
      Cambiará en la próxima actualización.
      Al final, el inicio de sesión será una forma de conectar dispositivos rápidamente, como Tailscale.
  • Un metaíndice buscable y explorable que cubra almacenamiento disperso en la nube y local, montado y no montado, sin duda es interesante y durante un tiempo fue una especie de santo grial.
    La gestión de activos digitales no es un concepto nuevo, pero hoy no es un campo con muchas opciones.
    Portfolio o el complejo conjunto de productos de Adobe ofrecen muchas de estas funciones, pero se enfocan más en flujos de trabajo y metadatos que en almacenamiento en la nube.
    Hoy en día hay que ser muy cuidadoso antes de adoptar otro servicio dependiente de la nube.
    Dada la sensibilidad de “todos los archivos, incluidos los locales y sin conexión”, el autoalojamiento/on-premise podría ser un requisito indispensable.
    Si se necesita una cuenta, uno querría integración con la gestión de identidad existente mediante OIDC o SAML.
    Si esta herramienta se convierte en la ventanilla única esencial para ver todos los archivos y se construyen flujos de trabajo encima, también necesitará funciones de continuidad que permitan confiar en su disponibilidad.
    Espero que sigan adelante.
    Nadie ha resuelto esto por completo todavía.

  • El proyecto se ve genial y me gusta su ambición.
    Tengo algunas notas.
    Debería haber un único toggle claro para todo acceso WAN, y toggles separados para enviar datos de analítica o de uso, pero desactivados por defecto.
    Mejor aún, sería bueno que también fueran flags de compilación.
    Hace un tiempo, una nueva terminal llamada Warp era muy atractiva, pero por defecto enviaba datos por la red y eso fue motivo de descarte inmediato para mucha gente.
    Ojalá se inspiren mucho en Windirstat y Everything, y en particular apunten al rendimiento de búsqueda de Everything.
    Vi que está en el roadmap, pero lo repito: hacen falta pestañas.
    También consideren alejarse de Prisma.
    Envuelve demasiado la base de datos y tiene demasiada magia.
    Puede que mi fundamento sea débil, pero me preocupa un poco que algún día cambien la licencia.

  • Ojalá dejáramos de tratar written in Rust al inicio del README como si fuera una funcionalidad.
    Cada vez que veo esa frase, no pienso “seguro es más estable”, sino “esto es el proyecto hobby de alguien”.

    • En el sitio web no vi que presentaran Rust como una funcionalidad.
      Si es en el README, parece razonable incluirlo como un detalle relevante en un proyecto open source.