hi

> If this Connect case is the only one that deviates from that rule, I would
recommended reverting it. But if there are many more cases, we may need to
look into them in more detail.

I briefly checked the commit history, and this is the only one that needs
to be highlighted. Fortunately, it is easy to revert.

> why was it removed? Oversight (ie, accidentally
too early) or deliberately?

deliberately.

I have left a common on the PR (
https://github.com/apache/kafka/pull/17412#issuecomment-2692600494)

Best,
Chia-Ping


Matthias J. Sax <mj...@apache.org> 於 2025年3月2日 週日 上午6:32寫道:

> Don't have a strong opinion about the Connect case.
>
> I guess the question is: why was it removed? Oversight (ie, accidentally
> too early) or deliberately? Also, what is the impact if we keep the API
> and revert the removal?
>
> IMHO, the 3-releases-rule can have exceptions, if there are good reason
> for it. I just don't have enough context about the change to judge.
>
>
>
> >> One more thing, 3.7 was released in Feb 2024 and hence it will be more
> than
> >> 12 months by the time 4.0 is released. Technically, it would be ok to
> >> remove APIs deprecated in 3.7.
>
> Not sure if this is a strong argument. We cannot time releases totally
> accurately, so the 3-prior-releases rule should be the "source of truth"
> IMHO, that just practically translated to "about 1 year". But as I said
> above, I also don't think we need to be dogmatic about it.
>
>
>
> -Matthias
>
> On 3/1/25 8:37 AM, Ismael Juma wrote:
> > One more thing, 3.7 was released in Feb 2024 and hence it will be more
> than
> > 12 months by the time 4.0 is released. Technically, it would be ok to
> > remove APIs deprecated in 3.7.
> >
> > Ismael
> >
> > On Sat, Mar 1, 2025, 8:34 AM Ismael Juma <m...@ismaeljuma.com> wrote:
> >
> >> Hi Chia-Ping,
> >>
> >> Is this Connect removal the only one that did not meet the stated
> >> requirement?
> >>
> >> We do indeed aim not to remove APIs deprecated within the last 12 months
> >> before the next major release, but I'm not sure how strictly this is
> >> followed (since it's not enforced).
> >>
> >> If this Connect case is the only one that deviates from that rule, I
> would
> >> recommended reverting it. But if there are many more cases, we may need
> to
> >> look into them in more detail.
> >>
> >> Ismael
> >>
> >> On Fri, Feb 28, 2025, 7:10 PM Chia-Ping Tsai <chia7...@apache.org>
> wrote:
> >>
> >>> hi Matthias
> >>>
> >>> thanks for your updates. it looks great and readable.
> >>>
> >>> Regarding API compatibility, we state "we only provide API backward
> >>> compatibility for version 3.7, 3.8, and 3.9" However, within Connect
> APIs,
> >>> we have removed a public API that was deprecated by 3.7 [0][1].
> >>>
> >>> Since this KIP will likely include Connect APIs, it's important to
> >>> discuss this now. We could: 1) add extra descriptions to highlight the
> >>> difference for Connect APIs, or 2) revert the commit that removed the
> >>> public API for consistent documentation.
> >>>
> >>> WDYT?
> >>>
> >>> [0]
> >>>
> https://github.com/apache/kafka/commit/1c8bb61a43d3ad1fd7a10eb3947342ceba783c4e
> >>> [1]
> >>>
> https://github.com/apache/kafka/commit/4f1688742e75a147741fbdc307c5e85d2addb811
> >>>
> >>> Best,
> >>> Chia-Ping
> >>>
> >>> On 2025/02/28 22:44:22 "Matthias J. Sax" wrote:
> >>>> Thanks for pointing me to test Ismael. Glad to see I just missed it,
> >>> and
> >>>> that we indeed have a test for it.
> >>>>
> >>>>
> >>>>>> Feel free to edit the KIP directly – I'm totally fine with it.
> >>> Thanks a lot!
> >>>>
> >>>> Thanks Kuan-Po!
> >>>>
> >>>> I did update the wiki page and added more details. I did follow
> Bruno's
> >>>> suggestion, to be a little bit more elaborate, as the KIP page is
> >>> mainly
> >>>> for Kafka maintainers. -- We might want to do it differently in user
> >>>> facing docs, but detailed doc updates seems to be out-of-scope for the
> >>>> KIP discussion and we can take it on the corresponding PR, to simplify
> >>>> it further.
> >>>>
> >>>>
> >>>> I did keep the 2.8.x bridge release for KS for now.; we can still
> >>> change
> >>>> the recommendation and skip 2.8.x as bridge release of course, if we
> >>>> think it would be better for users.
> >>>>
> >>>>
> >>>> Curious the get your feedback.
> >>>>
> >>>>
> >>>> -Matthias
> >>>>
> >>>>
> >>>> On 2/28/25 8:15 AM, Kuan Po Tseng wrote:
> >>>>> Hi Matthias,
> >>>>>
> >>>>> Feel free to edit the KIP directly – I'm totally fine with it. Thanks
> >>> a lot!
> >>>>>
> >>>>> Best,
> >>>>> Kuan-Po Tseng
> >>>>>
> >>>>> On 2025/02/28 07:35:10 "Matthias J. Sax" wrote:
> >>>>>> Thanks all. I am happy that we are making progress to close this
> out.
> >>>>>>
> >>>>>> As mentioned in my (long) email last Friday, I also think that the
> >>> KIP
> >>>>>> makes a lot of implicit assumptions, and it might benefit from begin
> >>>>>> more explicit, even explaining things that are "set in stone"
> >>> already,
> >>>>>> and the KIP does not change them (like API deprecation timelines and
> >>>>>> guarantees). But as Bruno said, it would help a lot to make it
> >>> easier to
> >>>>>> understand the KIP.
> >>>>>>
> >>>>>> Only a very small number of people seems to fully understand all the
> >>>>>> nuances, and it took quite a while to collect and curate all the
> >>> cases,
> >>>>>> to shape this KIP... And we know that a lot of people actually read
> >>>>>> KIPs, and the title for KIP-1124 is or sure click-bait...
> >>>>>>
> >>>>>> I am also happy to edit the wiki page directly if that's ok with
> >>> Kuan,
> >>>>>> to add background information that I believe is missing and
> >>> important.
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> My overall understanding of the state of the KIP, ie, its actual
> >>> content
> >>>>>> seems to be, that there is a high level agreement, and the content
> of
> >>>>>> the KIP is ok.
> >>>>>>
> >>>>>> The only open question seems to be, if we want to recommend `2.8.x`
> >>> as a
> >>>>>> bridge release for Kafka Streams or not. As said in my email on
> >>> Friday,
> >>>>>> I am personally ok either way, with a preference to add `2.8.x` as
> >>>>>> bridge release, as it simplifies updating the code by avoiding
> >>>>>> compilation errors. With a 2.8.x bridge release, KS application code
> >>>>>> would _always_ compile, and the JavaDocs help a lot to guide users
> >>> how
> >>>>>> to migrate off deprecated APIs. -- With a direct upgrade from older
> >>>>>> versions to 3.9.x, code does not compile, and there is no guidance
> as
> >>>>>> the old methods (and corresponding JavaDocs) are already removed,
> >>> making
> >>>>>> it significant harder for user to update their code and make it
> >>> compile
> >>>>>> again.
> >>>>>>
> >>>>>> In the end, we would only _recommend_ 2.8.x as a bridge release to
> >>>>>> users, and there won't be any claim that an direct upgrade to 3.9.x
> >>> is
> >>>>>> not supported. If one wants to do this, it's tested, and ok. Knock
> >>>>>> yourself out -- there is for sure apps out there, that are just a
> >>> simple
> >>>>>> `builder.stream(...).filter(...).to(...)` the there won't be an API
> >>>>>> incompatibility issues.
> >>>>>>
> >>>>>> But I don't think it would be wise to _recommend_ a direct upgrade
> to
> >>>>>> 3.9.x for the reasons stated, as many apps are more complex.
> >>>>>>
> >>>>>> Thoughts?
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> About testing: I did look into the system tests, and it seems we
> >>>>>> actually don't really have a real upgrade test for clients, ie, a
> >>> test
> >>>>>> that is running an consumer or producer with some older versions,
> and
> >>>>>> executes a rolling bounce to upgrade the app...
> >>>>>>
> >>>>>> But maybe such a test is not necessary for clients (compare to Kafka
> >>>>>> Streams), and the existing client-broker forward/backward
> >>> compatibility
> >>>>>> test are good enough? (At least in the last 10 years, it seems this
> >>> test
> >>>>>> coverage was sufficient?)
> >>>>>>
> >>>>>> I want to point out though that I agree with Bruno: If we assume
> that
> >>>>>> the client-broker compatibility tests are sufficient to verify
> client
> >>>>>> upgrades, we do effectively/implicitly test upgrading 2.0 (and older
> >>>>>> clients) to 4.0 using 3.9 and older brokers. These test coverage
> does
> >>>>>> not exist in a single branch so, but test from different branches
> >>>>>> combined, implicitly cover this. Nevertheless, is it tested.
> >>>>>>
> >>>>>> So it seems both Bruno and Ismael are right, depending how you look
> >>> at
> >>>>>> the problem. In any case, even if we test such an upgrade
> >>> implicitly, I
> >>>>>> agree that it's good to exclude these upgrades officially as
> >>> unsupported.
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> -Matthias
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> On 2/27/25 6:10 AM, Ismael Juma wrote:
> >>>>>>> Hi Bruno,
> >>>>>>>
> >>>>>>> A comment below.
> >>>>>>>
> >>>>>>> On Thu, Feb 27, 2025, 1:20 AM Bruno Cadonna <cado...@apache.org>
> >>> wrote:
> >>>>>>>
> >>>>>>>> BC2:
> >>>>>>>> Another aspect that confuses me in the KIP is the bridge version
> >>> for
> >>>>>>>> clients. If my broker version is 3.9.x, I can do a direct upgrade
> >>> from
> >>>>>>>> 1.0.x to 4.0.x (let apart the Java API compatibility mentioned
> >>> above).
> >>>>>>>> The 4.0.x release tests 4.0.x clients against 3.9.x brokers and
> the
> >>>>>>>> 3.9.x release tests 1.0.x clients against 3.9.x brokers. It is not
> >>> clear
> >>>>>>>> to me why we need a bridge release in this case.
> >>>>>>>>
> >>>>>>>
> >>>>>>> We don't test client upgrades from 1.0.x to 4.0.x. They may work,
> >>> but it's
> >>>>>>> untested. Again, we are focusing on simplicity versus flexibility
> >>> for edge
> >>>>>>> cases. The number of people upgrading from 1.0 to 4.0 is very low
> >>> (if not
> >>>>>>> zero).
> >>>>>>>
> >>>>>>> That's why I still think the simple description I provided in my
> >>> other
> >>>>>>> message is the way to go
> >>>>>>>
> >>>>>>> Deprecated APIs may or may not affect users, so that has to be
> >>> evaluated on
> >>>>>>> a case by case basis.
> >>>>>>>
> >>>>>>> Ismael
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>
> >>>>
> >>>
> >>
> >
>
>

Reply via email to