2 ポイント 投稿者 GN⁺ 2024-03-06 | 1件のコメント | WhatsAppで共有
  • Radicle Heartwoodは Radicle Protocol の3番目の実装であり、中央集権型のコードフォージに依存しない、ピアツーピア方式のコード共同作業・公開スタックを提供する
  • リポジトリには、開発者が直接使うコマンドラインツール rad とネットワークデーモン radicle-node が含まれる
  • GitHub・GitLab のようなコードフォージを置き換えることを目指した設計で、セキュリティと分散化、ユーザー主権の維持を中核目標としている
  • インストール環境は Linux または Unix 系OS、Git 2.34 以上ssh-agent を含む OpenSSH 9.1 以上が必要
  • バイナリインストールと Rust ソースからのインストールの両方に対応するが、フィードバックメールは公開 Zulip チャンネルに自動投稿され、名前とメールアドレスが公開される可能性がある

Radicle Heartwood が提供するもの

  • Heartwoodは Radicle Protocol の3番目のイテレーションであり、ピアツーピアのコード共同作業と公開のためのフルスタックである
  • リポジトリには Heartwood 実装に必要な主要コンポーネントが含まれる
    • rad: ユーザーフレンドリーなコマンドラインインターフェース
    • radicle-node: ネットワークデーモン
  • Radicle は GitHub や GitLab のようなコードフォージの代替として設計されている
    • 目標はセキュリティ、分散化、ユーザー主権と自由の維持である
  • 一般情報は Radicle home page で確認できる
  • プロジェクトに関する会話は Zulip chat で可能
  • Radicle の動作方式は Protocol Guide に詳しくまとめられている

インストールと実行

  • インストール要件は次のとおり
    • Linux または Unix ベースのOS
    • Git 2.34 以上

      • ssh-agent を含む OpenSSH 9.1 以上
      • バイナリインストールには curltar が必要で、最新リリースは次のコマンドでインストールする
