> I'm curious what target Scala versions people are currently interested in. > I would've expected that everyone wants to migrate to Scala 3, for which several wrapper projects around Flink already exist
The Scala 3 tooling is still subpar (we're using IntelliJ), so I'm not sure I would move my team to Scala 3 right now (I'm currently toying with it on a personal project). In addition, moving to Scala 3 is not completely free - you have to do some rewrites, and developers will need some adaptation time. Scala 2.13 is another thing entirely, we've wanted to migrate for a long while. On Wed, Oct 5, 2022 at 12:53 PM Chesnay Schepler <ches...@apache.org> wrote: > > It's possible that for the sake of the Scala API, we would occasionally > require some changes in the Java API. As long as those changes are not > detrimental to Java users, they should be considered. > > That's exactly the model we're trying to get to. Don't fix scala-specific > issues with scala code, but rather on the Java side as much as possible > which could also benefit other JVM languages (e.g., Kotlin). > > > A question regarding the Flink wrapper: would it be possible to keep it > under the Flink project's umbrella? Or does it need to be a completely > separate structure? I'm not aware of the full organizational implications > of this, I'm afraid. > > Technically it can be under the Flink umbrella, but then Flink would still > be (at least for a while) be the bottleneck because we'd have to review any > changes coming in. > That would only improve once several new committers were added to take > care of this project. > (In the end you'd just split Flink and the Scala API _codebases_, but > achieve little else) > > > And if that is what it takes to move beyond Scala 2.12.7… This has been > a big pain point for us. > > I'm curious what target Scala versions people are currently interested in. > I would've expected that everyone wants to migrate to Scala 3, for which > several wrapper projects around Flink already exist. > > On 05/10/2022 12:35, Gaël Renoux wrote: > > Hello everyone, > > I've already answered a bit on Twitter, I'll develop my thoughts a bit > here. For context, my company (DataDome) has a significant codebase on > Scala Flink (around 110K LOC), having been using it since 2017. I myself am > an enthusiastic Scala developer (I don't think I'd like moving back to > Java) > > Given that, I think separating the Scala support from Flink is actually a > good move long term. We would then have a full-Java Flink, and a separate > Scala wrapper. It would help a lot in solving the skills issue: Flink > maintainers would no longer need to be fluent in Scala, and maintainers of > the Scala wrapper would not need a deep knowledge of Flink's inner > workings, just the API would be sufficient. And if that is what it takes to > move beyond Scala 2.12.7… This has been a big pain point for us. > > I'm not too worried about finding contributors for the Scala wrapper. > Within my company, we have developed additional wrappers and extension > methods (for parts where we felt the Flink Scala API was insufficient), and > we've been looking at ways we could contribute back. What held us back was > our lack of knowledge of the full Flink environment (we're only using the > Scala Datastream API). I don't think we're the only ones in that situation. > One major point, though, is that Flink developers would not be completely > rid of us ;-) It's possible that for the sake of the Scala API, we would > occasionally require some changes in the Java API. As long as those changes > are not detrimental to Java users, they should be considered. > > A question regarding the Flink wrapper: would it be possible to keep it > under the Flink project's umbrella? Or does it need to be a completely > separate structure? I'm not aware of the full organizational implications > of this, I'm afraid. > > Finally, the hard part would be the migration to the new version. My dream > solution would be to have the existing Scala API be entirely converted into > a Scala wrapper over the Java API. That way, migration would be pretty > minimal: add a dependency, change the imports for the Scala API, and we're > done. However, even starting from the existing flink4s project, that's > still quite a lot of work. So, more realistically, I'd settle for at least > a partial implementation. We would have some broken code that we could fix, > but at the very least I'd like the basic DataStream functions (process, > uid, name…) to be available. > > Thanks for all the work that went into making Flink what it is! > > > Gaël Renoux - Lead R&D Engineer > E - gael.ren...@datadome.co > W - www.datadome.co > > > > On Wed, Oct 5, 2022 at 9:30 AM Maciek Próchniak <m...@touk.pl> wrote: > >> Hi Martin, >> >> Could you please remind what was the conclusion of discussion on >> upgrading Scala to 2.12.15/16? >> https://lists.apache.org/thread/hwksnsqyg7n3djymo7m1s7loymxxbc3t - I >> couldn't find any follow-up vote? >> >> If it's acceptable to break binary compatibility by such an upgrade, then >> upgrading to JDK17 before 2.0 will be doable? >> >> >> thanks, >> >> maciek >> >> >> On 04.10.2022 18:21, Martijn Visser wrote: >> >> Hi Yaroslav, >> >> Thanks for the feedback, that's much appreciated! Regarding Java 17 as a >> prerequisite, we would have to break compatibility already since Scala >> 2.12.7 doesn't compile on Java 17 [1]. >> >> Given that we can only remove Scala APIs with the next major Flink (2.0) >> version, would that still impact you a lot? I do imagine that if we get to >> a Flink 2.0 version there would be more breaking involved anyway. The >> biggest consequence of deprecating support for Scala in Flink 1.x would be >> that new APIs would only be available in Java, but since these don't exist >> yet there would be no refactoring involved. I can imagine that we might >> change something in an existing API, but that would have certain >> compatibility guarantees already (depending if it's >> Public/PublicEvolving/Experimental). If a change would happen there, I >> think it would be smaller refactoring. >> >> Best regards, >> >> Martijn >> >> [1] https://issues.apache.org/jira/browse/FLINK-25000 >> >> On Tue, Oct 4, 2022 at 10:58 AM Yaroslav Tkachenko <yaros...@goldsky.com> >> wrote: >> >>> Hi Martijn, >>> >>> As a Scala user, this change would affect me a lot and I'm not looking >>> forward to rewriting my codebase, and it's not even a very large one :) >>> >>> I'd like to suggest supporting Java 17 as a prerequisite ( >>> https://issues.apache.org/jira/browse/FLINK-15736). Things like switch >>> expressions and records could simplify the migration quite a bit. Would you >>> consider adding it to the FLIP? >>> >>> On Tue, Oct 4, 2022 at 10:50 AM Jing Ge <j...@ververica.com> wrote: >>> >>>> Hi Martijn, >>>> >>>> Thanks for bringing this up. It is generally a great idea, so +1. >>>> >>>> Since both scala extension projects mentioned in the FLIP are still >>>> very young and I don't think they will attract more scala developers as >>>> Flink could just because they are external projects. It will be a big issue >>>> for users who have to rewrite their large codebases. Those users should be >>>> aware of the effort from now on and would better not count on those scala >>>> extension projects and prepare their migration plan before Flink 2.0. >>>> >>>> Best regards, >>>> Jing >>>> >>>> >>>> On Tue, Oct 4, 2022 at 1:59 PM Martijn Visser <martijnvis...@apache.org> >>>> wrote: >>>> >>>>> Hi Marton, >>>>> >>>>> You're making a good point, I originally wanted to include already the >>>>> User mailing list to get their feedback but forgot to do so. I'll do some >>>>> more outreach via other channels as well. >>>>> >>>>> @Users of Flink, I've made a proposal to deprecate and remove Scala >>>>> API support in a future version of Flink. Your feedback on this topic is >>>>> very much appreciated. >>>>> >>>>> Regarding the large Scala codebase for Flink, a potential alternative >>>>> could be to have a wrapper for all Java APIs that makes them available as >>>>> Scala APIs. However, this still requires Scala maintainers and I don't >>>>> think that we currently have those in our community. The easiest solution >>>>> for them would be to use the Java APIs directly. Yes it would involve >>>>> work, >>>>> but we won't actually be able to remove the Scala APIs until Flink 2.0 so >>>>> there's still time for that :) >>>>> >>>>> Best regards, >>>>> >>>>> Martijn >>>>> >>>>> On Tue, Oct 4, 2022 at 1:26 AM Márton Balassi < >>>>> balassi.mar...@gmail.com> wrote: >>>>> >>>>>> Hi Martjin, >>>>>> >>>>>> Thanks for compiling the FLIP. I agree with the sentiment that Scala >>>>>> poses >>>>>> considerable maintenance overhead and key improvements (like 2.13 or >>>>>> 2.12.8 >>>>>> supports) are hanging stale. With that said before we make this move >>>>>> we >>>>>> should attempt to understand the userbase affected. >>>>>> A quick Slack and user mailing list search does return quite a bit of >>>>>> results for scala (admittedly a cursory look at them suggest that >>>>>> many of >>>>>> them have to do with missing features in Scala that exist in Java or >>>>>> Scala >>>>>> versions). I would love to see some polls on this topic, we could >>>>>> also use >>>>>> the Flink twitter handle to ask the community about this. >>>>>> >>>>>> I am aware of users having large existing Scala codebases for Flink. >>>>>> This >>>>>> move would pose a very large effort on them, as they would need to >>>>>> rewrite >>>>>> much of their existing code. What are the alternatives in your >>>>>> opinion, >>>>>> Martjin? >>>>>> >>>>>> On Tue, Oct 4, 2022 at 6:22 AM Martijn Visser < >>>>>> martijnvis...@apache.org> >>>>>> wrote: >>>>>> >>>>>> > Hi everyone, >>>>>> > >>>>>> > I would like to open a discussion thread on FLIP-265 Deprecate and >>>>>> remove >>>>>> > Scala API support. Please take a look at >>>>>> > >>>>>> > >>>>>> https://cwiki.apache.org/confluence/display/FLINK/FLIP-265+Deprecate+and+remove+Scala+API+support >>>>>> > and provide your feedback. >>>>>> > >>>>>> > Best regards, >>>>>> > >>>>>> > Martijn >>>>>> > https://twitter.com/MartijnVisser82 >>>>>> > https://github.com/MartijnVisser >>>>>> > >>>>>> >>>>> >