eclipse-ditto / ditto

Eclipse Ditto™: Digital Twin framework of Eclipse IoT - main repository
https://eclipse.dev/ditto/
Eclipse Public License 2.0
666 stars 218 forks source link

Migrate Ditto to use Apache Pekko instead of Akka after Akka's change to BSL license #1477

Closed jekkel closed 11 months ago

jekkel commented 1 year ago

I just got notified about akka changing the license to "Business Source License (BSL) v1.1" which is probably incompatible with Eclipse Public License 2.0 in general. The BSL license "automatically" reverts back to Apache 2 (individually for each released work) after 3 years.

To me it seems this blocks any updates to akka dependencies for 3 years because Ditto cannot be released under EPL while linking to BSL licensed binaries.

There's a paragraph about OSS projects using Akka:

If you are running an OSS project using Akka, please contact us at [akka-license@lightbend.com](mailto:akka-license@lightbend.com?subject=Akka License) and we will do our best to continue to support your project.

Reference: https://www.lightbend.com/blog/why-we-are-changing-the-license-for-akka Respective change in akka repository: https://github.com/akka/akka/pull/31561

thjaeckle commented 1 year ago

Hi @jekkel

Yes, we also read the "news" today .. very sad to see that decision, even if I can somehow understand it. Investing so many resources as Lightbend did over the years in Akka and (probably) getting very little "back" from most of the commercial users .. that's one of the fundamental things which are broken about FOSS .. :/

You are right, the Eclipse Ditto project will probably be stuck on Akka 2.6.20 for the time being. Maybe a community driven fork of Akka with Apache-2.0 license will be done, let's see. The good news is that Akka 2.6 is very mature and stable - in the past we almost never hat the "urge" to update to a newer Akka version.

However - there could some day of course be a security issue which would require a patch.

Do you mean that the Eclipse Ditto project should apply for such an "Additional Use Grant" for being allowed to use latest Akka artifacts with BSL 1.1? I currently can't imagine how this can work in practice, to be honest, as the new license is no OpenSource license.

Users of Ditto do not get in touch with Akka at all - and the Eclipse Ditto project "gave back" to the OSS community by making it available as OpenSource and not keeping it behind closed doors. However - Ditto is not a "hobby project" and mainly used in commercial setups, so I wonder if commercial Ditto users could use Akka underneath "for free".

jekkel commented 1 year ago

However - Ditto is not a "hobby project" and mainly used in commercial setups, so I wonder if commercial Ditto users could use Akka underneath "for free".

I agree. But the same is likely to be true for users of the Play Framework which is granted commercial use.

For the sake of completeness: There is this other FOSS project residing under the Eclipse umbrella called Vert.x which is somewhat similar to several aspects of Akka:

AFAIK Eclipse Hono is already using it under the hood through Quarkus.

thjaeckle commented 1 year ago

There is this other FOSS project residing under the Eclipse umbrella called Vert.x which is somewhat similar to several aspects of Akka

I assume a rewrite would take dozens of person years of time. And I am quite sure that not everything which Akka (e.g. in clustering/sharding/ddata/persistence/streams) offers can be replaced with just Vert.x.

thjaeckle commented 1 year ago

I contacted the Lightbend team about the mentioned "Additional Use Grant". Will keep you posted about the response.

thjaeckle commented 1 year ago

We did not yet receive an answer from Lightbend regarding the "Additional Use Grant". I however fear that even with that grant it is very difficult to include BSL licensed artifacts in an OpenSource project.

For the time being we would like to state the following:

thjaeckle commented 1 year ago

In the meantime there is a proposal for a fork of the Akka project under the Apache Foundation: https://cwiki.apache.org/confluence/display/INCUBATOR/PekkoProposal

If this project is accepted and does its first release, I suggest to move the Ditto codebase from Akka to Pekko.

thjaeckle commented 1 year ago

Pekko codebase is incubated here: https://github.com/apache/incubator-pekko

thjaeckle commented 1 year ago

One dependency remains which is not yet covered by Apache Pekko: akka-persistence-mongo I opened an issue to ask whether migration or a fork to Pekko is planned there: https://github.com/scullxbones/akka-persistence-mongo/issues/557