
2026/02/08 12:09
ご協力いただけるとのこと、ありがとうございます! 整えたいテキストをお送りください。すぐに丁寧に仕上げさせていただきます。
RSS: https://news.ycombinator.com/rss
要約▶
Japanese Translation:
## Summary Vouch は、貢献者がコードベースの設定可能な部分と対話する前に「証明(vouch)」される必要がある軽量なコミュニティトラスト管理システムです。また、明示的に「非承認(denounce)」を行うことでそのような対話をブロックできます。信頼関係は単一のフラット `.td` ファイル(Trustdown フォーマット)に保存されます。このファイルでは各行が1つのハンドルを保持し、オプションでプラットフォーム接頭辞(`platform:username`)と先頭マイナス記号が付けられたユーザーは非承認者として扱われ、その後に任意の理由が続きます。GitHub Actions は標準搭載の統合を提供します: - `check-pr` は `pull_request_target` で実行され、PR 作成者のステータスを検証し、未承認または非承認のプルリクエストを自動的に閉じることができます。 - `manage-by-discussion` と `manage-by-issue` は協力者がディスカッションやイシューコメントを通じて証明または非承認を行えるようにします。 Nushell CLI モジュールにより手動制御も可能です:`vouch add <user>`、`vouch denounce <user> [--reason] --write`、`vouch gh-check-pr <pr_id> --repo owner/repo`(ドライランまたは自動閉鎖)、および `vouch gh-manage-by-issue <pr_id> <comment_id> --repo owner/repo` などのコマンドがあります。ステータスチェックは終了コードを返します(`0 = vouched`、`1 = denounced`、`2 = unknown`)。 Vouch は任意のコードフォージで動作するよう設計されていますが、GitHub 統合がすぐに使用できる状態で提供されます。現在は実験段階であり、Ghostty プロジェクトによってテスト中です。このプロジェクトはコミュニティからのフィードバックをもとに機能を洗練しています。今後の計画としては、リポジトリ間で信頼リストをリンクし信頼ネットワークを構築すること、プラットフォームサポートの拡張、および自動化機能の強化が挙げられます。 *検証された参加を強制することで、Vouch は悪意ある貢献を減らし、コードレビューのワークフローを合理化し、安全なコラボレーションをオープンソースメンテナ、企業チーム、および広範なソフトウェア開発エコシステムに奨励することを目指します。```
本文
Vouch
コミュニティの信頼管理システム。
FAQ · コントリビューション
プロジェクト内の特定部分(設定可能)に関わる前に、参加者は「推奨(vouch)」されている必要があります。また、明示的に「非推奨(denounce)」することで、その人物がプロジェクトへのアクセスをブロックできます。
実装は汎用的で、どんなコードホスティングサービスでも利用可能ですが、GitHub Actions と CLI での GitHub 統合を標準搭載しています。
推奨リストは単一のフラットファイルに保存され、最小限のフォーマット(POSIX ツールや外部ライブラリ不要)で簡単にパースできます。
また、Vouch はウェブ・オブ・トラスト(Web of Trust)を形成することも可能です。別プロジェクトの推奨/非推奨リストを読み込み、価値観が共有できるプロジェクト同士で信頼判断を共有すると、エコシステム全体に広がる大規模なトラストネットワークを構築できます。あるプロジェクトで既に信頼性が証明されたユーザーは、別のプロジェクトでも自動的に信頼できるとみなされます。
警告
これは Ghostty によって実験的に使用中です。経験とフィードバックをもとに継続的に改善していきます。
なぜ必要なのか?
オープンソースは常に「信頼」と「検証」の仕組みで成り立っています。過去20年間、コードベースの理解・変更実装・レビュー提出には相当な労力が必要だったため、多くの質の低い貢献者を自然と排除できていました。
しかし現在は AI ツールにより、十分な理解なしに「説得力のある」却つて質の低いコードが生成されるようになり、単純に変更を提出するだけで信頼できると判断できなくなっています。とはいえオープンソースは依然として「信頼」で動いています。各プロジェクトには確立された「信頼できる人物」(メンテナー)と、比較的「信頼できる可能性のある人物」(活発なコミュニティメンバー)が存在します。そこで、推奨者が他者を推薦し、その被推薦者だけが貢献できるようにする明示的な信頼モデルへ移行しましょう。
推奨対象は誰?
「誰が、どのように推奨または非推奨になるか」はプロジェクト側で完全に決定できます。推奨・非推奨者に対する結果も同様にプロジェクト次第です。自分たちのプロジェクトとコミュニティに合ったポリシーを実装してください。
使い方
GitHub
GitHub プロジェクトへの Vouch 統合は、提供される GitHub Actions を選択するだけで簡単です。使用するアクションを決めれば、ユーザーの推奨状況とできること・できないことを完全に制御できます。
以下は各アクションの概要です。詳細はそれぞれのディレクトリにある README を参照してください。
| アクション | トリガー | 機能 |
|---|---|---|
| check-pr | | PR 作者が推奨済みかどうかを確認。Bots と書き込み権限のコラボレーターは自動で許可されます。必要に応じて非推奨者や未推奨者からの PR を自動閉鎖します。 |
| manage-by-discussion | | コラボレーターがディスカッションコメントでユーザーを推奨・非推奨・削除できます。推奨ファイルを更新し、コミットします。 |
| manage-by-issue | | コラボレーターがイシューコメントでユーザーを推奨・非推奨できます。推奨ファイルを更新し、コミットします。 |
CLI
CLI は Nushell モジュールとして実装されており、Nushell があれば他の依存は不要です。
統合ヘルプ
use vouch * help add help check help denounce help gh-check-pr help gh-manage-by-issue
ローカルコマンド
ユーザーの推奨状態を確認
Exit codes: 0 = 推奨, 1 = 非推奨, 2 = 未知.
推奨リストにユーザー追加
# 新ファイル内容をプレビュー(デフォルト) vouch add someuser # ファイルを書き換え(インプレース) vouch add someuser --write
非推奨処理
# 新ファイル内容をプレビュー(デフォルト) vouch denounce badactor # 理由付き vouch denounce badactor --reason "Submitted AI slop" # ファイルを書き換え(インプレース) vouch denounce badactor --write
GitHub 統合
GITHUB_TOKEN 環境変数が設定されていない場合、gh が利用可能なら gh auth token からトークンを取得します。
PR 作者の推奨状態確認
# PR 作者ステータス確認(ドライラン) vouch gh-check-pr 123 --repo owner/repo # 非推奨者による PR を自動閉鎖(ドライラン) vouch gh-check-pr 123 --repo owner/repo --auto-close # 実際に非推奨者の PR を閉鎖 vouch gh-check-pr 123 --repo owner/repo --auto-close --dry-run=false # 非推奨者のみブロック、未推奨者は許可 vouch gh-check-pr 123 --repo owner/repo --require-vouch=false --auto-close
出力ステータス:
skipped(bot/コラボレーター)、vouched、allowed、または closed.
イシューコメントで貢献者状態を管理
# ドライラン(デフォルト) vouch gh-manage-by-issue 123 456789 --repo owner/repo # 実際に処理実行 vouch gh-manage-by-issue 123 456789 --repo owner/repo --dry-run=false
書き込み権限を持つコラボレーターのコメントに対応します。
vouch # イシュー作者を推奨 vouch @user # 特定ユーザーを推奨 vouch <reason> # イシュー作者を理由付きで推奨 vouch @user <reason> # 特定ユーザーを理由付きで推奨 denounce # イシュー作者を非推奨 denounce @user # 特定ユーザーを非推奨 denounce <reason> # イシュー作者を理由付きで非推奨 denounce @user <reason> # 特定ユーザーを理由付きで非推奨
キーワードは
--vouch-keyword と --denounce-keyword でカスタマイズ可能です。出力ステータス:
vouched、denounced、または unchanged.
ライブラリ
モジュールはさらに
lib サブモジュールをエクスポートし、スクリプトから利用できます。
use vouch/lib.nu * let records = open VOUCHED.td $records | check-user "mitchellh" --default-platform github # "vouched", "denounced", or "unknown" $records | add-user "newuser" # updated table を返す $records | denounce-user "badactor" "reason" # updated table を返す $records | remove-user "olduser" # updated table を返す
推奨ファイル形式
推奨リストは
.td ファイルに保存されます。例は VOUCHED.example.td にあります。デフォルトでは VOUCHED.td か .github/VOUCHED.td が検索対象です。
# コメントは # で始まります username platform:username -platform:denounced-user -platform:denounced-user reason for denouncement
- 行ごとに一人のハンドル(@ を除く)を記述し、アルファベット順に並べます。
- オプションで
プレフィックスを付けることができます(例:platform:
)。github:mitchellh - 非推奨は行頭に
を付与します。- - さらに理由をスペースで続けて記述できます。
モジュールの
from td と to td コマンドにより、Nushell の open が .td ファイルを構造化テーブルへデコードし、コメントと空白も保持したままエンコードしてファイルへ書き戻せます。
補足
.td とは何か?Trustdown(「Markdown」の語呂合わせ)です。信頼リストの仕様を正式に定義し、Vouch のようなソフトウェアが相互に連携できるようにしたいと考えています。Vouch が安定して使われるようになってから、仕様公開を検討します。