curl -sSf https://radicle.dev/install | sh
- バイナリは [download](https://radicle.dev/download) ページからも入手できる
- ソースからインストールするには **Rust ツールチェーン**が必要で、リポジトリ内で次のコマンドを実行する
cargo install --path crates/radicle-cli --force --locked --root ~/.radicle
cargo install --path crates/radicle-node --force --locked --root ~/.radicle
cargo install --path crates/radicle-remote-helper --force --locked --root ~/.radicle
- seed node から直接インストールすることもできる
cargo install --force --locked --root ~/.radicle \
    --git https://seed.radicle.dev/z3gqcJUoA1n9HaHKufZs5FCSGazv5.git \
    crates/radicle-cli crates/radicle-node crates/radicle-remote-helper
- ノード用の **systemd unit** ファイルは `/systemd` フォルダにあり、追加カスタマイズの出発点として利用できる
- デバッグモードでの実行は [HACKING.md](https://radicle.network/nodes/iris.radicle.network/rad%3Az3gqcJUoA1n9HaHKufZs5FCSGazv5/tree/HACKING.md) を参照する

フィードバック、コントリビューション、ライセンス

  • フィードバックは rad issueZulip、または feedback@radicle.dev に送ることができる
  • メールで送ったフィードバックは Zulip の公開 #feedback チャンネルに自動投稿される
    • 投稿過程で From ヘッダーが公開され、通常は名前とメールアドレスが含まれる
  • コントリビューションの案内は CONTRIBUTING.mdHACKING.md にある
  • Radicle は MIT ライセンスおよび Apache License 2.0 の条件で配布される
  • 詳細は LICENSE-APACHELICENSE-MIT にある

1件のコメント

 
GN⁺ 2024-03-06
Hacker Newsの意見
  • Radicleの共同創業者です。プロトコルの内部動作が気になるなら、まずドキュメントを見るとよいです: https://docs.radicle.xyz/
    ドキュメントはまだ作成中です

    • ドキュメントを読んでみると、「Radicleのリポジトリは公開/非公開にでき、ソースコード・ドキュメント・任意のデータセットを含められる」という部分が目につきました。
      基本的にP2Pファイル共有アプリだとすれば、悪用はプロトコルのどの部分で扱われるのかが気になります。そうでなければ、映画・音楽・ソフトウェアのような著作権コンテンツを任意に共有していたBitTorrentやWinnyのような前世代のファイル共有アプリと何が違うのか分かりません。少数の悪意ある利用者が台無しにしそうですし、違法なものに関与していないと確信できるように「個人」ネットワークを分離できるのかも気になります
    • 興味深いプロジェクトです。ビジネスモデルが気になります。
      Crunchbaseに1,200万ドルの投資を受けたと載っているので、収益化計画があるのだと思います
    • GitHubやGitLabのようなプロプライエタリなサービスの代替を積極的に探しているわけではありませんが、たまに代替案を尋ねられることがあります。分散型のセルフホスティング解決策は好きなのでRadicleの方向性は合っているのですが、要件にLinuxまたはUnixベースのOSとある点が引っかかります。
      私が支援している種類のプロジェクトでは、これは致命的になり得ます。コードはRustに見えますが、MS Windows対応の計画があるのか気になります。Mac OSはUnix系に含まれると見てよいのでしょうか? 正式なWindows対応でなくても、MSYS2への移植は可能なのか気になります。
      背景を少し付け加えると、私はサービスプロバイダーの選定のような決定を下す立場ではなく、GitHubにかなり大きなオープンソースのコードベースを置いている準政府組織に関わっています。ときどき特定のアイデアを提案する機会はありますが、採用するかどうかは私の権限ではありません。この組織は民間プロバイダーの方針に左右されないレジリエンスを備え、持続可能性や幅広いアクセス性といった「良いこと」も実現しようとする動機が大きいです。典型的な欧州の政府組織なので、GitHubはそうした方針と衝突します。
      アーカイブやネットワーク支援を担当する別の政府機関もありますが、能力が不足していたり古い方式にとどまっていたりして、プロバイダーが仕掛けた罠にもよくはまります。例えばアーカイブサービスが、DataBricksが商用のクローズドソース製品であることも知らないまま全面採用しました。そのため、その組織がセルフホスティングの解決策をうまく活用するという期待は低く、分散型の解決策が良さそうに見えます。ただし、主要な一般PC環境で動作しないツールは使えません
    • Radicleにどれくらいの予算が投じられ、何人がどれくらいの期間作ってきたのか、そして誰が使っているのかが気になります
    • ウェブサイトとアプリケーションのデザインが気に入りました。多くのオープンソースプロジェクトはビジュアルデザインで完全に崩れていることが多いですが、見た目の要素だとしても美しいデザインは、そのプロジェクトともっと関わりたいと思わせます。
      また、以前と現在それぞれでどの程度の採用を予想していたのか、実際の結果がその期待に合っていたのかも気になります
  • Radicleがここ5年ほどでどのように進化してきたのかを見守るのは興味深かったです。Protocol Berg 2023のワークショップに参加しましたが、かなり強力で新しいものを作ったと思います。
    特に興味深いのは、コラボレーション機能までローカルファーストである点です。インターネットがなくてもパッチやIssueを提出でき、GitHubに問題が起きるたびにチーム全体がHNに張り付く必要がなくなります

  • 目的に対してはよさそうなプロジェクトに見えますが、Git自体もすでにオープンソースでありP2Pだと思います。バイナリをsh <(curl)で受け取る必要はなく、別のGitサーバーに接続してGitコマンドで直接コードを取得したりマージしたりすればよいです。
    Gitにないのは、コードのIssue、Wiki、議論、GitHub Pages、そして何より開発者プロフィールのネットワークです。ソースコードのコミットがWikiやIssueと混ざらないように、プロジェクトのメタデータを.git自体に入れる方法が必要です。git notesのような独立した参照が使えるかもしれません。
    https://git-scm.com/docs/git-notes

    • Gitはある程度P2Pの相互作用を念頭に設計されていますが、実際にそのように配布される仕組みはありません。すべての配布はクライアント・サーバーモデルを使っており、GitだけではP2Pネットワークにそのまま配布する機能が不足しているためです。
      例えば、git cloneで取得したリポジトリが自分の要求したリポジトリであることを検証する方法がありません。そのため、信頼する出所、つまり既知のサーバーからクローンする必要があります。これは実用的なP2Pとは相性がよくありません。
      Radicleはローカルで検証可能な安定したリポジトリ識別子[0]を付与することでこの問題を解決し、信頼していない主体がリポジトリを提供できるようにします。
      [0]: https://docs.radicle.xyz/guides/protocol#trust-through-self-...
    • RadicleはIssueトラッキングとプルリクエストを追加します。おそらく他の機能も一部含まれると思います。
      モバイルでは、元リンク下部のボタンを押すとIssueトラッキングのタブやプルリクエストのタブなどを見られます
    • Fossil(https://fossil-scm.org)はIssueやWikiなどをプロジェクトリポジトリの中に入れます
    • 「何より開発者プロフィールのネットワーク」とは、世の中どうなっているのかと思います。
      Gerritは以前、コードレビューをGitに保存していたと記憶しています
    • 従来のGitは、最近のNintendo関連ニュースのような検閲を避けられません。こういうアイデアが頭の中を巡っていたので、誰かが難しい作業をやり遂げてくれたのは本当にうれしいです
  • ドキュメントには「自分が所有している、またはメンテナーであるリポジトリだけを公開し、他のメンテナーと連絡を取って重複するリポジトリ識別子を作らないようにすることが重要」と書かれている
    自分のコードを持っていって GitHub に上げる人たちを見てきたし、製品ドキュメントや途中の UI に「どうか X はしないでください。他のユーザーに問題が起きます」という案内を入れても、誰も読まず、考えず、気にもせず、すぐに X をする場面を何度も見てきた。だから多くの人はドキュメントのこの依頼を守らないだろうと思うし、そもそもホームページはコードをプッシュする方法だけを説明していて、この「重要な」依頼は、ほとんど読まれないユーザーガイドにある
    結局、ホームページの指示に従って作業中のオープンソースコードをそのままプッシュするという一見合理的な行動が、プロトコルと保存方式の性質上、時間がたつにつれて何か重要なものを乱したり混乱させたりし得る点がかなり気になる

    • ここに特別な問題があるようには思えない。今でもリポジトリの正規の場所は、別のソーシャルネットワークや Web サイトのような外部経路で見つける
      GitHub ではスター数で追加の信頼を得られるし、Radicle でそれに相当するのは特定リポジトリのシード数だ
    • ドキュメントや案内を無視するからといって、人に腹を立てるべきではない。それはとても論理的な行動だ
      普通、1 日のコンピューティング中に目にする案内は何十個もあり、使うツールも何十個もある。その案内をすべて読み、すべてのツールのドキュメントを丁寧に読むのにかかる時間を考えると、あまりにも長い
      だから読まずにヒューリスティックを使うほうがずっといい。例えば、保存していない変更がある文書を閉じると、ダイアログは「破棄しますか?」だと分かっているので読む必要がない。これは良いことだ
      結論としては、人々がこのように行動するという事実を前提にソフトウェアを設計すべきだということ。たいていは可能だ。具体的な例があれば、「お願いして読んでくれることを期待する」方式より良い解決策を提案できると思う
    • GitHub 的には、コードに著作権表示を入れて自分のリポジトリがオリジナルだと示し、著作権表示を変えることを違法にする、ということではないか? ここにも適用できる
  • リリースおめでとう。このプロジェクトを追ってきたが、かなり成熟してきた様子で本当に楽しみだ。現在 GitHub にあるプロジェクトは、どう移行するのが一番よいのか気になる。試せるミラーモードがあるのかも気になる

    • まだ組み込みのミラーリングはないが、検討中だ。理論上は、毎時間 GitHub から取得して Radicle にプッシュする cron ジョブを設定するだけで済むくらい単純なはずだ
      git pull github master
      git push rad master
  • 一般ユーザーにとって、これらのリポジトリがどれほど発見可能なのか気になる。https://app.radicle.xyz/robots.txt はないようなので、検索エンジンが取得してよい状態のようだし、実際に Google と DDG で site:app.radicle.xyz と検索すると結果が出る
    まだサイト指定なしで上位に出るわけではないが、順位は改善するかもしれない
    CI サポートと統合するツールもあるとよい。究極的には while true; do wait_repo_update; git pull && ./run_ci.sh; done のようなループになるだろうが、信頼した識別子からのプッシュだけに制限できる、より良い形が必要だ
    最後に、成果物リポジトリも必要だ。ただし Radicle がすべてを解決する必要はないのかもしれない。特に大きなバイナリを共有する分散ネットワークは、かなり早く望ましくない用途に使われそうだ

    • 現在、複数のCI 統合に取り組んでおり、自分たちの必要に合わせた独自のネイティブ CI も作っている
    • 良い指摘だ。app.radicle.xyz のようなゲートウェイは、クローラーがネットワーク上のリポジトリ全体をインデックスできるようにすべきだと思う
  • 「P2P」またはより一般的に言う「分散」が正確に何を意味するのか、人々が明確に定義してくれるとよい。今ではあまりにも曖昧なバズワードになっていて、何にでも使えてしまう

    • この用語が頻繁に誤用されているのは見たことがない。Radicle とほとんどの P2P システムで使われる定義は Wikipedia の定義[0]と同じで、特に「ピアはネットワーク上で同等の権限と能力を持つ参加者」という部分だ
      したがって P2P システムとは、すべての参加者が「ネットワーク内で同等の権限」を持つシステムだ。通常は全員が同じソフトウェアを実行しているという意味でもある
      [0]: https://en.wikipedia.org/wiki/Peer-to-peer
  • インストール案内が curl -sSf [https://radicle.xyz/install](<https://radicle.xyz/install>;) | sh だなんて、期待が一瞬で curl-bash のゴミに打ち砕かれた
    こういうインストール方式は、何も考えていない開発の強いシグナルだ。このプロジェクトが流行ったら、セキュリティ上の惨事が起きるのを目にすることになりそう。いつか、最悪のインストール方式から始まらない「オープンソースのP2P GitHub代替」が出てくることを願う

    • これはほとんどばかげているほどの 過剰反応
      パイプで渡すインストーラーのリスクは、多くの人がよく理解している。その理屈なら、Homebrew [1](GitHubのスター3.8万個以上)、PiHole [2](4.6万個以上)、Chef [3]、RVM [4]、そして bash にパイプする1ステップの自動インストーラーを使っている無数のオープンソースプロジェクトを捨てなければならない
      より合理的な対応は、開発者と協力してドキュメントに代替インストール方法を用意してもらうか、リスクをより適切に説明してもらうことであって、ノミを取るために家を焼くようなやり方ではない
      [1] https://brew.sh/
      [2] https://github.com/pi-hole/pi-hole
      [3] https://docs.chef.io/chef_install_script/#run-the-install-sc...
      [4] https://rvm.io/rvm/install
    • ちょっと大げさな反応では?
      転送が中断される問題については、システムに ^(t(e(m(p(d(ir?)?)?)?)?|a(r(g(et?)?)?)?)?|i(n(_(p(a(th?)?)?)?|fo?)?)?|s(u(c(c(e(s?s)?)?)?)?)?|f(a(t(al?)?)?)?|m(a(in?)?)?|w(a(rn?)?)?|u(rl?)?) に一致する危険なコマンドがある場合でなければ、スクリプトは安全だ
      それを処理した後では、スクリプトだけを提供して実行コマンドは提供しない場合と何が違うのかと思う。確認したいなら、スクリプトをダウンロードして別途実行すればいい。パイプされたスクリプトとダウンロードされたスクリプトを検出する方法があった気がするが、こういう小さなスクリプトでは動作しないだろう
    • ここにある [0]。プロジェクトはまだリリース前なので片付けるべき細かな部分があり、現在の焦点は少し別のところにある。Rustのcargoで ソースからビルド することもできる [1]
      [0] https://files.radicle.xyz/latest/
      [1] https://app.radicle.xyz/nodes/seed.radicle.garden/rad:z3gqcJ...
    • 使うかどうか、メンテナーを信頼するかどうかの問題だ。インストール方式 がメンテナーを信頼するかどうかを決める話ではなく、curl-bashであっても同じだ
  • 暗号資産市場が上がるたびにRadicleの話を聞く気がする。真面目に使っている人はいるのか?
    これはあっという間にダウンボートされたな。真面目に聞いているのだが、Radicleにどれくらいの予算が投入され、何人が作業し、誰が使っているのか知りたい

    • もっともな質問だ
      暗号資産業界で働いているが、自分も同じ印象を持った。Radicleの話を最後に聞いたのは前回の強気相場で、弱気相場では静かだった。みんな 弱気相場は作るための時間 だと言うし、Radicleは明らかに開発者ツールなのに、かなり奇妙だ
  • 特定のノード集合にだけリポジトリを提供するユースケースをサポートする予定があるのか気になる。GitHubには置きたくないが、非公開の共同作業 はしたい人たちがいそうだ

    • ある。Radicleではこれを プライベートリポジトリ と呼ぶ。ネットワークの他の部分からは見えず、信頼したピア同士でだけ共有される
      ただし保存時に暗号化されているわけではないので、信頼集合に属さない中間ノードに保存することはできない