I have a minor preference toward modifying the API.
Because it is source-compatible and protocol-compatible, the only case that
will break is if you use client code from one version but run with a JAR
from a different version, which sounds like a pretty weird setup in general.

Its not a strong preference though, I'll vote for either.

On Wed, Jan 27, 2016 at 1:35 PM, Pierre-Yves Ritschard <p...@spootnik.org>
wrote:

>
> Hi Jason,
>
> Thanks for weighing in on this. Here's my take:
>
> - I initially opted for overloading, but this met resistance (most
>   vocally from Jay Kreps). I don't have strong feelings either way (I
>   tend to prefer the current proposal without overloading but would
>   understand the need to add it back).
> - The feedback I got around me (from an admittedly small population
>   sample) is that most people are thinking of migrating to 0.9.0.0. I
>   would wager that a very large majority of users are running production
>   apps on 0.8 clients and would thus not be impacted. The very recent
>   availability of the client libs would also indicate that those having
>   already switched to 0.9.0.0 client libs have a capacity to iterate fast.
>
> Jason Gustafson writes:
>
> > Hi Pierre,
> >
> > Thanks for your persistence on this issue. I've gone back and forth on
> this
> > a few times. The current API can definitely be annoying in some cases,
> but
> > breaking compatibility still sucks. We do have the @Unstable annotation
> on
> > the API, but it's unclear what exactly it means and I'm guessing most
> users
> > haven't even noticed it. In the end, I feel we should try harder to keep
> > compatibility even if it means keeping some of the annoying usage. As an
> > alternative, maybe we could do the following:
> >
> > 1. For subscribe() and assign(), change the parameter type to collection
> as
> > planned in the KIP. This is at least source-compatible, so as long as
> users
> > compile against the updated release, there shouldn't be any problems.
> >
> > 2. Instead of changing the signatures of the current pause/resume/seek
> > APIs, maybe we can overload them. This keeps compatibility and supports
> the
> > more convenient collection usage, but the cost is some API bloat.
> >
> > In my opinion, the slightly increased surface area from overloading is
> > worth the cost of keeping compatibility. Overloading is very common in
> Java
> > APIs, so there's no potential for confusion, and it has basically no
> > maintenance overhead. However, I know others already expressed opposition
> > to this, so if it's not agreeable, then I'm probably more inclined to
> keep
> > the current API. That said, it's not a strong preference. If the
> consensus
> > is to allow the breakage now, it doesn't seem like too big of a deal for
> > users to update their code. It might be early enough that most users
> > haven't finished (or perhaps haven't even started) migrating their code
> to
> > use the new consumer.
> >
> > What do you think?
> >
> > Thanks,
> > Jason
> >
> >
> > On Tue, Jan 26, 2016 at 11:52 AM, Pierre-Yves Ritschard <
> p...@spootnik.org>
> > wrote:
> >
> >>
> >> I updated the KIP accordingly.
> >>
> >> Cheers,
> >>   - pyr
> >>
>
>

Reply via email to