🫘

OpenTofuに関する雑感

2023/09/22に公開

2023年12月4日追記。

この記事は2023年の9月下旬に書かれた記事です。

わりと反射的に書いてしまった内容も含んでるので(CNCFのリリースにもコメントを寄越していたGruntworkの関わりを見逃してたのは痛恨のミス。色んな思いがあるのはそれはそう)、本件について語るにもっと最適な方の説明を読んでいただければ幸いです。

https://qiita.com/minamijoyo/items/16d1b5b15a60d17e350a


先月行われたHashiCorp社によるソフトウェアライセンスの変更はTerraformコミュニティに衝撃を与えたことは記憶に新しい。具体的には、Terraformのライセンスが、オープンソース/フリーソフトウェアを前提としたMPL2.0から、商用利用に制限をかけられたBSLv1.1に変更された。これにより、Terraformは伝統的な意味でのオープンソースソフトウェアではなくなってしまい、ソースコードが単に利用できるソフトウェアに変わってしまったと評する人もいる。[1]

伝統的な意味でのオープンソースソフトウェアとは、単にソースコードが公開されているだけではない。そのソースコードに対してユーザーの要件に応じて自由に使用、変更、再配布して、初めてオープンソースソフトウェアなのだ。商用利用という制限により、Terraformはオープンソースソフトウェアの概念から離れたプロダクトになってしまった。

これに対するTerraformの一部コミュニティの行動は、さらに波紋を広げることとなる。OpenTofuプロジェクトというTerraformのフォークプロジェクトの立ち上げ、同時にLinuxFoundationの管理下に入ることを選択したのだ。

Linux Foundation Launches OpenTofu: A New Open Source Alternative to Terraformで、OpenTofu創設メンバーの一人、Yevgeniy (Jim) Brikman 氏は次のようなコメントを寄せた。

"That is why we are so happy that OpenTofu is now a part of the Linux Foundation: having this project in the hands of a foundation, rather than a single company, means OpenTofu will be community-driven and truly open source—always."

「OpenTofuがLinux Foundationの一部になったことをとても嬉しく思っています。このプロジェクトが一企業ではなく、財団の手に委ねられるということは、OpenTofuがコミュニティ主導で、真にオープンソースであり続けることを意味します。」

こうしてTerraformは新たなるフォークプロジェクトのもと、オープンソースとしてそのマインドと共に守られたのでした...

なわけあるかい。

いつだってプレスリリースは建前だ。本音は別のところにある。それを紐解くカギがOpenTofuのGitHubのContributorsにある。左から所属先を見てみよう。

env0のエンジニア、env0のエンジニア、Spaceliftのエンジニア、env0のエンジニア...

env0やSpaceliftは上記であげたLinux Foundationのアナウンスで、今後5年間にわたりフルタイム開発者を雇用することを宣言した企業のうちの一つだ。私にはあまりなじみがない、これらはどういった企業だろう?

env0、Spacelist、これらの企業はいずれもIaCのマネージドサービスを提供している。多種多様なIaCの実行基盤をワークフローという形で束ねて提供するサービスを展開してる。

ここにenv0のローンチ画面がある。

がっつり、Terraformのアイコンがある。だがしかし、HashiCorp社の今回の変更により、今後、env0からはTerraformのアイコンが消える可能性は高い。その理由はBSLライセンスで定義された competitive offerings の条項により、HashiCorp社のTerraform Cloudサービスの 競合製品 として排除されるからだ。

HashiCorp updates licensing FAQ based on community questionsという公式の説明では次の通り、説明している。

Q: What is a “competitive offering” under the HashiCorp BSL license?

HashiCorp BSLライセンスにおける「競合製品」とは何ですか?

A: A “competitive offering” is a product that is sold to third parties, including through paid support arrangements, that significantly overlaps the capabilities of a HashiCorp commercial product. For example, this definition would include hosting or embedding Terraform as part of a solution that is sold competitively against our commercial versions of Terraform. By contrast, products that are not sold or supported on a paid basis are always allowed under the HashiCorp BSL license because they are not considered competitive.

A: 「競合製品」とは、HashiCorpの商用製品の機能と大幅に重複する、第三者に販売される製品を指します。これには有償サポート契約も含まれます。例えば、この定義には、当社の商用版Terraformと競合して販売されるソリューションの一部としてTerraformをホスティングまたは組み込むことが含まれます。対照的に、有償の基盤(paid basis / 要はマネージドサービス)で販売またはサポートされていない製品は、競合製品とはみなされないため、HashiCorp BSLライセンスでは常に許可されています。

