2 pontos por GN⁺ 2023-10-12 | 1 comentários | Compartilhar no WhatsApp
  • O Spacedrive é uma plataforma de dados entre dispositivos que lida com arquivos de vários dispositivos e da nuvem em um só lugar, indexando e pesquisando arquivos, e-mails, notas e fontes externas, além de sincronizar via P2P
  • Em vez de substituir o Finder ou o Explorer, ele atua como uma camada superior sobre o gerenciador de arquivos do sistema operacional para pesquisar e navegar por disco local, drives externos, NAS, armazenamento em nuvem e fontes de dados arquivadas
  • Atribui um hash de conteúdo BLAKE3 a todos os arquivos para identificar o mesmo arquivo com o mesmo hash, permitindo rastreamento de duplicatas e deduplicação em vários dispositivos
  • A sincronização entre dispositivos usa sync P2P baseado em Iroh/QUIC com conexão direta, sincronizando metadados sem servidor, nuvem ou ponto único de falha, enquanto os arquivos permanecem em seu local original
  • Indexa S3, Google Drive, Dropbox, OneDrive, Azure e GCS como volumes de nuvem junto com o armazenamento local, e Gmail, Apple Notes, favoritos do Chrome, Slack, GitHub e outros se tornam repositórios pesquisáveis por meio de adaptadores baseados em scripts
  • Integrado ao Spacebot, executa o runtime de agentes de IA como um processo separado opcional, com o Spacedrive responsável pela camada de dados, permissões e execução, enquanto o Spacebot cuida da inteligência
    • Cada instância do Spacebot é pareada com um nó do Spacedrive, e esse nó realiza autenticação do agente, manutenção do grafo de dispositivos, resolução de permissões e encaminhamento de tarefas para dispositivos pares
    • Leitura de arquivos, comandos de shell e tarefas são proxyados para o dispositivo de destino via Spacedrive, e o sistema de permissões gerencia dispositivos, caminhos, tarefas acessíveis e a necessidade de confirmação humana
  • Quando ativados, os registros a serem indexados passam por um pipeline de Safety Screening antes de se tornarem pesquisáveis
    • O Prompt Guard 2 detecta injeção de prompt em e-mails, mensagens e documentos com um classificador local
    • Camadas de confiança, sistema de isolamento e content fencing excluem registros sinalizados das consultas de agentes de IA e permitem revisão no app de desktop
  • A arquitetura principal é composta por Virtual Distributed Filesystem, sistema de identificação de conteúdo, ações transacionais e sincronização sem líder
    • Arquivos e pastas tornam-se objetos independentes da localização física, e cada arquivo possui um endereço SdPath que funciona em vários dispositivos
    • As operações com arquivos têm pré-visualização antes da execução, podem ser aprovadas ou canceladas e assumem a forma de jobs duráveis que suportam interrupções de rede e reinicializações de dispositivos
  • A implementação é baseada em um único crate em Rust e na arquitetura CQRS/DDD, usando como principais tecnologias Tokio, SQLite, SeaORM, sqlx, Iroh, BLAKE3, LanceDB, FastEmbed, OpenDAL, Tauri 2, React Native, React 19, Vite, TanStack Query, Tailwind CSS v4 e Specta
  • O app de desktop é voltado para macOS, Windows e Linux, e o app móvel para iOS e Android, além de incluir estruturas de CLI, daemon, servidor headless e cliente de navegador
  • Os requisitos de execução são Rust 1.81+, Bun 1.3+, just e Python 3.9+ para adaptadores, com os comandos de desenvolvimento just setup, just dev-desktop e just test
  • O modelo de privacidade e segurança é local-first; o tráfego P2P é criptografado com QUIC/TLS, a biblioteca pode usar SQLCipher para criptografia em disco, e não há telemetria para rastreamento ou análise
  • A licença é FSL-1.1-ALv2 Functional Source License, com transição para Apache 2.0 após 2 anos

