What to do with your End Of Life Akka?
In September 2022 Lightbend surprised the Scala community by announcing the Akka license change for all future releases from Apache 2.0 to "source available" Business Source License (BSL) v1.1. In practice that means that businesses who would like to use newer versions and get over US $25 million in annual revenue have to buy a Lightbend commercial subscription.
Akka End Of Life
The last Apache-licensed Akka is the 2.6.x branch. The change was announced after the 2.6.20 release, however later, in June 2023 Akka 2.6.x got a critical fix, and the version 2.6.21 was released. Since October 19, 2023 Akka 2.6.x is officially the end of its life and will no longer receive critical security updates.
It is also worth remembering that Akka 2.6.x can be used with Scala 3, thanks to CrossVersion.for3Use2_13
, however full native Scala 3 support is not available. Akka 2.6.x officially supports JDK 11, however there are workarounds to make it fully work on JDK 17.
If you are still using Akka 2.6.x it is time to consider what to do next!
Lightbend commercial license
One of the options is to continue using Lightbend releases, and if the revenue passes the $25 million, go for a commercial license. Such an approach has its pros and cons. For sure, nobody likes to pay for licenses. However, there are a few advantages as well. New Akka releases are developed under the SOC 2 standard. They bring full JDK 17 and Scala 3.3 support but also new features, such as Akka Edge or Akka Distributed Cluster with Projections over GRPC, allowing for brokerless communication between Microservers. If you need 24/7 support, this may be also a way to go.
Lightbend closed FY24 with record growth, adding 50 new customers.
Apache Pekko
Apache Pekko is a community-driven fork of Akka 2.6.x. It is incubating under the Apache Foundation with Apache license 2.0. Pekko 1.0 brings support for Scala 3 LTS, JDK 17 (although, according to GitHub, it was already tested with JDK 21). The planned 1.0.3 release will add an option to perform rolling upgrades from Akka to Pekko. It is worth noting that projects such as Alpakka were also migrated into the Pekko Connectors module. Some smaller open source projects declare compatibility with Akka 2.6.x and Pekko support or plan to introduce it. It is rather uncommon to see their support for newer commercial Akka releases.
For more information about Pekko and its modules, look at the project documentation. And its GitHub repository with the source code.
Migrate away?
When the major library changes its license, it is also a good time to stop and think about the project's future. Is Akka still the way to go? How did it work for your project during previous years? Have you encountered any issues? Some decide to migrate to other technologies, some even decide to rewrite to a different programming languages. It also depends on what specific Akka libraries were used, simple Akka HTTP is for sure easier to replace than the full-blown solution based on Akka Cluster with Akka Persistence.
Conclusions
Deciding what to do with EOL Akka 2.6.x in your project is not easy. It depends on a lot of factors, including your team skills, hiring plans, and past experiences. If you are using Play Framework, those topics may concern you as well.
At SoftwareMill, we have worked with various Akka and Play based systems. We are currently helping our clients determine the best steps for their projects. For some, the best option is to go for Pekko, for others, it may be the Lightbend subscription, and yet, for others to migrate to a different, simpler tech stack. Our intention is to provide the best recommendation for the given customer situation.
If you need help with your Akka or Play based project, contact us
Take a look at our Akka-related blog posts:
- When do you need Akka Cluster?
- 6 reasons why not to use Akka Cluster for interservice communication in a microservice architecture
- Akka Cluster split brain failures — are you ready for it?
- Migrating from Akka HTTP to tapir
- and others
Reviewed by: Adam Warski, Michał Ostruszka