§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 授權」
- Akka 2.7.0 和 Akka HTTP 10.4.0,於 2022 年 10 月 26 日發布
- InfoQ 文章標題為「Lightbend 變更 Akka 授權,不再是開源」
- Akka 定價在特定條件下可能適用授權費用
- Akka 授權常見問題
Play 版本 2.x 在幕後使用 Akka,並提供架構使用者與 Play Framework 文件中的 Akka 類別和 API 互動的方法。此外,除了 Netty 後端外,Play 2.x 中也提供 Akka HTTP 伺服器後端。
許多人擔心如果 Play 切換到採用 BSL 授權的新 Akka 版本,他們的公司是否必須支付授權費用。為了解決這些問題,Lightbend 為 Play Framework 導入了 “其他使用授權”。這允許在 Play 2.x 中使用 Akka,並讓 Play Framework 使用者可以在其原始程式碼中使用某些 Akka 功能,包括生產環境,而無需受到授權限制。然而,Play Framework 使用者和高級贊助商都表示,這些例外情況太過狹隘。這表示如果您在 Play 2.x 應用程式中以官方 Play Framework 文件中未記載的方式使用 Akka,您可能已經需要取得授權。此類使用案例很容易超出該例外範圍。例如,注入一個 ActorSystem
(不適用於 WebSockets)將觸發新的 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 版本,並選擇
- 從 Akka HTTP 切換到 Netty Server 後端(請注意,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),其中包含新功能和升級的依賴項。在任何時候,如果我們決定不繼續 2.x 系列,我們將維護最後一個 2.x 版本,再延長 12 個月,以確保它繼續收到安全性更新。
如果您考慮使用 Play 2.9(搭配 BSL 授權的 Akka 和 Akka HTTP),我們想告知您 Play 核心團隊的資源有限。您可能想考慮成為高級贊助商,以協助維持 2.x 系列的運作。否則,如果對 2.x 系列的興趣下降,我們可能需要在某個時間點停止支援。
下一步:Play 版本
在此文件發現錯誤?此頁面的原始程式碼可在此處找到 here。在閱讀 文件指南 後,請隨時提交協力廠商請求。有問題或建議要分享嗎?前往 我們的社群論壇 與社群展開對話。