かくして、ライセンスの変更により、env0やSpacelift等、Terraform Cloudのライバルになりえたマネージドサービス企業はことごとくTerraformを使えなくなったわけだ。そりゃ困るよねと。

そこでOpenTofuを発足させたわけだ。要はビジネスの都合である。

今回の騒動は、純粋にTerraformに対してオープンソースソフトウェアの精神からコントリビュートしてた開発者もないがしろにしたことは事実だ。だが、正直OpenTofuの発足メンバーがその精神を声高に訴えるのは正直違うよねっていうのが所感である。


Terraformのライセンス変更とOpenTofuの立ち上がりにより、今後Terraformって使っていいの?という疑問をいだいた開発者は少なくないだろう。先ほども触れたHashiCorp社のFAQで、IaC構築ツールとしてTerraformを使っているユーザーには影響がないことが丁寧に説明されているので一読する価値はある。

Internal use of HashiCorp products

HashiCorp製品の社内使用について

One of the most common questions has been from users in the community asking if they can continue to use the products for internal purposes. The answer is yes, and we’ve added a specific FAQ item to explicitly answer this. The BSL license imposes no restrictions on internal use of our tooling. For example, running HashiCorp Terraform in a CI/CD tool for provisioning internal infrastructure or hosting a HashiCorp Vault instance for your internal organization is permitted.

コミュニティのユーザーからの最も一般的な質問の一つは、製品を社内目的で引き続き使用できるかどうかです。答えは「はい」で、これに明確に答えるための特定のFAQ項目を追加しました。BSLライセンスは、私たちのツールの社内使用に関して制限を課しません。たとえば、HashiCorp TerraformをCI/CDツールで実行して社内のインフラをプロビジョニングしたり、社内の組織のためにHashiCorp Vaultインスタンスをホスティングすることは許可されています。

Question: Can I host the HashiCorp products as a service internal to my organization?

HashiCorp製品を私の組織内でサービスとしてホストすることはできますか?

Answer: Yes. The terms of the BSL allow for all non-production and production usage, except for providing competitive offerings to third parties that embed or host our software. Hosting the products for your internal use of your organization is permitted. HashiCorp considers an organization as including all of its affiliates. This means one division can host a HashiCorp product for use by another internal division.

はい。BSLの条件は、私たちのソフトウェアを埋め込んだりホストしたりする第三者に対する競合する提供を除いて、非プロダクションおよびプロダクションの使用すべてを許可しています。製品を組織の社内使用のためにホスティングすることは許可されています。HashiCorpは、組織がそのすべての関連会社を含むものと考えています。これは、ある部門が別の内部部門の使用のためにHashiCorp製品をホストできることを意味します。

Terraformのメリットは多々あるが、そのうちの一つがインフラリソースの調達の自動化を可能にすることだ。

よくあるユースケースとしては社内の開発基盤として一時的なリソース構築に利用するパターンが挙げられる。

たとえば、営業の方がプロダクトのデモ用に使いたいといった場合、社内サービスを通してボタンをクリックした裏で自動的にIaCのビルドパイプラインが動き、クレデンシャル情報やURL情報と一緒にリソースが一時的に払い出される..こういうシステムが使われているのを実際に見たことがある。

そういう使い方なら今回のライセンス変更は何ら問題ないわけだ。

個人的に気になるのが、プロダクトのインストーラー等で組み込んでいた場合、排除されないかということ。たとえば、OpenShiftというRed Hatが開発しているオンプレミス環境向けのKubernetesソリューションのインストーラーではTerraformががっつり使われているが、このケースってどうなんだろう。AnsibleTowerがTerraformをサポートしたわけではないし、微妙なところだ。これは完全に私見なので中の人の公式見解を待ちたいところである。


OpenTofuがこれから成功するかは、周辺のエコシステムがどれくらいサポートされているかも大きな要因だ。Terraformは単体のツールとして動くわけではなく、providerによってエンハンスされることで初めてAWSなどのクラウドサービスでリソースの構築が可能になる。たとえば、awsのproviderは誰がサポートしているか...HashiCorp社の中の人だ。Terraform AWS providerは9/23時点でまだMPL-2.0 licenseではあるけれど、正直今後の動向はわからない。こちらも気になるところだ。

脚注
  1. https://thenewstack.io/hashicorp-abandons-open-source-for-business-source-license/ ↩︎

Discussion