Homebrew、HashiCorpに関する警告を追加し廃止予定
(github.com/Homebrew)- Homebrew/homebrew-core PR #139538 は、HashiCorpの ライセンス変更 により
terraformformula にユーザー向け警告を追加し、将来的に無効化される可能性があることを知らせる変更 - 変更理由は、ライセンス変更以降 homebrew-core で
terraformの バージョン更新が今後行われなくなること であり、ユーザーがインストール時にそれを認識できるようにすることに重点がある - レビュー過程では、1.6.0 より前の将来リリースは受け入れ可能かもしれないが、そのようなリリースが存在しない可能性もあるという バージョン例外 が議論された
- PR は依存関係の整理後、2024年4月4日に再びレビュー準備完了状態となり、未来形の文言を削除すべきというフィードバックを反映して
terraform: deprecate and add caveatコミットで更新された - 最終変更は 2024年4月5日、merge queue を通じて Homebrew
masterに コミット4782218としてマージされ、関連するterraform廃止 PR #168090 もマージされた
terraform formula の廃止と警告追加
- PR #139538 の目的は、HashiCorp の ライセンス変更 により homebrew-core で
terraformのバージョン更新が今後行われない状況をユーザーに知らせること - 当初の説明は、「将来的にこの formula を無効化する可能性がある」ことをユーザーに伝える方向だった
- 変更対象は
Formula/terraform.rbで、その後ファイルパスはFormula/t/terraform.rbとして表示された - PR には
formula deprecated、busl-license、go、maintainer feedbackなどのラベルが付けられた
バージョンとライセンスをめぐる議論
- レビュー中、
terraformの将来リリースのうち 1.6.0 より前のバージョン は受け入れ可能かもしれないという意見が出た- ただし、そのようなリリースが実際には存在しない可能性も示された
- PR の説明は、ライセンス変更以降 homebrew-core ではこれ以上バージョン更新が行われない点を変更の根拠としている
- その後のコミットメッセージは、「ライセンス変更により homebrew-core で今後バージョン更新が行われないため、将来的にこの formula を無効化する」という趣旨を含んでいた
レビューと変更反映の流れ
- 2023年8月14日に PR が作成され、複数の maintainer が
Formula/terraform.rbの変更をレビューした - 2023年9月6日にはレビュー反映を求める ping があり、作成者は反映完了を知らせた
- 2023年9月7日に MikeMcQuaid が変更を承認したが、merge queue でステータスチェック失敗により除外された
- 2023年9月20日には chenrui333 も変更を承認した
- 2024年2月23日に PR は draft として表示された
依存関係の整理と関連 PR
- 2024年3月13日には
cdktf: deprecateコミットがこの PR を参照した- そのコミットメッセージでは、
cdktfがまもなく廃止されるterraformを使用していると述べている terraformの廃止を妨げる最後の formula のひとつだと説明しているcdktfは月700回以上ダウンロードされており、HashiCorp GitHub org でホストされているものの BUSL ライセンス変更の影響は受けないと記されている
- そのコミットメッセージでは、
- 関連 PR として cdktf: deprecate #166001 がマージされた
- 2024年4月3日には atlantis: vendor terraform #167948 がこの PR を参照し、マージされた
最終整理とマージ
- 2024年4月4日、作成者は「すべての依存関係を処理したので、これで問題ない」と伝え、PR を review ready に切り替えた
- p-linnane は、すでにその状況は発生しているため、未来形の表現 を削除できるとフィードバックした
- 作成者はこれを反映し、
terraform: deprecate and add caveatコミット1c7b99bでブランチを更新した - p-linnane、MikeMcQuaid、chenrui333 が最終変更を承認した
- 2024年4月5日、PR は merge queue を通じて Homebrew
masterにコミット4782218としてマージされた - 同日、terraform: deprecate and add caveat #168090 もマージ済み PR として参照された
1件のコメント
Hacker News の意見
依存パッケージをすぐに廃止するのではなく、代替品に置き換えられるかを見るために保留中である点が重要
たとえば Terraform に依存するプログラムは、OpenTofu を代替品として使える可能性が高い
残念ながら Vault、Consul、Nomad にはオープンソースの代替が出てくるとは思えない。特に Nomad は、HashiCorp が投資をやめるまでは良い製品だったのに、非公開ソースになった以上、採用される可能性はほとんどなさそうで、もはや笑えてくる
追記: https://github.com/hashicorp/vault/graphs/contributors?from=...
こういう流れになっているのを見ると少し残念
Docker Swarm は Nomad よりシンプルで優れた解決策であり、Docker Engine 自体に組み込まれている
上場を強行し、最近の欠陥の多くは株価を上げようとする試みにまでさかのぼれる
初期の HashiCorp は素晴らしかった。オープンソースの守護者であり、新興の Red Hat や Canonical のように見えた。製品は画期的で、オープンソースエコシステムに大きな価値を加えていた。しかし Terraform が大きく成功したことで他の製品にも注目が集まり、会社が有名になりすぎた
上場以降は、どんな代償を払ってでも金とエンタープライズ顧客を得ようとする姿勢が明らかになった
Terraform 自体もバージョン 1 以降はメンテナンスモードのように感じる。Terraform provider は頻繁に壊れ、本番環境では provider をパッチバージョンまで固定すべきだと思う。ここ数年、小さなパッチ更新でも何度も問題があった。HashiCorp に事業上の価値がないオープンソース貢献は拒否し始めたことでも知られている。Terraform が v1 に達してからは、関心のほぼすべてが Terraform Cloud と Terraform Enterprise に向かったようだ。HashiConf ではすべての発表がこれらの製品を押し込む宣伝のように感じられ、今ではそれだけを気にしているように見える
Nomad はしばらく HashiCorp が大きく期待していた製品だったが、エンタープライズ市場の掌握を追求する過程で道端に捨てられたように思う。おそらく大半の企業が Kubernetes に全振りし、Nomad は動きの速いスタートアップにより有用だと分かった後のことだろう
Vault は、特にオープンソース領域では優れたツールだった。しかしここ数年で Vault のオープンソース版とライセンス版を大きく分け、オープンソース版は HashiCorp にとって負担のように感じられ始めた。昨年、会社で Vault への移行を真剣に検討し HashiCorp と話したとき、オープンソースのセルフホスト解決策を「本物の Vault」の評価版のように扱っていて、実際そう感じられた。設定中にぶつかったほぼすべての問題に対して、「エンタープライズ版なら大丈夫」というような答えだった
全体として、製品のオープンソース版をサポートするために必要な最小限の努力だけを残して後退し、しばらく前から完全にエンタープライズ中心の会社だった。稼がなければならないので非難ばかりはできないが、HashiCorp がなり得た姿の例として Red Hat と Canonical を思い浮かべずにはいられない
今は、子どもが潜在能力を発揮しきれなかったのを見守る親のような気分だ。ほとんどは欲や過剰な野心のせいに見える。HashiCorp を考えると「怒っているのではなく、ただ失望しているだけ」という言葉が浮かぶ。OpenTofu が Terraform の空白を埋めてくれることを期待している。Vault はもう過ぎ去り、大手クラウド事業者のシークレット管理ツールを使っている。はるかに気に入らないが、より安く、より複雑でない。Nomad の代わりに Kubernetes を使っているが、どうせ標準になったのだから問題ない。自分は大丈夫だろうが、HashiCorp には失望した
HashiCorp は独自の tap を維持している
https://github.com/hashicorp/homebrew-tap
https://www.hashicorp.com/blog/announcing-hashicorp-homebrew...
Linux のパッケージングエコシステムでも通常はこの方式だが、普通は依存関係のパッケージングも明示的に併せて扱う。おそらくそのため、ライセンス変更前から Vault などがディストリビューションのパッケージ集に入れなかった可能性が高い
HashiCorp 側のバリアントはリリースビルドをコピーしている: https://github.com/hashicorp/homebrew-tap/blob/master/Formul...
なぜそうなるのか? Homebrew は単なるパッケージマネージャーではないのか? 非自由ライセンスが HashiCorp のツールを含めることをなぜ制限すべきなのか分からない
それとも、自由ソフトウェアだけを含めるというポリシーがあるのだろうか
追記: 実際かなり厳格なガイドラインがある: https://docs.brew.sh/License-Guidelines
「Debian Free Software Guidelines のライセンスを使っているか、DFSG のパブリックドメインソフトウェア指針に従ってパブリックドメインとして公開された formula のみを homebrew/core に受け入れる」
[1]: https://docs.brew.sh/License-Guidelines
brewというソフトウェア、つまりパッケージマネージャーでもあるが、デフォルトで紐づく homebrew-core パッケージリポジトリでもある。このパッケージリポジトリは慎重に管理され、オープンソースライセンスのみを受け入れる好きなリポジトリを
brewで tap して使うのは自由だが、この PR は core リポジトリだけを扱っている基本的に Homebrew は homebrew/core と homebrew/casks の 2 つのリポジトリをサポート、つまり Homebrew の用語で tap している
Core は自由ソフトウェアのみを受け入れ、Homebrew 開発者が直接ビルドし、
/opt/homebrewなどにインストールされる。Casks は商用ソフトウェアやソースコードのないソフトウェアまで、ほぼ何でも受け入れる。こうしたソフトウェアはたいてい開発者側から直接ダウンロードされ、任意の場所、通常は/ApplicationsにインストールされるHomebrew が提供するサービスはありがたいが、Terraform は brew の外で管理したほうがよい例外の一つだと思う。今は tf-switch が最も人気のある選択肢だと見ている
Terraform は誤って状態ファイルを更新すると危険になり得るため、特定バージョンに固定しなければならないことが多い。もちろん 1.0 以前の頃に比べれば、Terraform の更新はずっと面倒ではなくなったのは確かだ
代わりに cask に入ればよい。実務上はあまり大きな影響はない
より大きな影響は、ここで見られるように Terraform に依存する他のツールにある: https://github.com/Homebrew/homebrew-core/pull/139538#pullre...
atlantis や infracost のようなツールも Terraform に依存しているため削除されつつある。そのため、そうした小さなツールの配布が少し難しくなるだろう。幸い、そのスレッドでは OpenTofu が安定したら依存関係を代替品に変更するか、あるいは完全に削除できるよう保留するとされている。だが実際の影響は、こうした周辺ツールにあると思う
Homebrew は本当に便利だが、奇妙な設計判断もある。なぜ新しい専用 Python をインストールするのか? そしてなぜその Python は最新版でなければならないのか?
ところが各 formula が Python バージョンを指定しなければならないため、実際には常に最新版になるわけでもなく、さまざまなバージョンを指定した formula が生まれる。なぜ他のパッケージマネージャーのようにシステム Pythonを使わないのか分からない。すでにインストール済みの Python が多すぎるのに、もう 1 つは要らない。特に何かを正しく動かすために pip パッケージをインストールしなければならないときは、さらに混乱する
こう使えばよい:
pythonX.Y -m pip install foo曖昧さをなくすにはエイリアスを使ってもよい。仕事のプロジェクトには pyenv と仮想環境を使うとよい
政治的な判断に見える。Homebrew にはもう更新を受け取らないパッケージがたくさんあるが、廃止はされていない
Homebrew の Cask ではない部分はオープンソースライセンスを要求しており、この場合は後者だ
一方で更新は存在するのに、Homebrew が法的に配布できないため、古く脆弱なバージョンをインストールすることになり得るなら、ユーザーに警告する価値がある
https://wiki.debian.org/DFSGLicenses#DFSG-compatible_License...