The news that kotlin chose play framework for a web framework is really excellent.
Nevertheless I think that it could mean very different things, I'll try to clarify a bit the options I see and that have been discussed in this thread
go for a new framework developed with kotlin from scratch
- write from scratch a new type-safe, stateless, asynchronous framework
well, that's certainly a lot of work. and maintaining it and keeping it upto date adds some great burden too
stick with play 1
a couple of options
- develop a module (just like the scala module por play 1)
take into account that play developers found a couple of limitations to this approach. they had to modify the core framework to support scala (have a look at the source, you'll find many scala ad hoc modifications) they couldn't support latests versions of scala, and finally the chose to rewrite the framework in scala
- fork the project in java and then gradually adapt it for kotlin use
there has to be a good reason to fork a project, you'll have to deal with support, enhancements, backport new features from the original project, etc...
Take into account that, in general lines, even though, as play developers clearly stated, play 1 will certainly be supported for a long time, the community is heading to play2.
ride on play 2
I don't think you can provide play support with just a module, like in play1. I think you'll have to create a project like they did with java: https://github.com/playframework/Play20/tree/master/framework/src/play/src/main/java/play, providing a kotlin API to all the play2 functionality.
that would be a fine starting point
then you could add a module for a template system based on kotlin. Ideally this would be an independent project that could be used outside of play (I think the current play2 tempalte engine, written in scala) is designed that way). Then this kotlin template engine could be used by play2 scala, java and kotlin users, or even outside of play.
Then you could also develop another module to define the routes in kotlin.
I think that the play2 path is the way to go. Jetbrains could provide a whole kotlin type-safe, asynchronous, well supported, framework, without the user ever knowing the core is in scala.
The good news is that play2 already supports an additional language (that is, java), so this use case has been taking into account.
Java has certain limitations, and lot's of developers just don't feel quite comfortable with scala (ok, I think that kotlin devs know this better than me So a kotlin API for play framework 2, with the tools and support provided by Jetbrains, would be great.
I'd like to know what kotlin developers think on this subject.