2 ポイント 投稿者 GN⁺ 2025-02-02 | 1件のコメント | WhatsAppで共有
  • Earthstarは、ユーザーが自ら所有・運用する非公開の分散型アプリを作るためのデータ仕様とJavaScriptライブラリ
  • 新しいEarthstar仕様はWillowベースに変わり、Earthstar v11は現在ベータとして提供中
  • アプリはオフライン動作を前提としつつ、ライブ同期、一時ドキュメント、実際の削除、音楽・写真・動画の保存をサポート
  • サーバーは任意だが、運用形態は常にセルフホスティングで、ブロックチェーンやトークンに依存しない
  • ブラウザー、Deno、Nodeで動作し、ed25519検証、読み取り専用アクセス、ストリーミング同期、複数ライターとストレージドライバーを提供

Earthstarの役割と現状

  • Earthstarは、ユーザー所有アプリケーションを作るための、データベース的な性格を持つ仕様とJavaScriptライブラリ
  • 新しいEarthstar specificationWillowを基盤としている
  • Earthstar v11は現在ベータ版として提供されている
  • ドキュメント、JavaScript API、仕様、チャットアプリのチュートリアルが主な入口として用意されている

オフラインファーストアプリのための機能

  • アプリケーション機能

    • オフライン動作をサポート
    • ライブ同期とSneakernet方式をサポート
    • 音楽、写真、動画を保存可能
    • 一時ドキュメントとデータの実際の削除をサポート
    • 1つまたは複数のアイデンティティ(identity) を利用可能
  • 運用モデル

    • サーバーは任意
    • 運用形態は常にセルフホスティング
    • ブロックチェーンとトークンを使用しない
    • 「あらゆる意味で永遠に無料」を掲げる
  • 技術機能

    • ed25519検証をサポート
    • ブラウザー、Deno、Nodeで動作
    • 読み取り専用アクセス権を付与可能
    • 効率的な同期とストリーミング同期をサポート
    • 複数のデバイスで1つのアイデンティティを利用可能
    • 複数ライター、ストレージドライバー、ドキュメント書き込み権限をサポート

