hi Matthias,

I apologize, I used the wrong word in my previous response. The PR 
"deliberately" removed the public API, but it was an "oversight" that we 
weren't aware of the "3 prior releases" rule.[0]

To simplify the upgrade path, I suggest reverting this change in 4.x and 
creating a ticket to track its removal in 5.0..

[0] https://github.com/apache/kafka/pull/17412#issuecomment-2693221650

Best,
Chia-Ping

On 2025/03/02 20:35:27 Chia-Ping Tsai wrote:
> > For this case, what was the reason that the 3-prior-release rule was
> ignored?
> 
> According to KIP-970 (
> https://cwiki.apache.org/confluence/display/KAFKA/KIP-970%3A+Deprecate+and+remove+Connect%27s+redundant+task+configurations+endpoint),
> it seems the main reason to avoid "a bit of a maintenance burden to have
> two different endpoints for the same purpose".
> 
> Best,
> Chia-Ping
> 
> 
> Matthias J. Sax <mj...@apache.org> 於 2025年3月3日 週一 上午3:57寫道:
> 
> > >> deliberately.
> >
> > For this case, what was the reason that the 3-prior-release rule was
> > ignored?
> >
> >
> > -Matthias
> >
> > On 3/1/25 11:29 PM, Chia-Ping Tsai wrote:
> > > 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