1 comentários

 
GN⁺ 2023-10-12
Opiniões do Hacker News
  • Logo após a instalação, ele já exigiu criar uma biblioteca, compartilhar dados de análise e fazer login, então a expectativa foi diferente da de outros exploradores de arquivos.
    Fui para um diretório qualquer do drive e dei duplo clique, mas nada aconteceu; abrir pelo menu de contexto deu no mesmo.
    Pelo visto, quando há 15 mil arquivos em um diretório, a navegação se torna praticamente impossível.
    O Total Commander e o Windows Explorer não têm esse problema, então parece que o Spacedrive ainda precisa refinar as funções básicas de explorador de arquivos.

    • Obrigado por usar o Spacedrive; esse bug que ocorre ao navegar antes de adicionar uma “Location” já é conhecido.
      Ao contrário de algumas respostas aqui, o Spacedrive foi projetado pensando em grandes volumes de dados: ele indexa previamente uma Location para criar cache, e faz cache e virtualização de tudo.
      Na próxima atualização, pretendemos corrigir o bug ao navegar em lugares que não são uma Location; parece que muitos usuários primeiro tentam navegar antes de adicionar algo como Location.
      Ainda é um software alfa, então esperamos ir refinando com o tempo.
    • A maioria dos apps em React parece não considerar muito bem o suporte a grandes volumes de dados.
      É difícil culpar só os desenvolvedores; acho que o framework deveria dar suporte a isso por padrão.
      Não deveria ser necessário entender listas virtualizadas.
      Quando criei uma TableView em SwiftUI, consegui rolar por milhares de itens sem saber nada sobre o funcionamento interno.
    • O Windows Explorer também engasga em HDD quando há muitos arquivos em um diretório.
      Como não há cache da ordem de classificação, se você abrir de um jeito que não seja em ordem alfabética, precisa esperar mais de 5 minutos enquanto ele ordena.
  • Quando vi isso há bastante tempo, não havia um pacote de release para testar diretamente, então pensei em conferir quando estivesse pronto; parece que a versão alfa saiu há uma hora e por isso voltou ao HN.
    O conceito em si é bem-vindo.
    Hoje em dia, a fronteira entre arquivos locais rígidos e vários armazenamentos em nuvem ficou mais difusa.
    Pessoalmente, eu mantenho essa fronteira e quase não monto armazenamento em nuvem no Mac, mas minha esposa, que é acadêmica, lida com Dropbox, iCloud Drive, Google Drive e armazenamento da Microsoft.
    Isso porque as pessoas com quem ela trabalha compartilham arquivos e colaboram em revisões por cada um desses serviços.
    Se uma ferramenta dessas conseguir esconder problemas de integração e comportamentos peculiares de cada fornecedor e oferecer um sistema de arquivos transparente que pareça local, mas que por trás possa estar conectado a algum armazenamento em nuvem, ela ajudaria bastante no fluxo de trabalho.
    O ponto central é a usabilidade; se a latência for alta e parecer mais lento que o Finder, as chances diminuem.

  • O Hacker News provavelmente não é o público ideal para esse tipo de produto.
    As pessoas aqui provavelmente já têm seus próprios fluxos de trabalho otimizados, e eu também.
    Este produto parece combinar melhor com criadores digitais que usam Windows e Mac, mas não são familiarizados com terminal.
    Gente como animadores, ilustradores, editores de vídeo, artistas 3D, produtores musicais, YouTubers e streamers.
    Dito isso, não sei se esse segundo grupo realmente quer algo assim.
    Só pelo marketing, não dá para saber exatamente o que o software faz, e acho que esse grupo sentiria o mesmo.
    Entendo que querem falar de uma “experiência universal de arquivos”, mas não está claro o que isso significa concretamente.
    O usuário não deveria precisar instalar o software para entender seus recursos.
    O fato de ser open source ou rodar no Linux também não parece muito importante para eles.
    Nesta fase, eu refaria completamente o marketing e o otimizaria para esse segundo grupo.
    Seria melhor trabalhar com alguém de PR ou um especialista em marketing para comunicar de forma concreta e eficiente qual é o valor que vocês estão construindo.
    Além disso, para poupar esforço da equipe, eu tiraria o repositório de código do ar e também encerraria a versão para Linux, ou a manteria privada até surgir demanda.
    Boa sorte.

  • Venho acompanhando há bastante tempo e tenho alguns feedbacks.
    Indexar um único diretório local de desenvolvimento já levou mais de 35 minutos até agora, e acho que não vou esperar até o fim.
    Como outros disseram, a latência é um problema.
    Em um macOS M1 de 14 polegadas, modelo básico, mesmo depois de adicionar uma Location, às vezes leva de 2 a 4 segundos para abrir uma pasta e os arquivos aparecerem.
    Se não deixei passar nada, parece que ainda não há abas.
    Os recursos de ordenação e agrupamento de arquivos são excessivamente fracos ou praticamente inexistentes, mas imagino que serão melhorados durante o desenvolvimento.
    Para chegar a um estado razoável de indexação, parece haver muita coisa que o usuário precisa fazer, como adicionar várias Locations manualmente.
    Entendo a ideia de local-first, mas a forma como lidam com telemetria e login não me agrada nem um pouco.
    No geral, depois de testar por conta própria, fiquei um pouco decepcionado, então provavelmente não é para mim, mas pode haver um público-alvo, e ainda há caminho pela frente.
    Visualmente, é muito bonito.

    • Atualizando: eu tinha esquecido que deixei ligado, e ele continuou indexando a mesma pasta local de desenvolvimento por mais de 4 horas :(
  • Fico curioso para saber por que fizeram isso em React.
    Entendo que Rust não tenha um framework de GUI como Qt, mas não sei se isso é a resposta.
    Seria porque não queriam aprender algo novo?
    Daria perfeitamente para criar como um app em C++ ou Qt, escrever a GUI em QML e ainda acoplar Lua, Python ou JavaScript como linguagens de script.
    Claro, dá trabalho.
    Renderizar no navegador é quase uma versão mais fácil de criar GUI com uma API de GPU como OpenGL.
    O sistema operacional já tem ferramentas de GUI, então bastaria usá-las.
    Fora isso, parece bem interessante, mas acho que até algo como pcmanfm não oferece suporte a adicionar locais remotos?
    Outra coisa que me intriga é por que usam Prisma.

    • Se você quer criar um app desktop multiplataforma em Rust, hoje eu também provavelmente recomendaria Tauri + React.
      O Tauri facilita descer para Rust quando é preciso fazer tarefas de alto desempenho ou integração com o sistema operacional, e já vem com empacotamento para as principais plataformas.
      Usar React permite aproveitar um ótimo ecossistema com muitos componentes de UI já existentes.
      Isso é diferente da maioria dos frameworks nativos de GUI em Rust.
      Também permite reutilizar engenheiros de front-end e sua capacidade de trabalhar com tecnologias web e designers.
    • Dizer que Rust não tem frameworks de GUI ignora Slint, egui e crates de binding para Qt.
      Dá para dizer que não são tão maduros quanto Qt, mas em muitos casos são suficientes em comparação com algo rodando no navegador.
  • É meio difícil acreditar que este repositório esteja em alfa inicial, com muitos bugs conhecidos, e ainda assim tenha tantas estrelas no GitHub
    Além disso, parece que recebeu investimento de VC, o que é ainda mais confuso do que langchain ou pinecone terem recebido investimento
    Pelo menos esses são projetos baseados em IA, mas este projeto está em uma área que já foi bastante explorada
    Mesmo que seja gratuito para sempre, acho que as pessoas não vão querer usar; e, se entrar publicidade, rastreamento ou assinatura mensal, menos ainda
    Basicamente, não há motivo para confiar e há muitos motivos para desconfiar
    Não é um ataque pessoal, mas, se vocês ainda não consideraram esse ponto de vista, seria bom pensar nisso

  • A primeira tela depois de “welcome” é um login
    Não sei por que é preciso fazer login em um explorador de arquivos; estes tempos são estranhos

    • Logo na primeira linha do link está assim: “Spacedrive is an open source cross-platform file manager, powered by a virtual distributed filesystem (VDFS) written in Rust.”
      O motivo do login é que isso é um sistema de arquivos remoto
      É mais correto pensar em Dropbox do que em um explorador de arquivos
    • Adicionamos isso no último momento e não explicamos claramente ao usuário; foi erro nosso
      Isso deve mudar na próxima atualização
      No fim, o login será uma forma de conectar dispositivos rapidamente, como o Tailscale
  • Um metaíndice pesquisável e navegável para armazenamento disperso em nuvem e local, montado e não montado, é sem dúvida interessante e foi uma espécie de santo graal por um tempo
    Gestão de ativos digitais não é um conceito novo, mas atualmente não é uma área com muitas opções
    O Portfolio ou o conjunto complexo de produtos da Adobe oferece muitos desses recursos, mas foca mais em fluxos de trabalho e metadados do que em armazenamento em nuvem
    Hoje em dia, é preciso ter muita cautela antes de adotar mais um serviço dependente da nuvem
    Considerando a sensibilidade de “todos os arquivos, incluindo arquivos locais e offline”, auto-hospedagem/on-premises pode ser um requisito absoluto
    Se uma conta for necessária, provavelmente vou querer integração com a gestão de identidade existente via OIDC ou SAML
    Se essa ferramenta se tornar a janela única essencial para ver todos os arquivos e fluxos de trabalho forem construídos sobre ela, também será necessário ter recursos de continuidade que garantam a disponibilidade
    Espero que continuem levando isso adiante
    Ainda não há ninguém que tenha resolvido isso completamente

  • O projeto parece legal, e gosto da ambição
    Tenho algumas observações
    Deve haver um toggle claro para todo acesso WAN, e toggles separados para envio de dados de análise ou de uso, todos desativados por padrão
    Melhor ainda seria transformar isso em flags de compilação
    Um tempo atrás, o novo terminal chamado Warp era muito atraente, mas, por padrão, enviava dados pela rede, o que fez muita gente descartá-lo imediatamente
    Seria bom se inspirar bastante no Windirstat e no Everything, especialmente tendo como meta o desempenho de busca do Everything
    Vi que está no roadmap, mas, repetindo: são necessárias abas
    Também considerem se afastar do Prisma
    Ele encapsula demais o banco de dados e tem magia demais
    Talvez eu não tenha uma base forte para isso, mas fico um pouco preocupado que um dia mudem a licença

  • Gostaria que parassem de tratar written in Rust, no começo do README, como se fosse um recurso
    Toda vez que vejo esse tipo de frase, não penso “deve ser mais estável”, e sim “isso é o projeto de hobby de alguém”

    • No site, não vi nenhuma parte promovendo Rust como recurso
      Se for no README, parece algo plausível de incluir como detalhe relevante em um projeto open source