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

Go Proposal Weekly Digest

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

破壊的変更

cmd/go から GNU Bazaar(bzr)バージョン管理システムのサポートを削除し、bzrホストのモジュールを直接フェッチできなくする。

Go command

この項目の注釈は AI により生成されており、誤りを含む場合があります。

概要

go コマンドから GNU Bazaar(bzr)バージョン管理システムのサポートが削除される。これにより go コマンドは bzr でホストされているモジュールを直接フェッチできなくなる。ただし proxy.golang.org など既存のモジュールプロキシ経由での取得(デフォルト設定)には影響せず、プロキシに既にキャッシュされている bzr 由来モジュールは引き続き取得可能である。

導入経緯

提案者の @rsc は、Bazaar 自体が 2016 年を最後にリリースされておらず、開発リポジトリへの最終コミットは 2017 年、Issue トラッカーへの最終投稿も 2023 年である点を指摘した。唯一の公開ホスティングであった Canonical の Launchpad.net も 2025 年末に Bazaar サポート終了を表明している。

proxy.golang.org のキャッシュ済み .info ファイルを 2022 年後半以降について集計したところ、VCS 別のフェッチ数は次の通りで、bzr の利用が実質的に消滅していることが定量的に示された(issue #78090本文より)。

git    30,726,669
hg          1,123
fossil      1,021
bzr            46
svn             1

bzr の 46 件のうち最新のものも 2023 年の launchpad.net/kjvonly-bql で、それ以外は 2015 年以前のコードだった。この調査結果と Go Command Working Group からの全会一致の支持を受けて、提案は Proposal Review Meeting で承認された。

議論タイムライン

  • 2026-03-25: Proposal Review Meeting で "likely accept" に設定。Go Command Working Group からも全会一致の支持が表明された。
  • 2026-04-08: コンセンサスに変化がないため正式に "accepted" となった。

議論のハイライト

  • svn は削除対象外: bzr の 46 件に対し svn は 1 件(svn.riouxsvn.com/shad.svn)のみだが、svn はエンタープライズ内部の非公開モジュール向けに依然として意義があると判断された。
  • hg・fossil も削除対象外: フェッチ数は少ないもののどちらも活発に保守されており、10 年間放置されている bzr とは状況が根本的に異なる。
  • テレメトリ不足でも判断可能: VCS 利用状況をテレメトリで計測する issue #76801 は未実装で非公開モジュールでの bzr 利用は不明だが、bzr プロジェクト自体が実質的に死んでいるため「利用なし」と安全に仮定できるとされた。
  • 関連 issue #29790 は既に解消済み: かつて bzr モジュールへの誤った依存が原因でフェッチに失敗する問題が報告されていたが、Go 1.17 のプルーニングされたモジュールグラフ、プロキシのデフォルト有効化、該当リポジトリ自体の削除という 3 つの要因で既に解消している(issue #29790)。
  • Go Command Working Group が全会一致で支持: チーム内で反対意見はなかった。

移行時の注意

  • go get などで bzr ホストのモジュールを直接フェッチすることはできなくなる。デフォルトで有効なモジュールプロキシ(proxy.golang.org)にオープンソースライセンスの下で既にキャッシュされているモジュールは、プロキシ経由であれば引き続き取得できる。
  • GOVCS 環境変数に bzr を指定してもエラーになる。もっとも GOVCS のデフォルト設定はパブリックリポジトリに対して元々 githg のみを許可しており、bzr を直接プロトコルとして使うには GOVCS を明示的に指定する必要があった。
  • Launchpad.net 自体も Bazaar サポートの終了を予定しているため、この変更の有無にかかわらず bzr ホストへの直接アクセスはいずれ失われる見込みである。

実装解説

cmd/go/internal/vcs/vcs.govcsList は現在 vcsHgvcsGitvcsSvnvcsFossil の 4 種類のみで構成されており、bzr 用の Cmd 定義は存在しない。デフォルトの GOVCS 設定である defaultGOVCS 直前のコメント(717 行目付近)には、Git と Mercurial のみをパブリックモジュールのデフォルトで許可している経緯として Bazaar・Fossil・Subversion への言及が残っているが、これは信頼できないサーバーのクライアントとして実行される際の攻撃面としての評価に関する歴史的な注記であり、vcsList からは bzr のエントリ自体が完全に取り除かれている。

関連リンク