Terraform のライセンス変更についての考察

Terraform (HashiCorp 製品) のライセンス変更の報を受けて考えたことを綴りました。  
各種ライセンスの一次情報へのリンクも付けてあるので、OSS に馴染みがない人にも参考になる情報もあるのではないかと思っています (お役に立てるといいな) 。

# 制限事項・補足的事項

- この投稿内容は、2023.08.17 に社内向けに発表したものを公開可能な表現等に修正したものになります。
  - 元資料は Marp スライドだったんですが、Qiita のスライドモードで適切に調整する手間を惜しんだため()諦めました。
- 投稿内容は 2023.08.15 頃までに筆者が確認した内容を元に記述しています。
- 記載内容には正確を期すように努めていますが、更新があったなどにより記載内容とギャップが生じていた場合は、HashiCorp 社の情報を正とします。

# これは何？

Terraform はこれまで **OSS (MPL)** で提供されてきた
→ これを **BSL** に変更するという発表が、2023.08.10 にあった。

[HashiCorp 社からの発表(HashiCorp-adopts-the-Business-Source-License-for-future-release-of-its-products)](https://www.globenewswire.com/news-release/2023/08/10/2723189/0/en/HashiCorp-adopts-the-Business-Source-License-for-future-releases-of-its-products.html)

# 考えたこと

![my-slack.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3118632/3b475dcb-4adb-0cbc-ad5b-d40b3a63514b.png)

# 前提知識の導入

## HashiCorp

- Mitchel Hashimoto 率いるオープンソース企業  
  Terraform の開発元として有名
- https://www.hashicorp.co.jp/

## IaC

- Infrastructure as Code
- Terraform, Bicep, AWS CDK, Ansible..., etc  
  実現するツールはいっぱいあります

## [OSS(Open Source Software)](https://opensource.org/osd/)

- OSI(Open Source Initiative) が定義する概念
- 単にソースコードが公開されているだけではオープンソースの要件を満たさない

## [MPL(Mozilla Public License)](https://www.mozilla.org/en-US/MPL/2.0/)

- [FSF(Free Software Foundation)](https://www.fsf.org/about/) と OSI の両方から承認を受けているライセンス
- MPL で保護されたコードは永続的に MPL でライセンスされる

## [MIT License](https://github.com/opensource-jp/licenses/blob/main/MIT/MIT.md)

- GPL などと異なり非常に制限の緩いライセンスの一つ
- X11 License/X License とも
- (リンク先は、わかりやすさのために原典ではなく、有志が翻訳してくれたものにしてあります)

## [BSL(Business Source License)](https://mariadb.com/bsl11/)

- クラウドプロバイダから OSS 企業とコミュニティの権益を守る過程で生まれた、MariaDB が提唱するライセンス
- 一定期間 (4 年など) を経過すると指定したライセンスに変更される特徴を持つ

# [ライセンス FAQ](https://www.hashicorp.com/license-faq) の要旨

ここからは、導入した前提知識も踏まえた上で、HashiCorp が発表した[ライセンス FAQ](https://www.hashicorp.com/license-faq) の内容についてざくっとまとめていきます。

## 次の製品についてライセンスを BSL 1.1 に変更

| 製品          | 適用 ver   | 現行    |     | 製品     | 適用 ver  | 現行    |
| ------------- | ---------- | ------- | --- | -------- | --------- | ------- |
| **Terraform** | > v1.5.5   | MPL 2.0 |     | Nomad    | > v1.6.1  | MPL 2.0 |
| Packer        | > v1.9.2   | MPL 2.0 |     | Waypoint | > v0.11.4 | MPL 2.0 |
| Vault         | > v1.14.1  | MPL 2.0 |     | Boundary | > v0.13.1 | MPL 2.0 |
| Consul        | > v11.16.1 | MPL 2.0 |     | Vagrant  | > v2.3.7  | MIT     |

## ライセンスの変更は古いバージョンに遡って適用しない

- 該当する製品等は引き続き無期限に使用できる  
  ex) Terraform <= v1.5.5 は MPL 2.0 のまま

## OSS 製品へのセキュリティ修正のバックポートは、MPL 2.0 に基づいて 2023 年 12 月 31 日まで提供

- 期限内であれば、特に OSS 版を使うことに対する障害はなさそう
  - 当然バージョンアップしていく必要があるのでいつかは BSL 版を使わざるを得ない時が来る
  - tfenv 等を使ってプロジェクトで使用するバージョンをコントロールすることは可能
:::note warn
> Security fixes will be backported under MPL 2.0 through December 31, 2023.

Vagrant は MIT License で提供されているので、Vagrant についても MPL 2.0 に基づいてバックポートするという主張は、よくわからない
:::

## BSL で基準とする**変更ライセンス**は MPL 2.0 とする

- 変更ライセンス＝ BSL が移行する先のライセンスのこと

## HashiCorp の BSL 1.1 では**指定された変更日**はライセンス発行の 4 年後

- 4 年後というのは BSL のデフォルトと同値
- BSL に違反するかどうか個別に確認したい場合は [ライセンス FAQ](https://www.hashicorp.com/license-faq) に記載されたメールアドレス まで連絡すると個別に対応してくれる

## BSL でライセンスされた製品はコミュニティエディションと呼ぶ

- BSL でもソースコードは公開・誰でも利用可だが、OSI の定める OSS の定義に合わないため
- 参考）
  - [Open Source Initiative/The Open Source Definition](https://opensource.org/osd/)
  - [JIPDEC/オープンソース（Open Source）とは](https://www.jipdec.or.jp/library/word/csm0kn0000000nea.html)

## HashiCorp 製品における使用制限

- 本番以外の使用はすべて許可される
- HashiCorp 製品またはサービスと競合する製品にソフトウェアをホスティングまたは埋め込むことを除き、すべての本番使用が許可される

## HashiCorp に対して競争力のある製品を提供している組織が変更の影響を受ける

- ライセンスの制限以上の許諾が必要な場合は個別交渉できる
- 個人、OSS 開発者や非本番環境への製品組込みは影響を受けない
- E/U、統合パートナー、商用顧客は影響を受けない

## 競合製品(競争力のある製品)とは次のものに該当するもの

- HashiCorp の商用製品またはサービスの機能と重要な重複がある、組織外のユーザーまたは顧客に提供される製品またはサービス
- ex) HashiCorp サービスをホスティングサービスとして提供する行為
- ex) HashiCorp 製品を組込んだ、HashiCorp 製品と競合するソリューション

# 予想される or 可能性のある影響など

- 筆者の所属する組織では IaC ツールとしての活用が主ではないかと考えられるため、**基本的に影響はない**
  - 筆者の所属する組織が HashiCorp 製品の SaaS を作る、なんていう話になると影響あり
- とは言え、HashiCorp が**ライセンス変更をした**ことは事実
- IaC ツールの OSS に関するトレンドに関しては注視していく必要がある
- Azure で既存リソースを Terraform にエクスポートする際に使用できる aztfexport というコマンドがあり、これに影響する可能性を考えたが [aztfexport は MPL 2.0 でライセンスされている](https://github.com/Azure/aztfexport/blob/main/LICENSE) ので影響なさそう
  - aztfexport 以外のものでも、そのソフトウェアのライセンスや開発形態、機能によっては影響を受けるものもありそう

# これからの展望についての考察

## そもそも今回の変更の理由は何だったのか

> HashiCorp は機能豊富な製品をコミュニティに無料で提供しており、その開発は当社と提携している商用顧客によって可能になっています。このライセンスに移行することで、HashiCorp はソースコードの商用利用をより適切に管理できるようになり、その多くが貢献者である当社の活発な専門家コミュニティに対して、彼らの仕事を妨げない方法で投資を続けることができます。

- OSS を維持していくためには投資できるだけの力が必要だが、コミュニティの力も同様に重要で必要
- OSS では解決できないがクローズドソースでも解決できない →BSL

## 「クラウドプロバイダーが OSS にタダ乗り → コミュニティと OSS 開発者に利益が還元されない」という主張に沿った対応は過去にも見られた

| OSS 開発元 |   移行後    |    移行前     | 参考                                                                                                         |
| :--------: | :---------: | :-----------: | :----------------------------------------------------------------------------------------------------------- |
|  MongoDB   |    SSPL     | GNU AGPL v3.0 | [MongoDB, SSPL](https://www.mongodb.com/blog/post/mongodb-now-released-under-the-server-side-public-license) |
|   Redis    | RSALv2/SSPL | 3-Clause BSD  | [Redis,Aug 22,2018](https://redis.com/blog/redis-license-bsd-will-remain-bsd/)                               |
|   Kafka    |     CCL     |  Apache 2.0   | [Confluent Platform](https://www.confluent.io/blog/license-changes-confluent-platform/)                      |

### 各種ライセンスの参考情報

- [SSPL(Server Side Public License)](https://www.mongodb.com/licensing/server-side-public-license)
- [RSAL(Redis Source Available License)](https://redis.com/legal/rsalv2-agreement/)
- [GNU AGPL(Affero General Public License)](https://www.gnu.org/licenses/agpl-3.0.ja.html)
- [CCL(Confluent Comunity License)](https://www.confluent.io/ja-jp/confluent-community-license/)

## これからの展開（筆者の主観的な見立て）

- Terraform はこれまでどおり進化していくと思われる
  - BSL 下においても、個人などの影響を受けないユーザが大半であり実質的な違いがない
  - BSL への変更を受け入れ、ライセンシングの協議を始める企業も出てきた
- ただし、次の事実を考えると新しい OSS が出てくることも予想される
  - 変更後のライセンスが完全なオープンソースライセンスではない
  - 開発元企業が企業の論理でライセンスを変更してくる  
    ※一応、オープンソースの哲学に同意するという話は前提としてある
- たとえば [Pulumi](https://www.pulumi.com/) という OSS が既に存在する
  - 冒頭の画像で示したように、汎用プログラミング言語で書けるという点は非常に魅力的で、個人的に気になっている

# OSS を活用して事業を営んでいる企業のエンジニアとして思うこと（ポエム）

- OSS は収益を上げるのが難しいというのはよく聞くし見かける
- タダ乗りする企業は E[S]G の観点からよくない
  - ESG 経営というのは筆者が所属する組織が掲げるものでもあるから、社会 (OSS 開発コミュニティも含まれるはず) への責任を果たすというのは適切な姿勢
- できる限りコミュニティに貢献しつつその恩恵に与ることで技術が発展する
  - ただし、現実は厳しい...
- 自分もまだ具体的な貢献はできていないので、PR の一つでも送ってみたいとは思う
  - Terraform に限らず、普段お世話になっているソフトウェアコミュニティに貢献できたら楽しい