My understanding is that we are not adding the client portion to the KIP is
because we believe it will require a lot of discussion (read: will be
really hard to get right).

Maybe it is a hint that this protocol is too difficult for clients to
implement?
I can't see why is it easy in C and Python and super difficult in Java.

Even if it is too hard to implement just in Java for some reason (god knows
the language has issues), isn't it a good reason to come up with something
we can implement in a reasonable way?

Gwen

On Fri, Apr 1, 2016 at 10:58 AM, Ashish Singh <asi...@cloudera.com> wrote:

> That is a fair concern and I think eventually we might want to have java
> clients backwards compatible. However, blocking KIP-35 on that might not be
> the best idea. The reason I say so is due to following reasons.
>
> 1. Backwards compatibility in java clients is a larger discussion, as we
> have already seen. Having a separate KIP focussing exactly on that will
> help in reducing moving pieces in one KIP.
> 2. It probably will fall out of 0.10 due to tight timeline, I am assuming
> we do not want to delay 0.10 a lot.
> 3. Even if we make java clients backward compatible in 0.10, I do not think
> it will be able to work with older releases as older broker versions still
> won't provide info on supported api versions. If we add api versions
> req/resp in 0.10, and add backwards compatibility in java clients in later
> versions, they will probably work with 0.10 and we will be able to test
> that.
>
> On Fri, Apr 1, 2016 at 10:28 AM, Ewen Cheslack-Postava <e...@confluent.io>
> wrote:
>
> > On Fri, Apr 1, 2016 at 10:22 AM, Gwen Shapira <g...@confluent.io> wrote:
> >
> > > I have two concerns with the proposal as it is:
> > >
> > > 1. Having an API that publishes protocol is useless for clients if
> > > developers don't bump the API when they should.
> > > I would like to see good documentation on when protocols are bumped
> and a
> > > proposal on how this will be automatically validated to the extent
> > possible
> > > (and to what extent are we still at risk of accidental breakage).
> > > Even if we don't implement all of this at first pass, I want to know
> > which
> > > direction we are going in order to solve the client compatibility
> issue.
> > >
> > > 2. In addition to third-party clients, there are stream processing
> > > frameworks who use the Java client we publish as their client and would
> > > also like to enjoy the same compatibility benefits C and Python clients
> > > will enjoy. It will be very silly if Apache Kafka clients are the worst
> > > clients out there from compatibility POV. The KIP can be implemented in
> > > parts, but I really want to see an effort to build the Java client
> > > compatibility into the KIP and if possible into the release too.
> > >
> >
> > I wouldn't conflate those two things. Changing the compatibility approach
> > of the Java clients could easily be another KIP (and probably a large
> one,
> > too). There are already high quality, well maintained clients trying to
> use
> > a different approach and this addresses their needs. Blocking the entire
> > ecosystem on the Java client seems problematic.
> >
> > That said, agreed that it would be bad for the Java client to have the
> > worst compatibility story.
> >
> > -Ewen
> >
> >
> > >
> > > Gwen
> > >
> > > On Thu, Mar 31, 2016 at 2:51 PM, Jason Gustafson <ja...@confluent.io>
> > > wrote:
> > >
> > > > Bumping this thread. I talked with Ashish and Magnus about this KIP
> > > offline
> > > > and I'm gradually coming over. The new API actually stands by itself
> > > > outside of the discussion about whether the client should support
> > > backwards
> > > > compatibility or not. For the Java client, we could continue to
> support
> > > the
> > > > current compatibility approach in which the client supports only
> > brokers
> > > > with the same version or greater. In that case, we would use this API
> > > only
> > > > to assert that the current API versions are all supported, and raise
> an
> > > > exception if they are not. This gives us the capability going forward
> > to
> > > > detect when the client is talking to an older broker, which we don't
> > have
> > > > right now. This check should be straightforward, so we could do it
> now,
> > > > which would resolve some of the uneasiness about having an unused
> > feature
> > > > which we depended on other clients to test for us. Does that make
> sense
> > > or
> > > > not?
> > > >
> > > > -Jason
> > > >
> > > > On Thu, Mar 17, 2016 at 4:06 PM, Ashish Singh <asi...@cloudera.com>
> > > wrote:
> > > >
> > > > > We have proposed and discussed majorly three approaches so far,
> there
> > > > were
> > > > > many minor versions with small variations. Comparing them really
> > > > requires a
> > > > > side by side proposal and their pros/cons, and I agree with others
> > that
> > > > > this has been lacking in the KIP. We just updated the KIP with
> > > following
> > > > > details.
> > > > >
> > > > > 1. Provide proposed changes in all the three proposals we have
> > > discussed
> > > > so
> > > > > far. Except the current proposal, these proposals are in rejected
> > > > > alternatives.
> > > > > 2. Provide reasoning on why the rejected proposals were rejected.
> > > > > 3. Add scenarios for all of these proposals from a client developer
> > and
> > > > > core Kafka developer point of view.
> > > > >
> > > > > As we are really close to 0.10 deadline, a quick round of voting
> will
> > > > > really help. If you really do not like the idea, please feel free
> to
> > > say
> > > > > so. If the vote fails for the current proposal, it can at lease
> > provide
> > > > > recommendations that we should consider for next version of
> proposal
> > > and
> > > > > put it up for vote again for next release. However, as stated
> earlier
> > > by
> > > > > multiple people having this ASAP will be awesome.
> > > > >
> > > > > On Thu, Mar 17, 2016 at 3:29 PM, Dana Powers <
> dana.pow...@gmail.com>
> > > > > wrote:
> > > > >
> > > > > > On Thu, Mar 17, 2016 at 1:42 PM, Gwen Shapira <g...@confluent.io
> >
> > > > wrote:
> > > > > >
> > > > > > > "I think I would make this approach work by looking at the
> > released
> > > > > > server
> > > > > > > version documentation for each version that I am trying to
> > support
> > > > and
> > > > > > test
> > > > > > > against*, manually identify the expected "protocol vectors"
> each
> > > > > > supports,
> > > > > > > store that as a map of vectors to "broker versions", check each
> > > > vector
> > > > > at
> > > > > > > runtime until I find a match, and write code compatibility
> checks
> > > > from
> > > > > > > there."
> > > > > > >
> > > > > > > How is this better than a global version ID?
> > > > > >
> > > > > >
> > > > > > As a client developer, it seems roughly the same. I think it
> > probably
> > > > > > avoids the server development workflow issues, and possibly the
> > need
> > > to
> > > > > > agree on semantics of the global version ID? But others surely
> are
> > > more
> > > > > > qualified than me to comment on that part.
> > > > > >
> > > > > > -Dana
> > > > > >
> > > > >
> > > > >
> > > > >
> > > > > --
> > > > >
> > > > > Regards,
> > > > > Ashish
> > > > >
> > > >
> > >
> >
> >
> >
> > --
> > Thanks,
> > Ewen
> >
>
>
>
> --
>
> Regards,
> Ashish
>

Reply via email to