2 points par GN⁺ 2023-10-12 | 1 commentaires | Partager sur WhatsApp
  • Spacedrive est une plateforme de données multi-appareils qui permet de gérer au même endroit les fichiers provenant de plusieurs appareils et clouds : elle indexe et recherche fichiers, e-mails, notes et sources externes, et les synchronise en P2P
  • Il ne remplace pas Finder ou Explorer, mais joue le rôle de couche supérieure au-dessus du gestionnaire de fichiers de l’OS pour rechercher et parcourir les disques locaux, disques externes, NAS, stockages cloud et sources de données d’archives
  • Chaque fichier reçoit un hash de contenu BLAKE3, ce qui permet d’identifier un même fichier par le même hash et de gérer le suivi des doublons ainsi que la déduplication sur plusieurs appareils
  • La synchronisation entre appareils se fait via une synchro P2P basée sur Iroh/QUIC, avec connexion directe : les métadonnées sont synchronisées sans serveur, sans cloud ni point de défaillance unique, tandis que les fichiers restent à leur emplacement d’origine
  • S3, Google Drive, Dropbox, OneDrive, Azure et GCS sont indexés comme volumes cloud aux côtés du stockage local ; Gmail, Apple Notes, Chrome Bookmarks, Slack, GitHub, etc. deviennent des dépôts consultables via des adaptateurs basés sur des scripts
  • En intégration avec Spacebot, Spacedrive exécute un runtime d’agent IA sous forme de processus séparé optionnel : Spacedrive prend en charge les couches données, permissions et exécution, tandis que Spacebot gère l’intelligence
    • Chaque instance de Spacebot est appairée à un nœud Spacedrive ; ce nœud gère l’authentification de l’agent, maintient le graphe des appareils, résout les permissions et transmet les tâches aux appareils pairs
    • La lecture de fichiers, les commandes shell et les tâches sont relayées vers l’appareil cible via Spacedrive ; le système de permissions gère les appareils, chemins et tâches accessibles, ainsi que la nécessité éventuelle d’une confirmation humaine
  • Une fois activé, chaque enregistrement à indexer passe par un pipeline de Safety Screening avant de devenir consultable
    • Prompt Guard 2 détecte les injections de prompt dans les e-mails, messages et documents à l’aide d’un classificateur local
    • Des niveaux de confiance, un système de quarantaine et un cloisonnement du contenu excluent les enregistrements signalés des requêtes des agents IA et permettent leur examen dans l’application desktop
  • L’architecture centrale repose sur un Virtual Distributed Filesystem, un système d’identification de contenu, des actions transactionnelles et une synchronisation sans leader
    • Les fichiers et dossiers deviennent des objets indépendants de leur emplacement physique, et chaque fichier possède une adresse SdPath qui fonctionne sur plusieurs appareils
    • Les opérations sur fichiers prennent la forme de jobs durables, avec aperçu avant exécution, approbation ou annulation, et tolérance aux interruptions réseau ainsi qu’aux redémarrages d’appareils
  • L’implémentation s’appuie sur un crate Rust unique et une architecture CQRS/DDD ; les principales technologies utilisées sont Tokio, SQLite, SeaORM, sqlx, Iroh, BLAKE3, LanceDB, FastEmbed, OpenDAL, Tauri 2, React Native, React 19, Vite, TanStack Query, Tailwind CSS v4 et Specta
  • L’application desktop cible macOS, Windows et Linux ; l’application mobile cible iOS et Android, avec également une architecture comprenant CLI, daemon, serveur headless et client navigateur
  • Les prérequis d’exécution sont Rust 1.81+, Bun 1.3+, just et Python 3.9+ pour les adaptateurs ; les commandes de développement sont just setup, just dev-desktop et just test
  • Le modèle de confidentialité et de sécurité est local-first ; le trafic P2P est chiffré via QUIC/TLS, la bibliothèque peut chiffrer le disque avec SQLCipher, et il n’y a pas de télémétrie de suivi ou d’analyse
  • La licence est la Functional Source License FSL-1.1-ALv2, avec passage à Apache 2.0 après 2 ans

