Hello whiskers,

It's been a while! I'm reaching out today about migrating Openwhisk off of
Akka to Apache Pekko. Following the license change of Akka back in 2022,
the Apache community created a fork to maintain the open source nature of
the Akak framework within the Apache organization. Three years later, the
project is quite successful and stable such that I feel we are ready to
make the cutover. As far as I know, all other Apache projects that were
taking dependency on Akka have already made the switch.

Why do this now or at all?

1. We have been stuck on Akka 2.6 for over 3 years. The core framework of
the project dictates what other versions of transitive dependencies we can
run. Without being on a version of Akka / Pekko that is actively
maintained, we cannot properly patch dependencies to handle critical bug
and security fixes.
2. Many of the dependencies we rely on are severely outdated due to the
reliance on the last Apache licensed version of Akka. Taking this
opportunity to cutover to Pekko allows us to do major revisions on
dependencies that are long overdue.
3. By having the project in this healthy state again, it should motivate
people to make small updates as needed surrounding tooling and running the
project that would be an insurmountable change in the current state.

I have a PR <https://github.com/apache/openwhisk/pull/5551> open that is
near ready for review, which is why I'm sending out this email now to get
attention as soon as possible. I just have three failing unit tests
remaining to resolve. I have already tested the change in running clusters
and all looks good. The PR may look daunting at +400 files, but I promise
after doing a self review this morning only about ~25 files require any
look, mainly the dependency and configuration files. I estimate it will
take approximately twenty minutes of your time to review. The rest of the
files are just import name changes. The PR is clean and only updating
dependencies as necessary. The cutover to new clusters should be quite
transparent apart from the changes under the hood from where we were on
Akka to the latest version of Pekko, which in my wide experience with Akka
should be trivial from where we were on 2.6.

*Here is the important part. Merging this in will be a breaking change so
far as it requires you to start new Openwhisk clusters through blue / green
deployment. Rolling upgrade of existing clusters will not work. While
Apache Pekko supports rolling restart cutovers, our current state does not
leverage this because we are on Akka GRPC 1.x and Akka Kryo serialization
w/ Kryo4. Pekko is forked off of Akka GRPC 2.x and Akka Kryo serialization
w/ Kryo5. Both of these major upgrades would require new clusters even if
remaining on Akka. Now is a good time to get them out of the way so we do
not have to address this again indefinitely since we'll be on the latest
Pekko GRPC major and *Kryo5* serialization is latest.*

Now on how do we integrate this into the project. Either we merge my PR
directly to master or we open a v3 branch. With the current velocity of the
project such that for a couple years now the only updates have been
dependency and build updates, my opinion is we just go straight to master
especially with the bug and security fixes included. Additionally, we only
ever had one official release of 2.x which was also a breaking change in
similar capacity. Besides getting eyes on the PR, I'd appreciate responses
on if people are okay with merging the PR directly to master and changing
the version to a 3.0.0-SNAPSHOT?

Lastly, I would like to take this opportunity to discuss with the community
our status and our use of the project for full transparency. We have been
working for a couple of years on our next generation platform and strategy
for internal usage of FaaS and will be winding down our usage of the
project by 2027. When it is all said and done, this project will have
served us well for nearly a decade. I would like to take a moment to
applaud @style95 and his whole team for what they accomplished with the
scheduler. Without this work, we would not have had the stability to
allocate resources to work on the platform that would come next for us for
the last two years.

For me, I will still be around personally to give feedback on any project
discussion or help keep things healthy with build and dependency updates
after 2026. Following this change, it should be trivial for us to keep the
Apache project stable for a very long time for the open source and research
community to continue on or expand Openwhisk.

Thanks,
Brendan Doyle

Brendan Doyle
Staff Software Engineer, Async Platform



 

Reply via email to