メインコンテンツへスキップ

Go Proposal Weekly Digest

Go言語のproposal更新を毎週お届け

#78090likely_accept

cmd/go: delete bzr support

新規提案

要約

AIによる要約であり、誤りを含む場合があります。

概要

cmd/go から GNU Bazaar(bzr)バージョン管理システムのサポートを削除する提案です。Bazaar 自体が長年にわたって開発・メンテナンスが停止しており、Go モジュールエコシステムにおける実際の利用者数も極めて少ないことから、サポート継続のコストに見合わないと判断されました。

ステータス変更

(新規)likely accept
2026年3月26日のProposal Review Meeting(@adonovan, @bradfitz, @cherrymui, @griesemer, @neild, @rolandshoemaker)にて「likely accept」に分類されました。また、Go Command Working Group(@matloob)においても全員一致の支持が表明されており、最終コメント期間の待機状態となっています。

技術的背景

現状の問題点

GNU Bazaar は2016年を最後にリリースがなく、2017年以降は開発リポジトリへのコミットも停止しています。唯一の公開ホスティングサービスである Canonical の Launchpad.net も2025年末をもって Bazaar サポートの廃止を発表しました(現時点では一部機能が残存)。さらに Homebrew にもパッケージが存在しないため、cmd/go の開発者が動作確認環境を構築することすら困難な状況です。
proxy.golang.org のキャッシュデータを分析したところ、2022年後半以降に bzr 経由でフェッチされたモジュールはわずか46件で、そのほぼすべてが2015年以前のコードでした。参考として他のVCSとの比較を示します。

VCS フェッチ数
git 30,726,669
hg 1,123
fossil 1,021
bzr 46
svn 1
また、cmd/go では2016年に GOVCS が導入され、デフォルトでは git と hg のみがパブリックモジュールに利用可能となっています。プロキシ経由(デフォルト設定)では引き続き bzr ホストのモジュールを取得できるため、サポート削除後もプロキシにキャッシュされたモジュールは引き続きアクセス可能です。

提案された解決策

cmd/go のソースコードから bzr に関するすべての実装を削除します。これにより、将来の機能開発(例: #77897 のVCS情報追加機能)においても bzr 対応を含める必要がなくなり、メンテナンスコストが削減されます。
実装は早くとも Go 1.27(2026年8月リリース予定)となります。

これによって何ができるようになるか

直接的な新機能の追加ではなくコードの削除ですが、以下のメリットが見込まれます。

  • cmd/go のコードベースが簡潔になり、将来の機能追加・変更の実装コストが低下します。
  • 事実上誰も使用していない bzr サポートのための特殊ケース処理が排除され、コードの保守性が向上します。
  • GOVCS 設定や関連ドキュメントも整理され、開発者が理解すべき設定項目が減少します。
    なお、Launchpad.net 上の bzr リポジトリのモジュールは、proxy.golang.org にキャッシュされているため、この変更後もプロキシ経由での取得は引き続き可能です。
// Before: bzr リポジトリの直接フェッチが可能(ただし bzr コマンドが必要)
// go get launchpad.net/goose
// → bzr branch https://launchpad.net/goose を内部で実行
// After: 直接フェッチは不可能になるが、プロキシ経由では引き続き取得可能
// go get launchpad.net/goose  (プロキシキャッシュが存在する場合は動作する)
// GOFLAGS=-mod=mod GONOSUMDB=* GOFLAGS=-insecure での直接取得は失敗

議論のハイライト

  • 利用実績データによる客観的判断: プロキシのログデータを分析した結果、2022年末以降の bzr フェッチはわずか46件のみで、最新のモジュールでも2023年のものが1件あるのみです。このデータが提案の主な根拠となっています。
  • Bazaar 自体の終焉: ソフトウェアとしての Bazaar が約10年にわたって実質的に放棄されており、Homebrew にもパッケージがない状態です。継続メンテナンスの意義が失われています。
  • プロキシによる既存モジュールの保護: サポートを削除しても、プロキシにキャッシュされた既存の bzr モジュールは引き続き利用可能であるため、実際のユーザーへの影響は最小限に留まります。
  • Launchpad.net の方針変更: bzr の最大の活用先だった Canonical/Launchpad.net 自体が Bazaar サポートの廃止を予告しており、Go が対応を続ける意味がなくなっています。
  • Go Command Working Group の全員一致支持: @matloob が Go Command Working Group として全員一致の支持を表明しており、コアチーム内でも反対意見がなかったことが示されています。

関連リンク