1 commentaires

 
GN⁺ 2023-10-12
Avis sur Hacker News
  • Juste après l’installation, l’application demande de créer une bibliothèque, de partager des données d’analyse et de se connecter, ce qui ne correspondait pas à ce que j’attendais d’un autre explorateur de fichiers
    Je suis allé dans un répertoire quelconque du disque et j’ai double-cliqué, mais rien ne s’est passé ; même chose en ouvrant via le menu contextuel
    Il s’est avéré que lorsqu’un répertoire contient 15 000 fichiers, la navigation devient pratiquement impossible
    Total Commander et Windows Explorer n’ont pas ce problème, donc Spacedrive devrait d’abord peaufiner les fonctions de base d’exploration de fichiers

    • Merci d’avoir essayé Spacedrive ; nous connaissons déjà ce bug qui survient lors de la navigation avant d’ajouter un « Location »
      Contrairement à certains commentaires ici, Spacedrive a été conçu en pensant aux grands volumes de données : il indexe à l’avance les Locations pour créer un cache, et met tout en cache et le virtualise
      Dans la prochaine mise à jour, nous corrigerons le bug qui se produit lors de la navigation dans des emplacements qui ne sont pas des Locations, et beaucoup d’utilisateurs semblent commencer par naviguer avant d’ajouter un Location
      C’est encore un logiciel en alpha, donc nous espérons le peaufiner avec le temps
    • La plupart des applications React semblent assez peu tenir compte de la prise en charge de gros volumes de données
      Il est difficile de rejeter toute la faute sur les développeurs ; à mon avis, le framework devrait le prendre en charge par défaut
      On ne devrait pas avoir à comprendre les listes virtualisées
      Quand j’ai créé une TableView avec SwiftUI, je pouvais faire défiler des milliers d’éléments sans rien connaître à son fonctionnement interne
    • Windows Explorer aussi rame sur un HDD quand un répertoire contient beaucoup de fichiers
      Comme il n’y a pas de cache de l’ordre de tri, si on l’ouvre avec un tri autre qu’alphabétique, il faut attendre plus de 5 minutes le temps qu’il trie
  • Quand je l’avais vu il y a pas mal de temps, il n’y avait pas de paquet de release à essayer directement, donc je comptais y revenir quand ce serait prêt ; il semble qu’une version alpha soit sortie il y a une heure, d’où son retour sur HN
    Le concept en lui-même est bienvenu
    Aujourd’hui, la frontière entre les fichiers strictement locaux et les différents stockages cloud est devenue floue
    Personnellement, je maintiens cette frontière et je monte très peu de stockages cloud sur mon Mac, mais ma femme, qui est universitaire, utilise Dropbox, iCloud Drive, Google Drive et le stockage côté Microsoft
    C’est parce que les personnes avec qui elle travaille partagent des fichiers et collaborent à des relectures via chacun de ces services
    Si un outil comme celui-ci pouvait masquer les problèmes de connexion propres à chaque fournisseur et leurs comportements particuliers, et fournir un système de fichiers transparent qui ressemble à du local mais peut être adossé en arrière-plan à n’importe quel stockage cloud, cela aiderait beaucoup le workflow
    Le point clé est l’utilisabilité : si la latence est élevée et que cela paraît plus lent que Finder, les chances diminuent

  • Hacker News n’est probablement pas le public utilisateur idéal pour ce type de produit
    Les personnes ici ont probablement déjà chacune un workflow optimisé, et c’est aussi mon cas
    Ce produit semble mieux convenir aux créateurs numériques qui utilisent Windows et Mac mais ne sont pas à l’aise avec le terminal
    Des gens comme les animateurs, illustrateurs, monteurs vidéo, artistes 3D, producteurs de musique, youtubeurs ou streamers
    Cela dit, je ne sais pas vraiment si ce deuxième groupe veut vraiment ce genre de chose
    Rien qu’avec le marketing, je ne comprends pas exactement ce que fait le logiciel, et ce sera probablement pareil pour ce groupe
    Je vois bien qu’ils veulent parler d’« expérience de fichiers universelle », mais ce que cela signifie concrètement n’est pas clair
    Les utilisateurs ne devraient pas avoir à installer le logiciel pour comprendre ses fonctionnalités
    Le fait qu’il soit open source ou qu’il fonctionne sous Linux ne semble pas non plus très important pour eux
    À ce stade, je referais entièrement le marketing et je l’optimiserais pour ce deuxième groupe
    Il vaudrait mieux travailler avec un responsable RP ou un spécialiste marketing pour communiquer de manière concrète et efficace la valeur de ce que vous construisez
    Par ailleurs, pour économiser les efforts de l’équipe, je retirerais le dépôt source et j’arrêterais aussi la version Linux, ou je les garderais privés jusqu’à ce qu’une demande apparaisse
    Bonne chance

  • Je suis le projet depuis assez longtemps et j’ai quelques retours
    L’indexation d’un seul répertoire de développement local a déjà pris plus de 35 minutes, et je ne pense pas attendre jusqu’au bout
    Comme d’autres l’ont dit, la latence est un problème
    Sur un macOS M1 14 pouces modèle de base, même après avoir ajouté un Location, il faut parfois 2 à 4 secondes pour ouvrir un dossier et voir les fichiers
    Sauf erreur de ma part, il ne semble pas encore y avoir d’onglets
    Les fonctions de tri et de regroupement de fichiers sont beaucoup trop pauvres, voire pratiquement inexistantes, mais je suppose qu’elles s’amélioreront pendant le développement
    Pour obtenir un état d’indexation raisonnable, l’utilisateur semble devoir faire beaucoup de choses lui-même, comme ajouter manuellement de nombreux Locations
    Je comprends l’approche local-first, mais la façon dont sont gérés la télémétrie et la connexion ne me plaît pas du tout
    Globalement, après l’avoir essayé, je suis un peu déçu et il y a de fortes chances que ce ne soit pas pour moi, mais il peut avoir son public cible et il reste encore du chemin à parcourir
    Visuellement, c’est vraiment réussi

    • Mise à jour : j’avais oublié que je l’avais laissé tourner, et il indexait toujours le même dossier de développement local depuis plus de 4 heures :(
  • Je me demande pourquoi ils ont fait ça avec React
    Je comprends qu’il n’y ait pas de framework GUI comme Qt en Rust, mais je ne suis pas sûr que ce soit la réponse
    Est-ce parce qu’ils n’ont pas envie d’apprendre quelque chose de nouveau ?
    On peut tout à fait le faire en C++ ou avec Qt, écrire l’interface en QML et y adjoindre Lua, Python ou JavaScript comme langages de script
    Bien sûr, c’est du travail
    Faire le rendu dans le navigateur ressemble à une version plus simple de la création d’une GUI avec une API GPU comme OpenGL
    Le système d’exploitation fournit déjà des outils GUI, autant les utiliser
    À part ça, ça a l’air plutôt correct, mais il me semble que des outils comme pcmanfm prennent aussi en charge l’ajout d’emplacements distants
    Une autre chose que je me demande, c’est pourquoi ils utilisent Prisma

    • Si l’on veut créer une application desktop multiplateforme en Rust, aujourd’hui je recommanderais probablement moi aussi Tauri + React
      Tauri permet de descendre facilement en Rust quand on a besoin de tâches haute performance ou d’intégrations avec le système d’exploitation, et il dispose déjà du packaging pour les principales plateformes
      Avec React, on peut exploiter un excellent écosystème qui compte déjà de nombreux composants UI
      C’est différent de la plupart des frameworks GUI natifs en Rust
      On peut aussi réutiliser les ingénieurs frontend, leurs compétences en technologies web et leur capacité à collaborer avec les designers
    • Dire qu’il n’y a pas de framework GUI en Rust, c’est oublier Slint, egui et les crates de bindings Qt
      On peut dire qu’ils ne sont pas aussi mûrs que Qt, mais par rapport à quelque chose qui tourne dans un navigateur, ils suffisent dans beaucoup de cas
  • J’ai un peu de mal à croire qu’un dépôt encore en alpha initiale, avec beaucoup de bugs connus, ait autant de stars GitHub
    En plus, il semble avoir reçu un investissement de VC, ce qui me laisse encore plus perplexe que les levées de fonds de langchain ou pinecone
    Eux, au moins, sont des projets basés sur l’IA, alors que celui-ci s’attaque à un domaine déjà largement exploré
    Même si c’était gratuit pour toujours, je ne pense pas que les gens en voudraient ; et avec de la publicité, du pistage ou un abonnement mensuel, encore moins
    En gros, il n’y a pas vraiment de raison de lui faire confiance, et beaucoup de raisons de s’en méfier
    Ce n’est pas une attaque personnelle, mais si vous n’avez pas envisagé ce point de vue, vous devriez y réfléchir

  • Le premier écran après « welcome » est une connexion
    Je ne vois pas pourquoi il faudrait se connecter à un explorateur de fichiers, cette époque est étrange

    • Dès la première ligne du lien, on lit : « Spacedrive is an open source cross-platform file manager, powered by a virtual distributed filesystem (VDFS) written in Rust. »
      La raison de la connexion, c’est qu’il s’agit d’un système de fichiers distant
      Il vaut mieux penser à Dropbox qu’à un explorateur de fichiers
    • Nous l’avons ajouté au dernier moment sans l’expliquer clairement aux utilisateurs, et c’est notre faute
      Cela changera dans la prochaine mise à jour
      À terme, la connexion servira de moyen rapide de relier des appareils, comme Tailscale
  • Un méta-index consultable et exploratoire couvrant à la fois le cloud et le local, les stockages montés et non montés, est clairement intéressant, et c’est une sorte de Graal depuis un moment
    La gestion des actifs numériques n’est pas un concept nouveau, mais ce n’est pas un domaine où les options actuelles sont très nombreuses
    Portfolio ou les suites complexes d’Adobe offrent beaucoup de ces fonctionnalités, mais elles se concentrent davantage sur les workflows et les métadonnées que sur le stockage cloud
    De nos jours, il faut être très prudent avant d’adopter un énième service dépendant du cloud
    Étant donné la sensibilité de « tous les fichiers, y compris les fichiers locaux et hors ligne », le self-hosting/on-premise peut devenir une exigence absolue
    S’il faut un compte, on voudra une intégration avec la gestion d’identité existante via OIDC ou SAML
    Si cet outil devient le point d’entrée unique indispensable pour voir l’ensemble des fichiers et construire des workflows par-dessus, il faudra aussi des fonctions de continuité permettant d’avoir confiance dans sa disponibilité
    Continuez à pousser dans cette direction
    Personne n’a encore vraiment résolu ce problème

  • Le projet a l’air chouette, et j’aime son ambition
    J’ai quelques remarques
    Il faudrait un interrupteur clair pour tout accès WAN, et des interrupteurs séparés pour l’envoi de données d’analyse ou d’usage, désactivés par défaut
    Mieux encore, ce serait bien d’en faire aussi des flags de compilation
    Il y a quelque temps, un nouveau terminal appelé Warp était très séduisant, mais il envoyait des données sur le réseau par défaut, ce qui a été un motif de rejet immédiat pour beaucoup de gens
    J’aimerais que vous vous inspiriez beaucoup de Windirstat et Everything, et en particulier que vous visiez les performances de recherche d’Everything
    J’ai vu que c’était dans la feuille de route, mais je le redis : il faut des onglets
    Vous devriez aussi envisager de vous éloigner de Prisma
    Il encapsule trop la base de données et il y a trop de magie
    Mes raisons sont peut-être fragiles, mais je m’inquiète un peu d’un possible changement de licence un jour

  • J’aimerais qu’on arrête de traiter le written in Rust au début du README comme une fonctionnalité
    Chaque fois que je vois ce genre de formule, je ne me dis pas « ça doit être plus stable », mais plutôt « c’est le projet perso de quelqu’un »

    • Je n’ai pas vu le site mettre Rust en avant comme une fonctionnalité
      S’il s’agit du README, cela me semble être un détail pertinent à inclure pour un projet open source