2 pontos por GN⁺ 2025-02-02 | 1 comentários | Compartilhar no WhatsApp
  • Earthstar é uma especificação de dados e uma biblioteca JavaScript para criar apps distribuídos privados que os próprios usuários possuem e operam
  • A nova especificação Earthstar passou a ser baseada no Willow, e o Earthstar v11 está disponível atualmente em beta
  • Os apps têm funcionamento offline como padrão e dão suporte a sincronização ao vivo, documentos temporários, exclusão real e armazenamento de músicas, fotos e vídeos
  • Servidores são opcionais, mas o modelo de operação é sempre self-hosted, sem depender de blockchain ou tokens
  • Funciona no navegador, no Deno e no Node, e oferece verificação ed25519, acesso somente leitura, sincronização por streaming, múltiplos autores e drivers de armazenamento

Papel e status atual do Earthstar

  • Earthstar é uma especificação com características de banco de dados e uma biblioteca JavaScript para criar aplicativos de propriedade do usuário
  • A nova especificação Earthstar é baseada no Willow
  • Earthstar v11 está disponível atualmente em versão beta
  • Documentação, API JavaScript, especificação e um tutorial de app de chat são oferecidos como principais pontos de entrada

Recursos para apps offline-first

  • Recursos de aplicação

    • Dá suporte a funcionamento offline
    • Dá suporte a sincronização ao vivo e ao método Sneakernet
    • Permite armazenar músicas, fotos e vídeos
    • Dá suporte a documentos temporários e à exclusão real de dados
    • Permite usar uma ou várias identidades (identity)
  • Modelo operacional

    • Servidores são opcionais
    • O modelo de operação é sempre self-hosted
    • Não usa blockchain nem tokens
    • Defende a ideia de ser “gratuito para sempre, em todos os sentidos”
  • Recursos técnicos

    • Dá suporte à verificação ed25519
    • Funciona no navegador, no Deno e no Node
    • Permite conceder permissões de acesso somente leitura
    • Dá suporte a sincronização eficiente e sincronização por streaming
    • Permite usar uma única identidade em vários dispositivos
    • Dá suporte a múltiplos autores, drivers de armazenamento e permissões de escrita em documentos

