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