mdedetrich commented on issue #2093: URL: https://github.com/apache/pekko/issues/2093#issuecomment-3261674232
> [@mdedetrich](https://github.com/mdedetrich) I was trying to do [#2152](https://github.com/apache/pekko/issues/2152), but that seems to need rework of many api too. I suggest you just work on the main, at least for me, I did not expect a 1.3.x branch. The thing is, if we want to do breaking changes in 2.0.x series (such as removing the methods that work with `Future` for Java users) the changes have to land in Pekko 1.x series because we have to then deprecate those methods. My work is currently based on the 1.2.x branch, but while the changes are mechanically simple it is in terms of volume a big PR also because documentation needs to be updated. There are also open questions about how far we want to go, i.e. do we want to follow the pekko-connectors/http pattern where even if the methods are the same for `scaladsl`/`javadsl` we still have copies of those methods in both API's (i.e. they are just alias's) **OR** do we have these common API's just sit in `org.apache.pekko.actor` (one nesting above `org.apache.pekko.actor.scaladls`/`org.apache.pekko.actor/javadsl`, I wanted to ask this question in the PR. The tl;dr is, if we want Pekko 2.0.x to be clean and have a consistent API with the rest of pekko these changes need to land in 1.x at some point. On another note I also looked into the git log and I know why the API for `Actor` is the way it is, its **REALLY** old. It actually predates even Java's `CompletableFuture`/`CompletionStage` (which only came out in Java 1.8, see https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletableFuture.html and https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/CompletionStage.html) which explains why the API was designed the way it was, at that time `CompletableFuture`/`CompletionStage` didn't exist and so they expected Java users to just have to deal with the Scala `Future`. I actually think for this reason, 2.0.x is an excellent opportunity to be bold and just remove all of this legacy design and cruft. Whether it be dropping Scala 2.12 (which seems likely), JVM 17 as minimum version which lets us simplify the sbt build a bit or just updating the API's (as we are talking about in this issue) so that both Java and Scala users are happy and also opens the doors for other types of dsl's (i.e. kotlin, clojure if someone is crazy enough????). We just need to make sure that users are not hanging by waiting extended periods of time for a release, hence why I think releasing semi-frequent milestones is the strategy to go here. This is why milestones are designed for, especially when we are doing binary breaking changes due to bump in major versions. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