1件のコメント

 
GN⁺ 2025-02-02
Hacker News のコメント
  • nostr と少し似ていますが、違いがあります。データがコンテンツアドレス指定ではなく名前ベースなので、上書きと削除をサポートし、生データ型もメッセージ集合ではなく名前からドキュメントへの連想配列です
    ドキュメントは「shares」にまとめられ、サーバーがその share のドキュメントを持っていると認めるには、まず「share address」を知っている必要があります。一部は非公開、一部は公開というアクセスのあり方が興味深く、この軸で極端な選択をしたプロジェクトはたいてい苦労しますし、ほとんどがそうだと思います
    スパマーや詐欺師を防ぐことには成功しそうですが、動機の強い攻撃者を相手にする大きなグループでは慎重になります。ユーザーが1人でも公開と非公開のあいだの曖昧な領域にある share address を露出させると、その share の全ユーザーが明らかになるようです
    攻撃者が目標を見つける前に信頼グラフの各ホップを突破しなければならない信頼のウェブのほうがよいでしょうが、ユーザーが負う複雑さが大きくなるので、単純さのために細かな制御の不足を受け入れる理由も理解できます。こういうものが成功してほしいです。Web を失ってしまったように感じますし、Web のようなものがなければ、重要な時期に多くの人が大規模に協調するのは難しいからです

    • きちんとしたケイパビリティベース設計なら、ユーザーごとに別々の share address を与え、いつでも無効化できるようにすべきです
      share address は ssh キーのように扱うべきです
  • これが正確に何なのかよく分かりません
    JavaScript がたくさん入った何らかのドキュメント/メディア用データベースなのでしょうか?少しセルフホスティング志向で、Mastodon のようにピアノードへ複製するものなのでしょうか?大きなビジョンはありそうですが、はっきり見えません

    • Earthstar の長所は分散性にあるようです。そうでなければ、オフライン動作、ローカル保存、ブラウザー実行が可能な PGlite や SQLite ほどデータベース機能の幅は広くありません
      Earthstar の分散性で何が得られるのか分かりません。バックアップなら SQLite と PGlite でもかなり簡単です。データベース利用者の大半にとって大きな利点があるのかはよく見えません
      自分のデバイスにデータを保存しつつ、そのデータを他の個人と共有し、彼らにもローカルコピーを持ってほしい人には利点がありそうです。もしかするとコンテンツの違法共有向けかもしれません
    • 同じ意味でローカルファーストという用語があり、そちらのほうが活発に見えます
    • 私もこれを書こうと思って来ました。ユースケースが何なのか、どう使うのか、なぜ使うべきなのか分かりません
      興味深い機能は確かにありますが、機能の羅列の中でビジョンがぼやけている感じです
  • これは以前投稿されていた Willow プロトコル [0] に置き換えられたものだと思います
    Willow を読もうとしましたが、どうにもピンと来ませんでした [1]。タイムスタンプと暗号トークンのための追加フィールドが大量に付いた階層型キー・バリューストアのように見えますが、動作例があまりにも不足しています
    最近の Rust ライブラリ [2] でさえ、実質的には抽象クラスの束で、実装はエラーを投げるだけのレベルです。欧州の技術的洗練の現状について冗談を言うこともできますが、丁寧な微笑みで流しておきます
    [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

    • NLnet の支援を受けているプロジェクトです。NLnet が支援するプロジェクトの一覧は [1] にあり、どんな自由・オープンソースプロジェクトでも応募できます [2]
      [1] https://nlnet.nl/project/current.html
      [2] https://nlnet.nl/funding.html
    • 兄弟コメントと同じことを言おうとしていました。皮肉を言う必要はありませんし、NLnet は本当に多くの素晴らしいプロジェクトを支援しています
      シリコンバレーで作られたソフトウェアの品質を、成功しなかった VC 投資プロジェクトで判断するなら、どうしようもありません
    • Willow の背後にいる人たちも同じチームのようです: https://earthstar-project.org/docs/future#willow-protocol
      「上記の機能はすべて、私たちが取り組んできた新しい Willow General Purpose Sync Protocol によって可能になります。Earthstar に着想を得た新しいプロトコルであり、その概念を洗練し拡張します。このプロトコルの完全な仕様を掲載した新しいウェブサイトを公開する予定です。」

      https://willowprotocol.org/more/compare/index.html#compare_e...
      「Earthstar が Willow と非常によく似ていると感じるなら、それは偶然ではありません。Willow は Earthstar を再構想するところから始まり、将来の Earthstar バージョンは Willow の上に構築される予定で、Earthstar のコアメンテナーは Willow の2人の作者のうちの1人です。」
    • ウェブサイト最上部のバナーに、文字どおり「Earthstar has a new specification powered by Willow.」とあります
    • 1人のオープンソースプロジェクトが、欧州の技術的洗練の状態すべてを物語るわけではありません
  • Python クライアントはありますか?ドキュメントで Python 関連に見えるのはこれだけです
    # Earthstar timestamps in python
    timestamp = int(time.time() * 1000 * 1000)

  • むしろ jellyfin、immich、あとは単に sftp を勧めたい。同期、いや分散化は git、syncthing、rsync でできる。
    まだまともなセルフホスト型のアイデンティティ管理や SSO のようなものは見たことがない。bluesky が何か作っているとは知っているが、セルフホストできるかは分からない。オートコンプリートがフロイト的に self hostage に変えてしまった。
    ホームラボ/プライベートクラウドでまだ解けていないもう一つの問題は、自分で CA になり、相手に ssh を教えずに自分のマシンへのアクセスを管理する方法だ。
    NordVPN の meshnet のように、ファミリープランにログインしている人同士が互いのマシンをローカルネットワークのように見られる何かが欲しい。wireguard で可能なのか? yggdrasil もそういうもののようだが、まだ深くは見ていない。

    • これは自分のアプリケーションを作るためのライブラリではないのか? jellyfin のようなものがここでなぜ関係するのか分からない。
      「良い」アイデンティティ管理というのは、OpenLDAP や 389 ではないものを指しているのか? Windows まで考慮するなら、どれほど合うのかは分からない。
      自分で CA になるのは簡単だが、その CA を必要なすべてのマシンにインストールする部分がいまいちだ。Let’s Encrypt を使えば全部うまく動く。
      Wireguard はインターネット越しに 2 つの LAN を接続できるが、両端に pfsense のような wireguard 対応ルーターが 2 台あるとよい。そうでなければ、各クライアントマシンに特殊なルーティング設定を入れる必要がある。リンク越しに自動探索用の avahi を渡す方法はまだ分かっていない。
    • 家族と VLAN を共有したいなら、探しているものは tailscale かもしれない。
  • ブラウザが SQLite サポートを終了してからようやく SQLite パーティーに参加したというのが、今でも残念だ。

  • これはブログ記事が本当に役に立ちそうだ。たとえば、なぜこのように設計したのか、代替案は何だったのか、といった記事だ。
    第一印象は興味深い。アイデンティティが鍵ペアで、ファイルとコンテンツに名前でアクセスできる点も良い。

  • Python のような他の言語で実装される可能性はある? 全部気に入っているが、JavaScript という点だけが引っかかるし、こういう用途に JavaScript を使うのはまだ慎重になってしまう。

    • こういうアプリケーションのために、nim や gleam のように JavaScript と別のターゲットの両方へコンパイルできる言語が良い。そうすればアプリを Raspberry Pi、ESP32、ブラウザタブのどこでも実行できる。
      残念ながら、どちらもそこまで人気があるわけではないので、結局は複数言語での実装を求めることになり、こういうプロジェクトのメンテナーには負担になりそうだ。いずれにせよ現実はこうで、そういう言語でないなら、私も Python クライアントライブラリには関心がある。
  • 「常にセルフホスト。サーバーは任意。ブロックチェーンなし。トークンなし。あらゆる意味で永遠に無料。」
    最高の論旨要約文だ。