Hey Josep,

I'm glad you agree that a KIP is not needed here, and I agree with you that
how to publish these artifacts should be discussed with the Kafka team. In
fact, this is what I created this thread for 😁 This is my first time
contributing to Kafka, so I'm going to have to ask what a DISCUSS thread
is. Is it just a mailing list thread with a subject that starts with
[DISCUSS], or is there more behind it?

Best regards,
Matthias

Am Fr., 9. Feb. 2024 um 18:31 Uhr schrieb Josep Prat
<josep.p...@aiven.io.invalid>:

> Hi Matthias,
> It's not adding a new functionality but it's changing the way to generate
> artifacts. In the end we are talking about generating a new binary.
>
> I could live with not having a KIP, but a DISCUSS thread I think it's
> necessary. This signals the community members and maintainers that their
> input is needed.
>
> I could help you with writing the KIP if you want.
>
> Best,
>
> Josep Prat
> Open Source Engineering Director, aivenjosep.p...@aiven.io   |
> +491715557497 | aiven.io
> Aiven Deutschland GmbH
> Alexanderufer 3-7, 10117 Berlin
> Geschäftsfßhrer: Oskari Saarenmaa & Hannu Valtonen
> Amtsgericht Charlottenburg, HRB 209739 B
>
> On Fri, Feb 9, 2024, 18:02 Matthias Berndt <matthias.ber...@ttmzero.com>
> wrote:
>
> > Hi Matthias, Hi Josep,
> >
> > I'm afraid I can't do the KIP thing as the signup process for Apache
> > Confluence requires sending me a password reset link via E-Mail and said
> > E-Mail doesn't seem to reach me for some reason. I've contacted the
> Apache
> > infrastructure team but haven't yet heard back from them.
> > That said, I'd like to push back on the notion that a KIP is really
> > necessary for this change. It's certainly not a “major new feature” as it
> > adds zero extra functionality, and it doesn't affect binary compatibility
> > either as all the currently supported Scala versions are still supported.
> > This looks like a routine upgrade to me. Please, let's try to keep the
> > administrative overhead to the required minimum, shall we?
> > Thanks btw for merging Github PR #15239 (removal of
> scala-collection-compat
> > dependency from the 2.13 artifact). That will already improve life for
> > Scala 3 users.
> >
> > All the best,
> > Matthias
> >
> >
> > Am Do., 8. Feb. 2024 um 18:02 Uhr schrieb Matthias J. Sax <
> > mj...@apache.org
> > >:
> >
> > > Josep,
> > >
> > > thanks for helping with this. I was also thinking if we might need a
> KIP
> > > for this change. Since you had the same though, I would say, yes, let's
> > > do a KIP.
> > >
> > > @Matthias: can you prepare a KIP? You can read up on the details on the
> > > wiki page:
> > >
> > >
> >
> https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Improvement+Proposals
> > >
> > > If you have any questions about the process, please let us know.
> > >
> > > Thanks for pushing this forward!
> > >
> > >
> > > -Matthias
> > >
> > > On 2/8/24 8:08 AM, Matthias Berndt wrote:
> > > > Hey Josep et al,
> > > >
> > > > I've created a ticket regarding this.
> > > > https://issues.apache.org/jira/browse/KAFKA-16237
> > > >
> > > > All the best,
> > > > Matthias
> > > >
> > > > Am Do., 8. Feb. 2024 um 11:42 Uhr schrieb Josep Prat
> > > > <josep.p...@aiven.io.invalid>:
> > > >>
> > > >> Go ahead and ask for a JIRA and Wiki account (Confluence). Let us
> know
> > > when
> > > >> your accounts are created and we'll properly set them up so you can
> > > create
> > > >> and assign tickets to you.
> > > >>
> > > >> Best,
> > > >>
> > > >> On Thu, Feb 8, 2024 at 11:32 AM Matthias Berndt <
> > > matthias.ber...@ttmzero.com>
> > > >> wrote:
> > > >>
> > > >>> Thanks Josep, I've applied for a JIRA account and addressed your
> > > >>> review comments.
> > > >>>
> > > >>> Am Do., 8. Feb. 2024 um 09:19 Uhr schrieb Josep Prat
> > > >>> <josep.p...@aiven.io.invalid>:
> > > >>>>
> > > >>>> Hi Matthias,
> > > >>>>
> > > >>>> I think for this particular case it would be worth creating a JIRA
> > > ticket
> > > >>>> for this as it's a new "feature".
> > > >>>> Regarding the change itself, I think we need to clarify how the
> > > release
> > > >>>> process would work. Right now, the script `gradlewAll` is used
> > (which
> > > >>>> basically runs the build with Scala version 2.12 and 2.13). If I
> > > >>> understand
> > > >>>> your changes correctly, we would need to run the build 3 times:
> > > >>>> - 1 with property scalaVersion 2.12
> > > >>>> - 1 with scalaVersion 2.13 and streamsScalaVersion 2.13
> > > >>>> - 1 with scalaVersion 2.13 and streamsScalaVersion 3.1
> > > >>>>
> > > >>>> I think we should document this and discuss when to have this
> > feature.
> > > >>> If I
> > > >>>> remember correctly from when I tried to update Kafka to Scala 3,
> the
> > > idea
> > > >>>> was to push this to a Kafka 4.0 version because we didn't want to
> > > >>> maintain
> > > >>>> more than 2 Scala versions at the same time. I would encourage if
> > not
> > > >>>> having a KIP, at least open up a [DISCUSS] thread to clarify some
> of
> > > >>> these
> > > >>>> points.
> > > >>>>
> > > >>>> I'll add some feedback on the PR itself regarding the changes.
> > > >>>>
> > > >>>> Best,
> > > >>>>
> > > >>>> On Thu, Feb 8, 2024 at 1:57 AM Matthias Berndt <
> > > >>> matthias.ber...@ttmzero.com>
> > > >>>> wrote:
> > > >>>>
> > > >>>>> Hi Matthias J., Hi Lucas, Hi Josep,
> > > >>>>>
> > > >>>>> Thank you for your encouraging responses regarding a Scala 3 port
> > of
> > > >>>>> Kafka-Streams-Scala, and apologies for the late response from my
> > > side.
> > > >>>>> I have now created a PR to port Kafka-Streams-Scala to Scala 3
> > (while
> > > >>>>> retaining support for 2.13 and 2.12). Almost no changes to the
> code
> > > >>>>> were required and the tests also pass. Please take a look and let
> > me
> > > >>>>> know what you think :-)
> > > >>>>> https://github.com/apache/kafka/pull/15338
> > > >>>>>
> > > >>>>> All the best
> > > >>>>> Matthias
> > > >>>>>
> > > >>>>> Am Do., 1. Feb. 2024 um 16:35 Uhr schrieb Josep Prat
> > > >>>>> <josep.p...@aiven.io.invalid>:
> > > >>>>>>
> > > >>>>>> Hi,
> > > >>>>>>
> > > >>>>>> For reference, prior work on this:
> > > >>>>>> https://github.com/apache/kafka/pull/11350
> > > >>>>>> https://github.com/apache/kafka/pull/11432
> > > >>>>>>
> > > >>>>>> Best,
> > > >>>>>>
> > > >>>>>> On Thu, Feb 1, 2024, 15:55 Lucas Brutschy <
> lbruts...@confluent.io
> > > >>>>> .invalid>
> > > >>>>>> wrote:
> > > >>>>>>
> > > >>>>>>> Hi Matthiases,
> > > >>>>>>>
> > > >>>>>>> I know Scala 2 fairly well, so I'd be happy to review changes
> > that
> > > >>> add
> > > >>>>>>> Scala 3 support. However, as Matthias S. said, it has to be
> > driven
> > > >>> by
> > > >>>>>>> people who use Scala day-to-day, since I believe most Kafka
> > Streams
> > > >>>>>>> committers are working with Java.
> > > >>>>>>>
> > > >>>>>>> Rewriting the tests to not use EmbeddedKafkaCluster seems like
> a
> > > >>> large
> > > >>>>>>> undertaking, so option 1 is the first thing we should explore.
> > > >>>>>>>
> > > >>>>>>> I don't have any experience with Scala 3 migration topics, but
> on
> > > >>> the
> > > >>>>>>> Scala website it says
> > > >>>>>>>> The first piece of good news is that the Scala 3 compiler is
> > > >>> able to
> > > >>>>>>> read the Scala 2.13 Pickle format and thus it can type check
> code
> > > >>> that
> > > >>>>>>> depends on modules or libraries compiled with Scala 2.13.
> > > >>>>>>>> One notable example is the Scala 2.13 library. We have indeed
> > > >>> decided
> > > >>>>>>> that the Scala 2.13 library is the official standard library
> for
> > > >>> Scala
> > > >>>>> 3.
> > > >>>>>>> So wouldn't that mean that we are safe in terms of standard
> > library
> > > >>>>>>> upgrades if we use core_2.13 in the tests?
> > > >>>>>>>
> > > >>>>>>> Cheers,
> > > >>>>>>> Lucas
> > > >>>>>>>
> > > >>>>>>>
> > > >>>>>>> On Wed, Jan 31, 2024 at 9:20 PM Matthias J. Sax <
> > mj...@apache.org>
> > > >>>>> wrote:
> > > >>>>>>>>
> > > >>>>>>>> Thanks for raising this. The `kafka-streams-scala` module
> seems
> > > >>> to
> > > >>>>> be an
> > > >>>>>>>> important feature for Kafka Streams and I am generally in
> favor
> > > >>> of
> > > >>>>> your
> > > >>>>>>>> proposal to add Scala 3 support. However, I am personally no
> > > >>> Scala
> > > >>>>>>>> person and it sounds like quite some overhead.
> > > >>>>>>>>
> > > >>>>>>>> If you are willing to drive and own this initiative happy to
> > > >>> support
> > > >>>>> you
> > > >>>>>>>> to the extend I can.
> > > >>>>>>>>
> > > >>>>>>>> About the concrete proposal: my understanding is that :core
> will
> > > >>> move
> > > >>>>>>>> off Scala long-term (not 100% sure what the timeline is, but
> new
> > > >>>>> modules
> > > >>>>>>>> are written in Java only). Thus, down the road the
> compatibility
> > > >>>>> issue
> > > >>>>>>>> would go away naturally, but it's unclear when.
> > > >>>>>>>>
> > > >>>>>>>> Thus, if we can test kafak-stream-scala_3 with core_2.13 it
> > > >>> seems we
> > > >>>>>>>> could add support for Scala 3 now, taking a risk that it might
> > > >>> break
> > > >>>>> in
> > > >>>>>>>> the future assume that the migration off Scala from core is
> not
> > > >>> fast
> > > >>>>>>> enough.
> > > >>>>>>>>
> > > >>>>>>>> For proposal (2), I don't think that it would be easily
> possible
> > > >>> for
> > > >>>>>>>> unit/integration tests. We could fall back to system tests
> > > >>> though,
> > > >>>>> but
> > > >>>>>>>> they would be much more heavy weight of course.
> > > >>>>>>>>
> > > >>>>>>>> Might be good to hear from others. We might actually also want
> > > >>> to do
> > > >>>>> a
> > > >>>>>>>> KIP for this?
> > > >>>>>>>>
> > > >>>>>>>>
> > > >>>>>>>> -Matthias
> > > >>>>>>>>
> > > >>>>>>>> On 1/20/24 10:34 AM, Matthias Berndt wrote:
> > > >>>>>>>>> Hey there,
> > > >>>>>>>>>
> > > >>>>>>>>> I'd like to discuss a Scala 3 port of the kafka-streams-scala
> > > >>>>> library.
> > > >>>>>>>>> Currently, the build system is set up such that
> > > >>> kafka-streams-scala
> > > >>>>>>>>> and core (i. e. kafka itself) are compiled with the same
> Scala
> > > >>>>>>>>> compiler versions. This is not an optimal situation because
> it
> > > >>>>> means
> > > >>>>>>>>> that a Scala 3 release of kafka-streams-scala cannot happen
> > > >>>>>>>>> independently of kafka itself. I think this should be changed
> > > >>>>>>>>>
> > > >>>>>>>>> The production codebase of scala-streams-kafka actually
> > > >>> compiles
> > > >>>>> just
> > > >>>>>>>>> fine on Scala 3.3.1 with two lines of trivial syntax changes.
> > > >>> The
> > > >>>>>>>>> problem is with the tests. These use the
> `EmbeddedKafkaCluster`
> > > >>>>> class,
> > > >>>>>>>>> which means that kafka is pulled into the classpath,
> > > >>> potentially
> > > >>>>>>>>> leading to binary compatibility issues.
> > > >>>>>>>>> I can see several approaches to fixing this:
> > > >>>>>>>>>
> > > >>>>>>>>> 1. Run the kafka-streams-scala tests using the compatible
> > > >>> version
> > > >>>>> of
> > > >>>>>>>>> :core if one is available. Currently, this means that
> > > >>> everything
> > > >>>>> can
> > > >>>>>>>>> be tested (test kafka-streams-scala_2.12 using core_2.12,
> > > >>>>>>>>> kafka-streams-scala_2.13 using core_2.13 and
> > > >>> kafka-streams-scala_3
> > > >>>>>>>>> using core_2.13, as these should be compatible), but when a
> new
> > > >>>>>>>>> scala-library version is released that is no longer
> compatible
> > > >>> with
> > > >>>>>>>>> 2.13, we won't be able to test that.
> > > >>>>>>>>> 2. Rewrite the tests to run without EmbeddedKafkaCluster,
> > > >>> instead
> > > >>>>>>>>> running the test cluster in a separate JVM or perhaps even a
> > > >>>>>>>>> container.
> > > >>>>>>>>>
> > > >>>>>>>>> I'd be willing to get my hands dirty working on this, but
> > > >>> before I
> > > >>>>>>>>> start I'd like to get some feedback from the Kafka team
> > > >>> regarding
> > > >>>>> the
> > > >>>>>>>>> approaches outlined above.
> > > >>>>>>>>>
> > > >>>>>>>>> All the best
> > > >>>>>>>>> Matthias Berndt
> > > >>>>>>>
> > > >>>>>> KJosep Prat
> > > >>>>>> Open Source Engineering Director, aivenjosep.p...@aiven.io   |
> > > >>>>>> +491715557497 | aiven.io
> > > >>>>>> Aiven Deutschland GmbH
> > > >>>>>> Alexanderufer 3-7, 10117 Berlin
> > > >>>>>> Geschäftsfßhrer: Oskari Saarenmaa & Hannu Valtonen
> > > >>>>>> Amtsgericht Charlottenburg, HRB 209739 B
> > > >>>>>
> > > >>>>
> > > >>>>
> > > >>>> --
> > > >>>> [image: Aiven] <https://www.aiven.io>
> > > >>>>
> > > >>>> *Josep Prat*
> > > >>>> Open Source Engineering Director, *Aiven*
> > > >>>> josep.p...@aiven.io   |   +491715557497
> > > >>>> aiven.io <https://www.aiven.io>   |   <
> > > >>> https://www.facebook.com/aivencloud>
> > > >>>>    <https://www.linkedin.com/company/aiven/>   <
> > > >>> https://twitter.com/aiven_io>
> > > >>>> *Aiven Deutschland GmbH*
> > > >>>> Alexanderufer 3-7, 10117 Berlin
> > > >>>> Geschäftsfßhrer: Oskari Saarenmaa & Hannu Valtonen
> > > >>>> Amtsgericht Charlottenburg, HRB 209739 B
> > > >>>
> > > >>
> > > >>
> > > >> --
> > > >> [image: Aiven] <https://www.aiven.io>
> > > >>
> > > >> *Josep Prat*
> > > >> Open Source Engineering Director, *Aiven*
> > > >> josep.p...@aiven.io   |   +491715557497
> > > >> aiven.io <https://www.aiven.io>   |   <
> > > https://www.facebook.com/aivencloud>
> > > >>    <https://www.linkedin.com/company/aiven/>   <
> > > https://twitter.com/aiven_io>
> > > >> *Aiven Deutschland GmbH*
> > > >> Alexanderufer 3-7, 10117 Berlin
> > > >> Geschäftsfßhrer: Oskari Saarenmaa & Hannu Valtonen
> > > >> Amtsgericht Charlottenburg, HRB 209739 B
> > >
> >
>

Reply via email to