cmd/go: delete bzr support
要約
概要
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 として全員一致の支持を表明しており、コアチーム内でも反対意見がなかったことが示されています。