Play 2.8 & Lagom 1.6 Roadmap

Hello, Play & Lagom community,

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:

  1. Akka 2.6
  2. Scala 2.13
  3. Java 11

Akka 2.6

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.

Scala 2.13

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.

Java 11

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.

Milestones organization

We organized the work in the following Github milestones:

  1. Play 2.8.0 must haves: https://github.com/playframework/playframework/milestone/80
  2. Play 2.8.0 optional changes: https://github.com/playframework/playframework/milestone/89
  3. Lagom 1.6.0 must haves: https://github.com/lagom/lagom/milestone/33
  4. Lagom 1.6.0 optional changes: https://github.com/lagom/lagom/milestone/51

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.

How to collaborate with the roadmap

Use this topic. :-)

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.

8 Likes

Thank you, @marcospereira!
I think that an open discussion of the roadmap is great :+1:

4 Likes

@marcospereira
After analyzing roadmap, I have a question :smile: Have you a plan to merge Play and Lagom in the future? :thinking: I’m sure that it’s not easy to do right now, but it’s possible definitely.

If you haven’t a plan to merge, would you describe your vision of the border between Play and Lagom?

1 Like

Hey @ihostage,

Yes. The vision is to merge them in the future. The critical thing here is to offer a viable transition from the current state to a new state where both frameworks become a single one.

Our plan involves reducing the differences and duplication between the two frameworks (dev-mode, logging configuration, etc.), use new features/APIs that available in Akka in favor of the current Lagom APIs (but have them integrated first in Play), and often re-evaluate if we are good to merge.

To keep the expectations clear, as you said, this requires a lot of work, and it is a long term plan with multiple smaller steps.

Best.

What does merging them mean exactly? What would the end result look like?

Hey @nafg,

For users, it means that they can have Play applications using features that exist (or that aren’t convenient to use) today only for Lagom. Also, it means a more consistent experience when consuming the APIs, configurations, docs, dev-mode, versions, etc., and it strengths Play ecosystem with new modules, features that people can use to grow Play applications into a microservices system. It also brings together the two communities that, although have a lot of overlap, can better share knowledge and experiences.

To contributors, it means fewer things to maintain, fewer channels to pay attention, less duplication of code, a streamlined release process, a consistent code base, and so on.

Anyway, merge the two repositories is far ahead in the future, at least it is far ahead of the roadmap posted here. There are a bunch of details we don’t know at this point only because we are not paying attention to this future yet.

Best.

3 Likes

I recently thought about implementing

but then I thought, it would maybe be better to have a general way of simply serving Akka-HTTP Routes through Play! … like an adapter where I can just plug-in some Akka-HTTP routes and connect them to Play!s router… that way the existing code could be used, not just for https://doc.akka.io/docs/akka-management/current/cluster-http-management.html but for every Akka-HTTP app.

what do you think about that?

1 Like

Hey @domdorn,

Yeah, composing Play and Akka HTTP routers is is precisely how we have been discussing this issue. So, feel free to go ahead. :slight_smile:

Best.