Akka.NET 2017 Roadmap Update
.NET Standard, Akka.Persistence RTM, and More
2017-05-12 08:09:12 -0800
Fresh off the release of Akka.NET 1.2 last month, we've been hard at work moving onto the next set of changes and developments for Akka.NET. So let's get right into it.
Current State of Akka.NET
First, our previous Akka.NET roadmap from 2016. We accomplished most of what we wanted to achieve on that roadmap, but the exact releases and the dates are all over the place. So just to review what's happened since this roadmap was written:
- July 2016. Akka.NET 1.1 - Stable Akka.Cluster; Akka.IO release; Akka.Streams Beta. Helios 2.0 transport and Akka.Remote performance improvements.
- September 2016. Akka.NET 1.1.2 - Stable Mono support; Downing providers for Akka.Cluster, and lots of other features and fixes.
- January 2017. Akka.NET 1.1.3 - Akka.DistributedData beta; introduction of Hyperion serializer.
- April 2017. Akka.NET 1.2 - DotNetty transport with TLS support for Akka.Remote; Akka.Streams RTM; Akka.Cluster.Tools RTM; CoordinatedShutdown; and more.
You'll notice that many of the things we promised in Akka.NET 1.5, such as TLS support did not happen in that order and some proposed changes, such as a new default serializer, have not happened yet.
Without getting too deep into the details, the release of .NET Core in the summer of 2016 had to be factored into our roadmap and we wanted to add support for .NET Standard in 1.5. As we later discovered, adding .NET Standard support that early turned out to be a bit premature: the .NET Standard / .NET Core + tooling rodeo was an unmanageable mess in 2016.
Now that Visual Studio 2017 is out and many of the other libraries we depend on all support .NET Standard / .NET Core, it's a much easier proposition for us to implement.
2017 Akka.NET Roadmap
If you're on the Petabridge mailing list, no doubt you received an invitiation to fill out the Akka.NET Users Survey in the last month or two.
We gathered responses from ~200 Akka.NET users and that information has proven to be instrumental in prioritizing our roadmap for 2017, and I'd like to turn your attention to this answer chart from question 6 of the survey: "What platform(s) are you intending to use with Akka.NET?"
This question allowed for respondents to select multiple answers, but the trend here is clear: there's a lot of demand for being able to run Akka.NET on .NET Core.
Akka.NET v1.3: .NET Standard Support
Therefore, it's our pleasure to announce that the next major release of Akka.NET, v1.3, will feature RTM support for .NET Standard 1.6. Here's the set of features roughly planned for v1.3:
- Serialization will still be JSON.NET by default;
- Upgrade from Google Protocol Buffer 2 to 3;
- .NET Standard support for all core modules: Akka.Persistence, Remote, Streams, Clustering, Cluster.Tools, Cluster.Sharding, Akka core, etc; and
- Introduction of C# 7 syntax.
Target release date for these changes is June 30th, 2017, barring any moving of the goal posts with respect to .NET Standard / .NET Core.
Based on other pieces of feedback from the survey, we're also addressing the following this year - in order of importance:
- Increase Akka.Remote throughput;
- Release Akka.Persistence & Akka.Cluster.Sharding out of beta;
- Improve documentation and examples;
- Add real-world guides for deployment and devops; and
- Introduce tooling for cluster management, visualization, etc...
Work is underway on all of these initiatives already and we'll have more updates on some of these as they're ready.
One development in particular that's worth calling attention to now is the upcoming new default serializer: Hyperion.
Hyperion is a fork of the Wire serializer we were originally planning on using in Akka.NET 1.5 from before its switched license was switched to the GPL. It's maintained and developed by the Akka.NET team and under its original Apache 2.0 license terms and will become the default Akka.NET serializer later this year is all goes according to plan.
It's much faster and purpose-built for Akka.NET, but still in a beta stage at the moment. If you wish to use it along with Akka.NET, you can follow the Hyperion installation instructions here.
Thanks for all of your support, feedback, bug reports, blog posts, and participation in the Akka.NET community! Please let us know if you have any questions in the comments.