Matthias,

You have to choose between the package and class names when it comes to
adding a suffix (or prefix). I think the package name is the lesser of two
evils, but it would be interesting to know what others think.

I agree that we should include the information in the KIP (whatever we
decide).

Ismael

On Mon, Mar 19, 2018 at 3:30 PM, Matthias J. Sax <matth...@confluent.io>
wrote:

> About the package name.
>
> Would it be better/cleaner to omit the `scala` sub-package? Or is this
> required to avoid naming conflicts with the Java classes? If yes, please
> point it out in the KIP.
>
>
> -Matthias
>
> On 3/19/18 11:24 AM, Debasish Ghosh wrote:
> > Cool .. so the changes that u suggested e.g the WordCount example,
> package
> > name changes etc. will be in the PR only and not in the KIP document ..
> >
> > Or we keep the KIP document updated as well ?
> >
> > regards.
> >
> > On Mon, 19 Mar 2018 at 11:46 PM, Guozhang Wang <wangg...@gmail.com>
> wrote:
> >
> >> Hi Debasish,
> >>
> >> You can work on the PR in parallel to the KIP discussion so that people
> can
> >> start reviewing it. The only restriction is that the PR cannot be merged
> >> until the KIP is accepted.
> >>
> >>
> >> Guozhang
> >>
> >>
> >> On Mon, Mar 19, 2018 at 11:09 AM, Debasish Ghosh <
> >> debasish.gh...@lightbend.com> wrote:
> >>
> >>> Based on this discussion I have a question ..
> >>>
> >>> For the actual implementation we need to have a PR on
> >>> https://github.com/apache/kafka and the new library will be in the
> >> package
> >>> structure org.apache.kafka.streams.scala. My question is, is this PR
> part
> >>> of the KIP ? Or we work on the PR once the KIP is accepted ..
> >>>
> >>> regards.
> >>>
> >>> On Mon, Mar 19, 2018 at 11:28 PM, Debasish Ghosh <
> >>> debasish.gh...@lightbend.com> wrote:
> >>>
> >>>> Thanks Guozhang for the comments .. we will start working on them ..
> >>>>
> >>>> regards.
> >>>>
> >>>> On Mon, Mar 19, 2018 at 11:02 PM, Guozhang Wang <wangg...@gmail.com>
> >>>> wrote:
> >>>>
> >>>>> And one more comment about the type safety:
> >>>>>
> >>>>> 7. I'm in favor of the approach of enforcing type safety at compile
> >>> time,
> >>>>> since with Scala's strong typing system I think it makes more sense
> to
> >>> get
> >>>>> rid of config-based serde specifications that can cause runtime error
> >> in
> >>>>> the Scala wrapper.
> >>>>>
> >>>>>
> >>>>> Guozhang
> >>>>>
> >>>>>
> >>>>> On Mon, Mar 19, 2018 at 10:28 AM, Guozhang Wang <wangg...@gmail.com>
> >>>>> wrote:
> >>>>>
> >>>>>> Hello Debasish,
> >>>>>>
> >>>>>> Thanks for the KIP. Here are some comments:
> >>>>>>
> >>>>>> 1. About the naming: I'd also vote for option 2 and enforce users to
> >>>>>> rename when import since this scenario seems rare to me.
> >>>>>>
> >>>>>> 2. About the dependency: since this KIP can only be merged as early
> >> as
> >>>>>> 1.2, it means that for users who wants to use this artifact, say for
> >>>>>> version 1.2, she would need to bring in "kafka-streams" version 1.2.
> >>> In
> >>>>>> addition, if we change the Java API in the future versions we'd also
> >>>>> need
> >>>>>> to update the Scala wrapper at the same version as well, so in other
> >>>>> words
> >>>>>> "kafka-streams-scala" version X have to be with "kafka-streams"
> >>> version
> >>>>> X
> >>>>>> anyways. So I'd suggest we remove the version number in
> >>>>> "kafka-streams-scala
> >>>>>> only depends on the Scala standard library and Kafka Streams" as it
> >>> may
> >>>>>> be confusing to readers.
> >>>>>>
> >>>>>> 3. For the KIP discussion, it need be based on the proposed state of
> >>>>> this
> >>>>>> project in AK. More specifically, for the groupId in maven / gradle,
> >>> it
> >>>>>> need to be "org.apache.kafka"; for the version, it need to be Kafka
> >>>>> release
> >>>>>> versions, e.g. 1.2.0.
> >>>>>>
> >>>>>> 4. In "New or Changed Public Interfaces" section, it does not
> >> mention
> >>>>> the
> >>>>>> serde classes like "DefaultSerdes", but I think they should also be
> >>>>>> considered public APIs as users would most likely import these in
> >> her
> >>>>>> implementation.
> >>>>>>
> >>>>>> 5. Could you also list the changes you'd propose to made to
> >>> build.gradle
> >>>>>> in kafka for adding this artifact? More details will help readers to
> >>>>> better
> >>>>>> understand your proposal.
> >>>>>>
> >>>>>> 6. I think it'd will be good to have a WordCount example code as
> >> part
> >>> of
> >>>>>> this KIP, to illustrate how to code in this Scala wrapper, e.g. in
> >>>>>> o.a.k.scala.examples. But for this class we probably do not need to
> >>>>> have a
> >>>>>> separate artifact for it as we did in kafka-streams-examples.
> >>>>>>
> >>>>>>
> >>>>>> Guozhang
> >>>>>>
> >>>>>>
> >>>>>> On Mon, Mar 19, 2018 at 9:16 AM, Ted Yu <yuzhih...@gmail.com>
> >> wrote:
> >>>>>>
> >>>>>>> I agree with Sean on name unification.
> >>>>>>>
> >>>>>>> +1 to option 2.
> >>>>>>>
> >>>>>>> On Mon, Mar 19, 2018 at 7:23 AM, Sean Glover <
> >>>>> sean.glo...@lightbend.com>
> >>>>>>> wrote:
> >>>>>>>
> >>>>>>>> Type names: I vote for option 2.  The user must explicitly add a
> >>>>>>> dependency
> >>>>>>>> to this library and the wrapper types are in a different package.
> >>> It
> >>>>>>> seems
> >>>>>>>> reasonable to expect them to do an import rename if there's a
> >> need
> >>> to
> >>>>>>> drop
> >>>>>>>> down to the Java API.
> >>>>>>>>
> >>>>>>>> Test Utils: The test utils in kafka-streams-scala are nice and
> >>> lean,
> >>>>> but
> >>>>>>>> I'm not sure if it provides much more value than other options
> >> that
> >>>>>>> exist
> >>>>>>>> in the community.  There's an embedded Kafka/ZK project
> >>>>> implementation
> >>>>>>> for
> >>>>>>>> ScalaTest that's popular and active: manub/scalatest-embedded-
> >>> kakfa.
> >>>>>>> It
> >>>>>>>> implies you must also use ScalaTest, which I acknowledge isn't
> >>>>>>> everyone's
> >>>>>>>> first choice for Scala test framework, but it probably is one of,
> >>> if
> >>>>> not
> >>>>>>>> the most, popular library.  It includes a DSL for Kafka Streams
> >>>>> too.  If
> >>>>>>>> this KIP is accepted then perhaps a PR to that project could be
> >>> made
> >>>>> to
> >>>>>>>> support the new wrapper implementations.
> >>>>>>>>
> >>>>>>>> https://github.com/manub/scalatest-embedded-kafka#
> >>>>>>>> scalatest-embedded-kafka-streams
> >>>>>>>>
> >>>>>>>> Sean
> >>>>>>>>
> >>>>>>>> On Sun, Mar 18, 2018 at 4:05 AM, Debasish Ghosh <
> >>>>>>>> debasish.gh...@lightbend.com> wrote:
> >>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>> Should this be 1.2  (maybe it's even better to not put any
> >>>>>>> version at
> >>>>>>>>>> all)
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> Actually wanted to emphasize that the support is from 1.0.0
> >>>>> onwards ..
> >>>>>>>>> Should we make that explicit ? Like ..
> >>>>>>>>>
> >>>>>>>>> kafka-streams-scala only depends on the Scala standard library
> >>> and
> >>>>>>> Kafka
> >>>>>>>>>> Streams 1.0.0+.
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>  In 1.1 release, we add a new module `kafka-streams-test-utils`
> >>> to
> >>>>>>>> simplify
> >>>>>>>>>> testing for Kafka Streams applications. Are those test utils
> >>>>>>> suitable
> >>>>>>>> for
> >>>>>>>>>> Scala users or should we add Scala wrappers for those, too?
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> I will check up and let you know ..
> >>>>>>>>>
> >>>>>>>>> Also I am not clear about the decision on renaming of Scala
> >>>>>>> abstractions.
> >>>>>>>>> Can we have a consensus on this ? Here's the summary ..
> >>>>>>>>>
> >>>>>>>>> *Option 1:* Keep names separate (KStream for Java class,
> >> KStreamS
> >>>>> for
> >>>>>>>>> Scala). No renaming of imports required.
> >>>>>>>>> *Option 2:* Unify names (KStream for Java and Scala class
> >> names).
> >>>>> No
> >>>>>>>>> conflict since they will reside in different packages. But if
> >> we
> >>>>> need
> >>>>>>> to
> >>>>>>>>> use both abstractions, renaming of imports are required. But
> >>> again,
> >>>>>>> this
> >>>>>>>>> may not be a too frequent use case.
> >>>>>>>>>
> >>>>>>>>> Suggestions ?
> >>>>>>>>>
> >>>>>>>>> regards.
> >>>>>>>>>
> >>>>>>>>> On Sat, Mar 17, 2018 at 3:07 AM, Matthias J. Sax <
> >>>>>>> matth...@confluent.io>
> >>>>>>>>> wrote:
> >>>>>>>>>
> >>>>>>>>>> Thanks a lot for the KIP! Two questions:
> >>>>>>>>>>
> >>>>>>>>>> 1) the KIP states:
> >>>>>>>>>>
> >>>>>>>>>>> kafka-streams-scala only depends on the Scala standard
> >>> library
> >>>>> and
> >>>>>>>>> Kafka
> >>>>>>>>>> Streams 1.0.0.
> >>>>>>>>>>
> >>>>>>>>>> Should this be 1.2  (maybe it's even better to not put any
> >>>>> version
> >>>>>>> at
> >>>>>>>>> all)
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> 2) In 1.1 release, we add a new module
> >>>>> `kafka-streams-test-utils` to
> >>>>>>>>>> simplify testing for Kafka Streams applications. Are those
> >> test
> >>>>>>> utils
> >>>>>>>>>> suitable for Scala users or should we add Scala wrappers for
> >>>>> those,
> >>>>>>>> too?
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> -Matthias
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>> On 3/16/18 11:10 AM, Ted Yu wrote:
> >>>>>>>>>>> Import renames seem to be fine.
> >>>>>>>>>>>
> >>>>>>>>>>> The class names with trailing 'S' look clean.
> >>>>>>>>>>>
> >>>>>>>>>>> Cheers
> >>>>>>>>>>>
> >>>>>>>>>>> On Fri, Mar 16, 2018 at 11:04 AM, Ismael Juma <
> >>>>> ism...@juma.me.uk>
> >>>>>>>>> wrote:
> >>>>>>>>>>>
> >>>>>>>>>>>> If this is rare (as it sounds), relying on import renames
> >>>>> seems
> >>>>>>> fine
> >>>>>>>>> to
> >>>>>>>>>> me.
> >>>>>>>>>>>> Let's see what others think.
> >>>>>>>>>>>>
> >>>>>>>>>>>> Ismael
> >>>>>>>>>>>>
> >>>>>>>>>>>> On Fri, Mar 16, 2018 at 10:51 AM, Debasish Ghosh <
> >>>>>>>>>>>> debasish.gh...@lightbend.com> wrote:
> >>>>>>>>>>>>
> >>>>>>>>>>>>> I am not sure if this is practical or not. But
> >>> theoretically
> >>>>> a
> >>>>>>> user
> >>>>>>>>> may
> >>>>>>>>>>>>> want to extract the unsafe Java abstraction from the
> >> Scala
> >>>>> ones
> >>>>>>> and
> >>>>>>>>> use
> >>>>>>>>>>>>> Java APIs on them .. e.g.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> val userClicksStream: KStreamS[String, Long] =
> >>>>>>>>>>>>> builder.stream(userClicksTopic) // Scala abstraction
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> val jStream: KStream[String, Long] =
> >> userClicksStream.inner
> >>>>> //
> >>>>>>>>>> publishes
> >>>>>>>>>>>>> the underlying Java abstraction
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> //.. work with Java, may be pass to some function written
> >>> in
> >>>>>>> Java
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> I do realize this is somewhat of a convoluted use case
> >> and
> >>>>> may
> >>>>>>> not
> >>>>>>>> be
> >>>>>>>>>>>>> practically useful ..
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Otherwise we can very well work on the suggested approach
> >>> of
> >>>>>>>> unifying
> >>>>>>>>>> the
> >>>>>>>>>>>>> names ..
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> regards.
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> On Fri, Mar 16, 2018 at 10:28 PM, Ismael Juma <
> >>>>>>> ism...@juma.me.uk>
> >>>>>>>>>> wrote:
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>> What does "mixed mode application" mean? What are the
> >>> cases
> >>>>>>> where
> >>>>>>>> a
> >>>>>>>>>>>> user
> >>>>>>>>>>>>>> would want to use both APIs? I think that would help
> >>>>> understand
> >>>>>>>> the
> >>>>>>>>>>>>>> reasoning.
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> Thanks,
> >>>>>>>>>>>>>> Ismael
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> On Fri, Mar 16, 2018 at 8:48 AM, Debasish Ghosh <
> >>>>>>>>>>>>>> debasish.gh...@lightbend.com> wrote:
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Hi Damian -
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> We could. But in case the user wants to use both Scala
> >>> and
> >>>>>>> Java
> >>>>>>>>> APIs
> >>>>>>>>>>>>> (may
> >>>>>>>>>>>>>>> be for some mixed mode application), won't that be
> >>>>> confusing ?
> >>>>>>>> She
> >>>>>>>>>>>> will
> >>>>>>>>>>>>>>> have to do something like ..
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> import o.a.k.s.scala.{KStream => KStreamS}
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> to rename Scala imports or the other way round for
> >>> imported
> >>>>>>> Java
> >>>>>>>>>>>>> classes.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> regards.
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> On Fri, Mar 16, 2018 at 9:07 PM, Damian Guy <
> >>>>>>>> damian....@gmail.com>
> >>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Hi Debasish,
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Thanks for the KIP - will be a great addition to
> >>> streams.
> >>>>>>> I've
> >>>>>>>>> only
> >>>>>>>>>>>>>> had a
> >>>>>>>>>>>>>>>> quick scan, but seeing as the Scala classes are going
> >> to
> >>>>> be
> >>>>>>> in
> >>>>>>>>>>>> their
> >>>>>>>>>>>>>> own
> >>>>>>>>>>>>>>>> package could we drop the S at the end of the class
> >>> names?
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> Thanks,
> >>>>>>>>>>>>>>>> Damian
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>> On Fri, 16 Mar 2018 at 15:25 Debasish Ghosh <
> >>>>>>>>>>>>>>> debasish.gh...@lightbend.com>
> >>>>>>>>>>>>>>>> wrote:
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Hi -
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> A new KIP, KIP-270 is up for discussion:
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>>
> >> https://cwiki.apache.org/confluence/display/KAFKA/KIP-
> >>>>>>>>>>>>>>>> 270+-+A+Scala+Wrapper+Library+for+Kafka+Streams
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> The relevant JIRA issue: https://issues.apache.org/
> >>>>>>>>>>>>>>>> jira/browse/KAFKA-6670
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> The library as proposed in the KIP has been
> >> implemented
> >>>>> at
> >>>>>>>>>>>>>>>>> https://github.com/lightbend/kafka-streams-scala and
> >>> the
> >>>>>>>> current
> >>>>>>>>>>>>>>> release
> >>>>>>>>>>>>>>>>> is
> >>>>>>>>>>>>>>>>> 0.2.0 (
> >>>>>>>>>>>>>>>>> https://github.com/lightbend/k
> >>>>> afka-streams-scala/releases/
> >>>>>>>>>>>>> tag/v0.2.0
> >>>>>>>>>>>>>> ).
> >>>>>>>>>>>>>>>>> We at Lightbend has been using it since quite some
> >> time
> >>>>> now.
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> regards.
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> --
> >>>>>>>>>>>>>>>>> Debasish Ghosh
> >>>>>>>>>>>>>>>>> Principal Engineer
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>> Twitter: @debasishg
> >>>>>>>>>>>>>>>>> Blog: http://debasishg.blogspot.com
> >>>>>>>>>>>>>>>>> Code: https://github.com/debasishg
> >>>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> --
> >>>>>>>>>>>>>>> Debasish Ghosh
> >>>>>>>>>>>>>>> Principal Engineer
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Twitter: @debasishg
> >>>>>>>>>>>>>>> Blog: http://debasishg.blogspot.com
> >>>>>>>>>>>>>>> Code: https://github.com/debasishg
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> --
> >>>>>>>>>>>>> Debasish Ghosh
> >>>>>>>>>>>>> Principal Engineer
> >>>>>>>>>>>>>
> >>>>>>>>>>>>> Twitter: @debasishg
> >>>>>>>>>>>>> Blog: http://debasishg.blogspot.com
> >>>>>>>>>>>>> Code: https://github.com/debasishg
> >>>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> --
> >>>>>>>>> Debasish Ghosh
> >>>>>>>>> Principal Engineer
> >>>>>>>>>
> >>>>>>>>> Twitter: @debasishg
> >>>>>>>>> Blog: http://debasishg.blogspot.com
> >>>>>>>>> Code: https://github.com/debasishg
> >>>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>> --
> >>>>>>>> Senior Software Engineer, Lightbend, Inc.
> >>>>>>>>
> >>>>>>>> <http://lightbend.com>
> >>>>>>>>
> >>>>>>>> @seg1o <https://twitter.com/seg1o>, in/seanaglover
> >>>>>>>> <https://www.linkedin.com/in/seanaglover/>
> >>>>>>>>
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> --
> >>>>>> -- Guozhang
> >>>>>>
> >>>>>
> >>>>>
> >>>>>
> >>>>> --
> >>>>> -- Guozhang
> >>>>>
> >>>>
> >>>>
> >>>>
> >>>> --
> >>>> Debasish Ghosh
> >>>> Principal Engineer
> >>>>
> >>>> Twitter: @debasishg
> >>>> Blog: http://debasishg.blogspot.com
> >>>> Code: https://github.com/debasishg
> >>>>
> >>>>
> >>>>
> >>>>
> >>>
> >>>
> >>> --
> >>> Debasish Ghosh
> >>> Principal Engineer
> >>>
> >>> Twitter: @debasishg
> >>> Blog: http://debasishg.blogspot.com
> >>> Code: https://github.com/debasishg
> >>>
> >>
> >>
> >>
> >> --
> >> -- Guozhang
> >>
>
>

Reply via email to