btw. is LinkedIn no longer running from trunk? I'm not used to
LinkedIn employees requesting specific patches to be included in a
bugfix release.

Any discussion on the content of any release is obviously welcome, I'm
just wondering if there was a change in policy.

On Tue, Nov 29, 2016 at 2:17 PM, Ismael Juma <ism...@juma.me.uk> wrote:
> OK, so it seems like there are no changes that break compatibility in the
> 0.10.1 branch since we offer no compatibility guarantees for logging
> output. That's good. :)
>
> About the removal of final, it happened in trunk and it doesn't seem like
> anyone is still asking for it to be included in the 0.10.1 branch so it is
> indeed not important for this bug fix release (I thought we had established
> that quite a while ago).
>
> Ismael
>
> On Tue, Nov 29, 2016 at 9:35 PM, Ignacio Solis <iso...@igso.net> wrote:
>
>> Sorry, that was a hasty reply.  There are also various logging things that
>> change format. This could break parsers.
>>
>> None of them are important, my only argument is that the final keyword
>> removal is not important either.
>>
>> Nacho
>>
>>
>> On Tue, Nov 29, 2016 at 1:25 PM, Ignacio Solis <iso...@igso.net> wrote:
>>
>> > https://git-wip-us.apache.org/repos/asf?p=kafka.git;a=commit;h=
>> > 10cfc1628df024f7596d3af5c168fa90f59035ca
>> >
>> > On Tue, Nov 29, 2016 at 1:24 PM, Ismael Juma <ism...@juma.me.uk> wrote:
>> >
>> >> 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
>> >> >
>> >>
>> >
>> >
>> >
>> > --
>> > Nacho - Ignacio Solis - iso...@igso.net
>> >
>>
>>
>>
>> --
>> Nacho - Ignacio Solis - iso...@igso.net
>>



-- 
Gwen Shapira
Product Manager | Confluent
650.450.2760 | @gwenshap
Follow us: Twitter | blog

Reply via email to