Also, just wanted to add that I get that people are impatient with this.
It's super frustrating to kind of think on a plan for a chunk of time
without checking in any code. But I do think we only just got to a workable
proposal so most of the delay hasn't been process but actual genuine
iteration on the proposal. And I do believe that even though it is a bit
maddening to do so much up-front thinking there are a couple of areas where
it is really the faster approach. I really think protocol design is one of
these areas, and compatibility models are another, which I guess makes
protocol support for compatibility the perfect storm of bike shedding. :-)

-Jay

On Fri, Apr 1, 2016 at 11:22 AM, Jay Kreps <j...@confluent.io> wrote:

> Hey Ewen, with protocol design I actually do think good is the enemy of
> perfect (not sure if that makes sense but I think you get what I mean).
> Your comment seemed to be along the lines of "this isn't very good, but
> let's do something". Can you elaborate on what you think we should be
> doing?
>
> The only two things I'd add to the comments so far:
> 1. We will probably live with this scheme for five years if we make this
> change. Let's for the love of god not do something half assed. It would be
> far far better not to do anything yet and come at this when we have the
> time to think it through, then to do something that doesn't make sense.
> 2. As Gwen says unless/until someone actually sees this through--gets the
> docs updated, implements the java client support, etc. we will be in a
> worse situation than we currently are. Is anyone actually signing up for
> that? I do think these things are coupled in actually getting us to a
> better place though they are separate chunks of work.
>
> I get that people want to see forward motion here but I really think this
> is an area where thoughtful beats fast. If we do something half-assed we
> first do the work of converting the world to that, then the work of undoing
> it and doing the thing we should have originally done so it really doesn't
> speed things up.
>
> -Jay
>
> 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