Spacedrive – Explorateur de fichiers multiplateforme open source
(github.com/spacedriveapp)- 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
SdPathqui 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
- Les fichiers et dossiers deviennent des objets indépendants de leur emplacement physique, et chaque fichier possède une adresse
- 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-desktopetjust 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
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
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
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
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
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
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
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
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
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 »
S’il s’agit du README, cela me semble être un détail pertinent à inclure pour un projet open source