The Play Team is proud to share our roadmap to the next version of Play and Lagom. As we did with the previous roadmap, we want to give you the power to improve it, add items you are interested in working on and help us to improve it with your ideas.
We organize the roadmap considering three major priorities:
Akka 2.6 is the central theme of Play 2.8 and Lagom 1.6, so we split the work like this:
First, Akka 2.6 has some substantial changes in the defaults, for example, it is moving to Artery as the default remote transport, the default serializer will be Jackson instead of Java serialization, and some other internal changes that have an impact on Play and Lagom.
What we want to do here is to ensure that Play and Lagom work and, mainly, adopt these new defaults so that we can reduce the differences between what users get out-of-the-box for each framework.
Also, we want to ensure and document how to opt-out of such defaults in the context of the frameworks to give our users a way to migrate to these new defaults at their own pace. For example, if a change requires a full cluster shutdown to roll out an update of Lagom, users will have a chance to opt-out of it and do it later, while getting other benefits of the new releases.
The second point is to adopt new features in Akka 2.6, especially the new features that can better integrate Akka, Play, and Lagom. The main feature here is Akka Typed with a sharper focus on Akka Persistence Typed. Our plan here is to integrate both in Play, instead of replacing Lagom similar features now and the reasoning here is that we want these features available in Play applications, without requiring Lagom adoption to have CQRS and Event Sourcing, but also, again, give users the chance to adopt these new features at their own pace. This strategy is similar to what we have in Akka, where the new Akka Typed actors exist side by side with the old untyped actors API, with no deprecations, and both being supported.
To do that, we plan to move some features that today are integrated directly in Lagom to Play, such as cluster bootstrap and Akka management.
This is a work in progress as a GA release of Scala 2.13 is imminent. Right now Play is already building against Scala 2.13.0-RC2.
For Lagom, supporting Scala 2.13 is in progress as well, but there are dependencies we are waiting for releases against Scala 2.13 or features in Lagom we need to adapt not to require these dependencies to be compatible with Scala 2.13.
At this point, Play mostly supports Java 11. All the modules and samples are already being tested using Java; we even have Play itself building with Java 11, there is only a know issue we need to solve, related to ssl-config.
For Lagom, there is more work to do, especially related to Cassandra and Kafka.
We organized the work in the following Github milestones:
The optional changes list things we’d like to have but might not make it. The reasoning here is that we are targeting to have smaller and more frequent releases, instead of taking longer to have more significant releases, meaning that if something is not ready at this release, it is okay since it will be in the next release shortly.
If there are issues you want to work, let us know, and we can add them to the current milestone. Feel free to propose new issues if they don’t exist yet, and always feel free to help improve documentation if you feel so inspired!