1 comentários

 
GN⁺ 2025-02-02
Comentários no Hacker News
  • É um pouco parecido com o nostr, mas há diferenças. Os dados não usam endereçamento por conteúdo; são baseados em nomes, então dão suporte a sobrescrita e exclusão, e o tipo de dado bruto também não é um conjunto de mensagens, mas sim um array associativo que vai de nomes para documentos.
    Os documentos são agrupados em "shares", e, para que um servidor reconheça que possui os documentos daquele share, primeiro precisa conhecer o "share address". A abordagem em que alguns acessos são privados e outros públicos é interessante, e projetos que escolhem extremos nesse eixo em geral sofrem — eu diria que a maioria é assim.
    Parece que deve ter sucesso em barrar spammers e golpistas, mas eu teria cautela em grupos grandes contra atacantes motivados. Se um usuário expuser um share address que esteja numa zona cinzenta entre público e privado, parece que todos os usuários daquele share ficam expostos.
    Uma web of trust em que o atacante precise comprometer cada salto do grafo de confiança antes de encontrar o alvo seria melhor, mas a complexidade para o usuário aumenta; então dá para entender por que se aceita menos granularidade em nome da simplicidade. Espero que algo assim dê certo; sinto que perdemos a Web, e sem algo parecido com a Web fica difícil muita gente se coordenar em grande escala em momentos importantes.

    • Um design baseado em capacidades bem-feito deveria fornecer um share address separado para cada usuário e permitir desativá-lo a qualquer momento.
      O share address deve ser tratado como uma chave SSH.
  • Não sei exatamente o que é isto.
    É algum banco de dados de documentos e mídia com bastante JavaScript? Meio voltado a self-hosting, replicando para nós pares como no Mastodon? Parece haver uma grande visão, mas ela não fica clara.

    • O ponto forte do Earthstar parece ser a descentralização. Caso contrário, ele não tem uma amplitude de recursos de banco de dados tão grande quanto PGlite ou SQLite, que funcionam offline, armazenam localmente e podem rodar no navegador.
      Não sei o que se ganha com a descentralização do Earthstar. Se for backup, isso também é bem simples com SQLite e PGlite. Não vejo muito bem se há uma grande vantagem para a maioria dos usuários de bancos de dados.
      Parece vantajoso para pessoas que querem armazenar dados nos próprios dispositivos, compartilhar esses dados com outras pessoas e fazer com que elas também tenham cópias locais. Talvez também sirva para compartilhamento ilegal de conteúdo.
    • Nesse mesmo sentido, existe o termo local-first, e essa área parece mais ativa.
    • Eu também vim aqui para dizer isso. Não sei qual é o caso de uso, como se usa ou por que eu deveria usar.
      Há recursos interessantes, sem dúvida, mas a visão parece ter se perdido em meio à lista de funcionalidades.
  • Vejo isto como algo que foi substituído pelo protocolo Willow [0], que já apareceu por aqui antes.
    Tentei ler sobre o Willow, mas simplesmente não consegui entender [1]. Parece um armazenamento chave-valor hierárquico com um monte de campos extras para timestamps e tokens criptográficos, mas há pouquíssimos exemplos de funcionamento.
    Até a biblioteca recente em Rust [2] é praticamente um conjunto de classes abstratas, com implementações que só lançam erros. Eu poderia fazer uma piada sobre o estado do refinamento técnico europeu, mas vou apenas sorrir educadamente.
    [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

    • É um projeto apoiado pela NLnet. A lista de projetos apoiados pela NLnet está em [1], e qualquer projeto livre e de código aberto pode se candidatar [2].
      [1] https://nlnet.nl/project/current.html
      [2] https://nlnet.nl/funding.html
    • Eu ia dizer o mesmo que o comentário irmão. Não precisa ser sarcástico; a NLnet apoia muitos projetos incríveis.
      Se a qualidade do software feito no Vale do Silício fosse julgada pelos projetos financiados por VC que não deram certo, não haveria resposta possível.
    • As pessoas por trás do Willow parecem ser a mesma equipe: https://earthstar-project.org/docs/future#willow-protocol
      “Os recursos acima serão todos possibilitados pelo novo Willow General Purpose Sync Protocol em que estamos trabalhando. É um novo protocolo inspirado no Earthstar, refinando e ampliando seus conceitos. Vamos lançar um novo site com a especificação completa desse protocolo.”

      https://willowprotocol.org/more/compare/index.html#compare_e...
      “Se o Earthstar parece muito parecido com o Willow, não é por acaso. O Willow começou como uma reimaginação do Earthstar, versões futuras do Earthstar serão construídas sobre o Willow, e a principal mantenedora do Earthstar é uma das duas autoras do Willow.”
    • O banner no topo do site diz literalmente: “Earthstar has a new specification powered by Willow.
    • Um projeto open source de uma pessoa só não diz tudo sobre o estado do refinamento técnico europeu.
  • Existe um cliente Python? A única coisa que vi na documentação relacionada a Python é isto:
    # Earthstar timestamps in python
    timestamp = int(time.time() * 1000 * 1000)

  • Eu recomendaria melhor jellyfin, immich, e o resto simplesmente sftp. Sincronização — ou melhor, descentralização — dá para fazer com git, syncthing e rsync
    Ainda não vi um gerenciador de identidade self-hosted ou SSO decente. Sei que a bluesky está criando um, mas não sei se será possível fazer self-hosting. O autocompletar trocou de forma freudiana para self hostage
    Outro problema que ainda não foi resolvido no homelab/cloud privada é como ser sua própria CA e gerenciar o acesso às minhas máquinas sem ensinar ssh à outra pessoa
    Quero algo como o meshnet da NordVPN, em que pessoas logadas no plano familiar possam ver as máquinas umas das outras como se fossem uma rede local. Dá para fazer com wireguard? O yggdrasil também parece ser algo assim, mas ainda não olhei a fundo

    • Isto não é uma biblioteca para criar sua própria aplicação? Não entendo por que algo como jellyfin seria relevante aqui
      Por gerenciamento de identidade “bom”, você quer dizer algo que não seja OpenLDAP ou 389? Se for levar Windows em conta, não sei o quão bem isso se encaixa
      Ser sua própria CA é fácil, mas a parte de instalar essa CA em todas as máquinas desejadas é meio ruim. Usando Let’s Encrypt, tudo funciona bem
      Wireguard consegue conectar duas LANs pela internet, mas é bom ter dois roteadores com suporte a wireguard, como pfsense, em cada ponta. Caso contrário, é preciso instalar configurações especiais de roteamento em cada máquina cliente. Ainda não descobri como encaminhar avahi para descoberta automática através do link
    • Se você quer compartilhar uma VLAN com a família, tailscale pode ser o que está procurando
  • Ainda acho uma pena só terem entrado na festa do SQLite depois que os navegadores encerraram o suporte a SQLite

  • Um post de blog sobre isso seria muito útil. Por exemplo, explicando por que foi projetado assim e quais eram as alternativas
    A primeira impressão é interessante. Também gosto do fato de a identidade ser um par de chaves e de arquivos e conteúdo poderem ser acessados por nome

  • Há possibilidade de implementação em outras linguagens, como Python? Gosto de tudo, mas o fato de ser JavaScript me incomoda, e ainda tenho cautela em usar JavaScript para esse tipo de finalidade

    • É por causa de aplicações como essa que linguagens como nim ou gleam, que compilam tanto para JavaScript quanto para outros alvos, são boas. Assim dá para rodar o app em um Raspberry Pi, em um ESP32 ou em uma aba do navegador
      Infelizmente, nenhuma das duas é tão popular, então no fim acabamos pedindo implementações em várias linguagens, o que parece ser um fardo para os mantenedores de projetos assim. De todo modo, essa é a realidade; se não for uma linguagem desse tipo, eu também teria interesse em uma biblioteca cliente em Python
  • “Sempre self-hosted. Servidor opcional. Sem blockchain. Sem tokens. Gratuito para sempre, em todos os sentidos.”
    É o melhor resumo da tese