Which changes break compatibility in the 0.10.1 branch? It would be good to
fix before the release goes out.

Ismael

On 29 Nov 2016 9:09 pm, "Ignacio Solis" <iso...@igso.net> wrote:

> Some of the changes in the 0.10.1 branch already are not bug fixes. Some
> break compatibility.
>
> Having said that, at this level we should maintain a stable API and leave
> any changes for real version bumps.  This should be only a bugfix release.
>
> Nacho
>
>
>
>
> On Tue, Nov 29, 2016 at 8:35 AM, Ismael Juma <ism...@juma.me.uk> wrote:
>
> > I disagree, but let's discuss it another time and in a separate thread.
> :)
> >
> > Ismael
> >
> > On Tue, Nov 29, 2016 at 4:30 PM, radai <radai.rosenbl...@gmail.com>
> wrote:
> >
> > > designing kafka code for stable extensibility is a worthy and noble
> > cause.
> > > however, seeing as there are no such derivatives out in the wild yet i
> > > think investing the effort right now is a bit premature from kafka's
> pov.
> > > I think its enough simply not to purposefully prevent such extensions.
> > >
> > > On Tue, Nov 29, 2016 at 4:05 AM, Ismael Juma <ism...@juma.me.uk>
> wrote:
> > >
> > > > On Sat, Nov 26, 2016 at 11:08 PM, radai <radai.rosenbl...@gmail.com>
> > > > wrote:
> > > >
> > > > > "compatibility guarantees that are expected by people who subclass
> > > these
> > > > > classes"
> > > > >
> > > > > sorry if this is not the best thread for this discussion, but I
> just
> > > > wanted
> > > > > to pop in and say that since any subclassing of these will
> obviously
> > > not
> > > > be
> > > > > done within the kafka codebase - what guarantees are needed?
> > > > >
> > > >
> > > > I elaborated a little in my other message in this thread. A simple
> and
> > > > somewhat contrived example: `ConsumerRecord.toString` calls the
> `topic`
> > > > method. Someone overrides the `topic` method and it all works as
> > > expected.
> > > > In a subsequent release, we change `toString` to use the field
> directly
> > > > (like it's done for other fields like `key` and `value`) and it will
> > > break
> > > > `toString` for this user. One may wonder: why would one override a
> > method
> > > > like `topic`? That is a good question, but part of the exercise is
> > > deciding
> > > > how we approach these issues. We could make the methods final and
> > > eliminate
> > > > the possibility, we could document it so that users can choose to do
> > > weird
> > > > things if they want, etc.
> > > >
> > > > Another thing that is usually good to think about is the expectation
> > for
> > > > `equals` and `hashCode`. What if subclasses implement them to have
> > value
> > > > semantics instead of identity semantics. Is that OK or would it break
> > > > things?
> > > >
> > > > Designing for implementation inheritance is generally complex
> although
> > > for
> > > > simple "record" like classes, it can be easier by following a few
> > > > guidelines.
> > > >
> > > > Ismael
> > > >
> > >
> >
>
>
>
> --
> Nacho - Ignacio Solis - iso...@igso.net
>

Reply via email to