§PlayにおけるAkkaのライセンス変更への対応
2022年9月、Lightbend Inc.がAkkaのライセンスモデルをApache 2.0ライセンスからBusiness Source License (BSL) 1.1に変更したことをご存知かもしれません。
この変更はAkka 2.7とAkka HTTP 10.4から有効になりました。
- Lightbendによるアナウンス(タイトル:「Akkaのライセンスを変更する理由」)
- 2022年10月26日リリースのAkka 2.7.0とAkka HTTP 10.4.0
- InfoQの記事(タイトル:「Lightbend、Akkaのライセンスを変更し、オープンソースではなくなる」)
- Akkaの価格設定 特定の条件下ではライセンス料金が発生する場合があります。
- Akkaライセンスに関するFAQ
Play 2.xバージョンは内部的にAkkaを使用しており、Play Frameworkのドキュメントでは、AkkaクラスやAPIと対話する方法も提供されています。さらに、Nettyバックエンドに加えて、Akka HTTPサーバーバックエンドもPlay 2.xで使用できます。
多くの人が、PlayがBSLライセンスの新しいAkkaバージョンに切り替えた場合、自社がライセンス料金を支払う必要があるかどうかについて懸念していました。これらの懸念に対応するため、LightbendはPlay Framework向けの“追加使用許諾”を導入しました。これにより、Play 2.x内でAkkaを使用することが許可され、Play Frameworkユーザーは本番環境を含むソースコードで特定のAkka機能を利用できます。ただし、Play Frameworkユーザーとプレミアムスポンサーの両方から、これらの例外が狭すぎるという懸念が表明されました。つまり、公式のPlay Frameworkドキュメントに記載されていない方法でPlay 2.xアプリケーションでAkkaを使用すると、既にライセンスの取得が必要になる可能性があります。そのような使用事例が例外の範囲外に該当するのは非常に簡単です。たとえば、(WebSocketを目的としない)`ActorSystem`を注入するだけでも、新しいBSLライセンスが適用され、Akkaの完全なライセンスモデルが適用されることになります。
私たちの最優先事項は、Play Frameworkユーザーが知らず知らずのうちにBSLライセンススキームの対象とならないようにすること、そしてPlay Frameworkが非オープンソースライブラリに依存しないようにすることです。そのため、Play 2.9以降はデフォルトでAkka 2.6とAkka HTTP 10.2を引き続き搭載しています。BSLを使用するAkkaバージョンにアップグレードしたい場合は、ユーザー自身の判断によるものであり、ユーザーは新しいライセンスモデルを完全に認識した上で選択することになります。Play ScalaまたはPlay Javaのアップデートガイドでは、この移行方法について説明しています。
ご注意ください:Akka 2.6/Akka HTTP 10.2は2023年9月にサポート終了(EOL)に達しました。
§Apache PekkoとPlay 3.0の紹介
2023年10月、Play 3.0をリリースしました。このリリースでは、AkkaとAkka HTTPをPekkoとPekko HTTPに置き換えました。Apache Pekkoは、Akka 2.6とAkka HTTP 10.2のコミュニティフォークであり、熱心で意欲的な個人によって開発されています。その中には、以前Lightbend Akkaチームに所属していた人もいます。Pekkoは現在も積極的に開発されています。たとえば、Pekko HTTPは既にScala 3に移植されており、これは現在のところBSLライセンスのAkka HTTPバージョン10.4以降でのみ利用可能です。また、Pekkoは、Akka 2.6とAkka HTTP 10.2では既に修正されていないバグやセキュリティの脆弱性を修正しています。
Play 2.9とPlay 3.0は、内部で使用しているフレームワークが異なる点を除けば、同じ機能を提供し、並行してメンテナンスされ、同じ拡張機能とバグ修正の恩恵を受けています。
§選択肢の概要
- Play 2.9を使用する場合:Play ScalaまたはPlay Javaのアップデートガイドを使用して、BSLライセンスの新しいAkkaとAkka HTTPリリースにアップグレードします。
- Play 3.0への移行:AkkaとAkka HTTPをPekkoとPekko HTTPに置き換えます。
- この移行ではアプリケーションの書き直しは必要ありません。`akka.*`のインポートと設定キーを置き換えるだけです。
- Play 2.9を使用する場合の代替手段:Playに同梱されているデフォルトのAkkaとAkka HTTPバージョンを維持し、以下のいずれかを選択します。
- Nettyサーバーバックエンドに切り替える(Play 2.9はバックグラウンドでAkka 2.6を引き続き使用することに注意してください)。
- セキュリティパッチが提供されなくなるため、セキュリティ問題が発生する可能性があることを認識した上で、それらを使い続ける。
§サポート終了(EOL)日
- Play 2.8より前のすべてのバージョンはサポートが終了しており、今後更新されません。
- Play 2.8は2024年5月31日にサポートが終了します。それまでの間、Play 2.8はセキュリティアップグレードのみを受け取ります。以下の注目すべきライブラリは自動的にアップグレードされなくなります(ただし、必要に応じて手動でアップグレードできます)。
- Play 3.0とPlay 2.9:次の2.xまたは3.xバージョンのリリース後12ヶ月間はセキュリティアップデートが提供されます。ただし、2024年9月にPlay 2.xラインのメンテナンス期間を評価します。その前に、新しい機能とアップグレードされた依存関係を含む新しい主要なPlay 2.xバージョン(2.10)を少なくとも1つリリースする予定です。いずれかの時点で、2.xラインの継続を決定しない場合は、セキュリティアップデートを引き続き受けられるように、最後の2.xバージョンをさらに12ヶ月間維持します。
Play 2.9(BSLライセンスのAkkaとAkka HTTPを使用)の使用を検討されている場合は、Playコアチームのリソースが限られていることをお知らせします。2.xラインを存続させるために、プレミアムスポンサーになることを検討してください。そうでなければ、2.xラインへの関心が低下した場合、いずれかの時点でそのラインを廃止する必要があるかもしれません。
次へ:Playリリース
このドキュメントにエラーを発見しましたか?このページのソースコードはこちらにあります。ドキュメントガイドラインをお読みになった後、プルリクエストを自由に貢献してください。ご質問やアドバイスがありましたら、コミュニティフォーラムでコミュニティと対話してください。