Hi Josep,
Thanks for creating this KIP. It looks like a good proposal. A few comments.

AS1: I don’t think features should be able to progress between the levels in
patch releases. Yes, there may be some bug fixes which mean that
the usability of a feature has progressed markedly, but given that
Kafka releases are so frequent, it doesn’t seem too much of a burden
making features wait until the next minor release to progress to the
next level.

AS2: While I think that the Graduation Steps Log idea is a good addition to
these more complicated KIPs, but I don’t like release managers having
to visit all of the KIPs to see what the state of play is. Each release has
a release plan on the wiki which people update to add in the KIPs.
I would prefer the KIP authors to use that as the way to signal to the
release manager that their KIPs have attained a particular level.
The Graduation Steps Log is more for the KIP reader to find out when
the interesting feature they are reading about was actually delivered
in a simple way. The KIP author would have to keep these in sync,
which is quite a small burden for something that only changes a few times
at most in the life of a KIP.

AS3: For KIPs which end up with some pieces being completed before others,
it would be simple to document the sub-features which were delivered
and graduated at different releases without being too prescriptive and
inventing sub-KIPs or whatever.

AS4: I suggest adding to the KIP some statement about feature versions,
configurations and other switches at the various levels. For example,
if a Kafka feature such as “transaction.version” is used to enable a KIP,
I suppose it would be introduced at level 3 or later, and switched on
by default at level 4. The same with unstable APIs - I supposed at
levels 1 and 2, if there are new RPCs defined, I need to use
`unstable.api.versions.enable` on the broker to enable them.

AS5: I wonder whether we need to avoid “features” here because it
already has a specific meaning in Kafka (bin/kafka-features.sh and
so on). Maybe this KIP should be “Graduation Steps for KIPs”.

AS6: Typo: Level 3 says “This level is optional, and a feature must not go
through it”. This should probably say “does not need to”.

AS7: I suggest “Incubation” for level 1.

Thanks,
Andrew


> On 22 Aug 2024, at 08:40, Josep Prat <josep.p...@aiven.io.INVALID> wrote:
>
> Hi Matthias,
>
> Thanks for your feedback!
> - Feedback for level 1:
> Yes, indeed it is almost superfluous, but I decided to add it for
> completeness. A KIP in level 1 might have some PRs that are merged, but
> it's not yet functional nor complete. For example, only the interfaces have
> been added.
> We could also remove level 1, but then KIPs would start without a level
> assigned which is implicitly a level in my opinion.
> The reason for level 1 in my opinion is to ease the work of the release
> manager in understanding if worked KIPs are to be included in the release
> notes and in the list of released KIPs.
>> This seems to be little bit confusing. If it's not meant to be used
> by anybody, should it not be feature flagged and disable/hidden from users
> completely?
> Yes, this is correct, most of the time they would be behind a feature flag,
> or they will be new code paths not reachable yet. Let's take KIP-853 for
> example, at the moment of Kafka 3.8.0 release, only the first 6 tasks under
> https://issues.apache.org/jira/browse/KAFKA-14094 were completed. The
> feature was not usable and not visible for our users. Thus, level 1.
>
>> In the end it means, a release does just not contain anything about it
> (even if there might be code that was merged), and the KIP should not be
> mentioned in the release notes at all, and thus we don't need a name as the
> feature is not graduated into any (useful) level yet.
> You are totally correct, features in level 1 should not be mentioned in the
> release notes. Effectively, the release doesn't contain this KIP, even if
> technically it contains work on this KIP.
>
> The way I understand it, dropping this level from the hierarchy will mean
> that KIPs start at no level, and at one point in time go to level X. This
> effectively means that KIPs start at an implicit level. Maybe calling it
> level 0 helps to better represent that this is the default entry point.
>
> - Feedback for term usable
> Yes this is a good point. But given the variety of features we create, I
> don't want to be overly prescriptive and then realize that we don't
> represent some in there. If we borrow terms from the industry this could be
> "Minimum Usable Product"[1]. Usable for a KIP means that it contains at
> least the minimum amount of functionality that makes it usable. What usable
> means it varies from KIP to KIP. Let's see KIP-853 again,
> https://issues.apache.org/jira/browse/KAFKA-14094 originally contained all
> the work needed for the KIP. After a while, the KIP drivers (Jose and
> Colin) agreed to split the tasks in 2 groups, the tasks now present under
> KAFKA-14094 and the newly created
> https://issues.apache.org/jira/browse/KAFKA-17241.
> I'm open to suggestions on how we can clarify this better, without being
> too prescriptive and then finding that developers can't relate to it.
>
> - Feedback for partial releases
> This is a very good point. This KIP mostly equates features to KIPs, which
> at some high level of abstraction probably holds true. But you are
> definitely right, bigger KIPs that define a new capability contain
> different features. These graduation steps could apply to any of the
> sub-features of a KIP.
> The bigger and more complex these KIPs are, the more we might want to
> logically break them down in the KIP itself. Maybe these KIPs are in the
> end sub-KIPs in a KIP, and could each of them follow the same graduation
> steps defined here. Also if we think about release announcements, what did
> we say about these KIPs that only some parts were completed in a release?
> From the list you shared KIP-925: Rack aware task assignment in Kafka
> Streams
> <https://cwiki.apache.org/confluence/display/KAFKA/KIP-925%3A+Rack+aware+task+assignment+in+Kafka+Streams>
> seems to be partially released in 3.6 and then fully released in 3.7.
> However, I can't find any trace of KIP-925 in the Kafka 3.6 blog
> announcement. Would it reflect the reality to say that KIP-925 had
> different "behaviours" that needed to be implemented and some made it
> completely (level 4) on to Kafka 3.6, while the last one made it (also
> level 4) only in Kafka 3.7?
> We could potentially state that KIPs that contain multiple features should
> state those clearly, and the graduation steps would apply to these instead
> of the KIP itself.
>
> - Feedback for KIPs that are never completed
> I guess this depends on each particular case but I would like for us to
> reflect on the situation itself. I think this is something we should
> address regardless of this KIP in question. If the features are deemed
> important for the KIP, we should keep the KIP "open" until this is done.
> If we would agree that big KIPs can list a collection of features and those
> are the ones graduating, would then this solve this problem? A KIP will
> have some of the features marked at level 4 while others would be at level
> 1 (or no level depending on outcome of prior point).
>
> - Feedback for when to reach new levels
> I initially thought the same, level changes can only be triggered in minors
> and majors. However, I was thinking that if everything needed for the
> feature itself could be done in patch releases why couldn't the graduation
> step change in patch releases as well.
> For example, let's imagine a fictitious KIP that is on level 3. All public
> API changes have been completed already and their implementation is there.
> The KIP drivers wanted to seek validation in real scenarios that's why the
> feature is at level 3 and not 4. Let's keep imagining that they get
> multiple satisfactory reports from the community and a couple of reports
> that indicate a performance degradation occurs under circumstance X. This
> is fixed and released in the next patch version. Should we be able to
> graduate this feature to level 4 in this patch version?
> To be honest if people have concerns about this, I'm fine by leaving this
> possibly corner case out and only allow graduation changes on major and
> minors.
>
>
> Let me know what you think
>
> Best,
>
> [1]: https://www.sarvika.com/2021/06/17/mvp-mlp-mup/ contains some
> explanation and comparison of MVP vs MLP vs MUP.
>
> On Thu, Aug 22, 2024 at 7:07 AM Matthias J. Sax <mj...@apache.org> wrote:
>
>> Thanks Josep. Couple of comments/questions:
>>
>> For Level 1, the KIP says:
>>
>>> The feature is not yet stable and it is not meant to be used by end
>> users.
>>
>> This seems to be little bit confusing. If it's not meant to be used by
>> anybody, should it not be feature flagged and disable/hidden from users
>> completely?
>>
>> Of course, it should not be used in production, but isn't the goal that
>> users do try it out and provide early feedback about the feature?
>> However, this is described on Level 2. So I am really not sure what
>> Level 1 is supposed to be, or why we would need it as an public
>> "contract". Later the KIP say
>>
>>> Implicitly when a KIP is approved and development starts, the feature is
>> effectively in "Level 1"
>>
>> Which really means to me, we should drop this level from the "public
>> hierarchy", as it won't add much (any?) value?
>>
>> The propose name "In Development" indicates the same thing to me. In the
>> end it means, a release does just not contain anything about it (even if
>> there might be code that was merged), and the KIP should not be
>> mentioned in the release notes at all, and thus we don't need a name as
>> the feature is not graduated into any (useful) level yet.
>>
>>
>> I also find the term "usable" very fuzzy. Can we add more color to it?
>>
>>
>> Another thought: we did have cases for KS for which a KIP was only
>> partially implemented in a release, but the completed parts where fully
>> functional, and thus in stage 4. How do we intent to handle this going
>> forward? I would find it rather odd to only release something as stage 2
>> just to follow the process... (as a matter of fact, we still have some
>> KIPs which never got fully completed but are pending completion for
>> years now, and might frankly never get completed)
>>
>> Cf
>>
>> https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Streams+KIP+Overview
>> for examples
>>
>>
>>
>>> A feature can be promoted to a "higher" level at any release (including
>> patch releases)
>>
>> Not sure if this makes sense? To me, a new level can only be reached in
>> a major or minor release?
>>
>>
>>
>>
>> -Matthias
>>
>> On 8/20/24 6:21 AM, Josep Prat wrote:
>>> Hi all,
>>>
>>> I added a new section in the KIP to specify how to change the graduation
>>> levels for a feature.
>>>
>>> Best!
>>>
>>> On Mon, Aug 19, 2024 at 4:01 PM Josep Prat <josep.p...@aiven.io> wrote:
>>>
>>>> Hi TengYao and Chia-Ping,
>>>>
>>>> I updated the KIP page with examples.
>>>>
>>>> Best,
>>>>
>>>> On Mon, Aug 19, 2024 at 2:39 PM TengYao Chi <kiting...@gmail.com>
>> wrote:
>>>>
>>>>> Hi Josep
>>>>>
>>>>> Thanks for the explanation. I see your point.
>>>>> It makes sense to keep these levels distinct for larger initiatives
>> like
>>>>> KIP-853. I agree with your perspective.
>>>>>
>>>>> Best regards,
>>>>> TengYao
>>>>>
>>>>> Josep Prat <josep.p...@aiven.io.invalid> 於 2024年8月19日 週一 下午6:36寫道:
>>>>>
>>>>>> Hi TengYao,
>>>>>>
>>>>>> I get your point. I think smaller features definitely go too quickly
>>>>>> through stages to even acknowledge the change.
>>>>>> However, I would still think it's necessary to have these 2 levels
>>>>>> separated when it comes to bigger feature initiatives. The biggest use
>>>>> case
>>>>>> I see right now is to signal to the release manager (and the
>> community)
>>>>> if
>>>>>> a feature is usable or not yet usable. I believe the fact to become
>>>>> usable
>>>>>> for a feature is a big enough step to gain its own entity.
>>>>>>
>>>>>>
>>>>>> Let's take KIP-853 as an example. This KIP was approved and initially
>>>>> added
>>>>>> to the release plan for Kafka 3.8. At this point the feature would be
>> in
>>>>>> Level 1. By the time of the feature freeze the feature was still on
>>>>> Level
>>>>>> 1, so the release manager (who happened to be me) knew that the KIP
>>>>> would
>>>>>> not make it in this release and would need to be postponed to a future
>>>>>> release. After that, development on this feature continued and it was
>>>>>> declared to enter level 2 right in time for being in Kafka 3.9.
>>>>>>
>>>>>> Let me know what you think.
>>>>>>
>>>>>> Best,
>>>>>>
>>>>>> On Mon, Aug 19, 2024 at 8:51 AM TengYao Chi <kiting...@gmail.com>
>>>>> wrote:
>>>>>>
>>>>>>> Hello Josep,
>>>>>>> I think this KIP is a great addition to the community that we now
>>>>> have a
>>>>>>> crystal-clear definition for the state of a feature.
>>>>>>>
>>>>>>> In the current proposal, I think Level 1 is defined as the stage
>>>>> where a
>>>>>>> feature is "incomplete and unusable", while Level 2 represents a
>>>>> feature
>>>>>>> that is "usable but potentially incomplete".
>>>>>>> The distinction between these two levels might not always be clear,
>>>>>>> especially during the transition of a feature from "unusable" to
>>>>> "usable
>>>>>>> but incomplete".
>>>>>>>
>>>>>>> IMHO, to simplify the process and reduce confusion for both
>> developers
>>>>>> and
>>>>>>> users, I would suggest merging Level 1 and Level 2 into a single
>>>>> unified
>>>>>>> level.
>>>>>>> This merged level could cover the entire phase from when a feature is
>>>>>>> unstable to when it becomes usable but incomplete.
>>>>>>>
>>>>>>> WYDT?
>>>>>>>
>>>>>>> Best regards,
>>>>>>> TengYao
>>>>>>>
>>>>>>> Josep Prat <josep.p...@aiven.io.invalid> 於 2024年8月19日 週一 上午2:58寫道:
>>>>>>>
>>>>>>>> Hi Chia-Ping,
>>>>>>>>
>>>>>>>> As far as I can tell, Tiered Storage is still at level 3. I think
>>>>> the
>>>>>>>> intention would be to declare it level 4 in 4.0.0.
>>>>>>>> KIP-848 was in level 2 in Kafka 3.7. and it went level 3 in Kafka
>>>>> 3.8.
>>>>>>>> Level 4 features would be for example MirrorMaker2 for example. As
>>>>> far
>>>>>>> as I
>>>>>>>> understand the Docker image is level 4.
>>>>>>>>
>>>>>>>> Does that make sense? If so I can update the KIP with those
>>>>> examples.
>>>>>>>>
>>>>>>>> Best,
>>>>>>>>
>>>>>>>> ------------------
>>>>>>>> Josep Prat
>>>>>>>> Open Source Engineering Director, Aiven
>>>>>>>> josep.p...@aiven.io   |   +491715557497 | aiven.io
>>>>>>>> Aiven Deutschland GmbH
>>>>>>>> Alexanderufer 3-7, 10117 Berlin
>>>>>>>> Geschäftsführer: Oskari Saarenmaa, Hannu Valtonen,
>>>>>>>> Anna Richardson, Kenneth Chen
>>>>>>>> Amtsgericht Charlottenburg, HRB 209739 B
>>>>>>>>
>>>>>>>> On Sun, Aug 18, 2024, 21:46 Chia-Ping Tsai <chia7...@gmail.com>
>>>>> wrote:
>>>>>>>>
>>>>>>>>> hi Josep
>>>>>>>>>
>>>>>>>>> Although I didn't join the discussion before, the KIP is
>>>>> interesting
>>>>>>> and
>>>>>>>>> great to me.
>>>>>>>>>
>>>>>>>>> one small comment:
>>>>>>>>>
>>>>>>>>> Could you please add existent features as an example to each level
>>>>>> for
>>>>>>>> the
>>>>>>>>> readers who have poor reading (like me) ? For instance, I guess
>>>>> the
>>>>>> new
>>>>>>>>> coordinator is level 3? tiered storage is level 4?
>>>>>>>>>
>>>>>>>>> Best,
>>>>>>>>> Chia-Ping
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> Josep Prat <josep.p...@aiven.io.invalid> 於 2024年8月19日 週一
>>>>> 上午2:13寫道:
>>>>>>>>>
>>>>>>>>>> Hi all,
>>>>>>>>>> I want to start a discussion for KIP-1081: Graduation Steps for
>>>>>>>> Features.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>> https://cwiki.apache.org/confluence/display/KAFKA/KIP-1081%3A+Graduation+Steps+for+Features
>>>>>>>>>>
>>>>>>>>>> We already had a bit of a discussion here
>>>>>>>>>>
>>>>> https://lists.apache.org/thread/5z6rxvs9m0bro5ssmtg8qcgdk40882bz
>>>>>> and
>>>>>>>>> that
>>>>>>>>>> materialized into this KIP.
>>>>>>>>>>
>>>>>>>>>> I deliberately defined the graduation steps without giving them
>>>>> a
>>>>>>> name,
>>>>>>>>> so
>>>>>>>>>> we don't go bike-shedding there. There is a separate section for
>>>>>> the
>>>>>>>>> names
>>>>>>>>>> of each step. Also an alternative set of names. I'd like to get
>>>>>> some
>>>>>>>>>> feedback on the steps, and also on the names for the steps.
>>>>>>>>>>
>>>>>>>>>> Looking forward to your opinions, and hopefully only a tiny bit
>>>>> of
>>>>>>>>>> bike-shedding :)
>>>>>>>>>>
>>>>>>>>>> Best,
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> [image: Aiven] <https://www.aiven.io/>
>>>>>>>>>>
>>>>>>>>>> *Josep Prat*
>>>>>>>>>> Open Source Engineering Director, *Aiven*
>>>>>>>>>> josep.p...@aiven.io   |   +491715557497
>>>>>>>>>> aiven.io <https://www.aiven.io/>   |   <
>>>>>>>>> https://www.facebook.com/aivencloud
>>>>>>>>>>>
>>>>>>>>>>   <https://www.linkedin.com/company/aiven/>   <
>>>>>>>>>> https://twitter.com/aiven_io>
>>>>>>>>>> *Aiven Deutschland GmbH*
>>>>>>>>>> Alexanderufer 3-7, 10117 Berlin
>>>>>>>>>> Geschäftsführer: Oskari Saarenmaa, Hannu Valtonen,
>>>>>>>>>> Anna Richardson, Kenneth Chen
>>>>>>>>>> Amtsgericht Charlottenburg, HRB 209739 B
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> [image: Aiven] <https://www.aiven.io/>
>>>>>>
>>>>>> *Josep Prat*
>>>>>> Open Source Engineering Director, *Aiven*
>>>>>> josep.p...@aiven.io   |   +491715557497
>>>>>> aiven.io <https://www.aiven.io/>   |   <
>>>>> https://www.facebook.com/aivencloud
>>>>>>>
>>>>>>   <https://www.linkedin.com/company/aiven/>   <
>>>>>> https://twitter.com/aiven_io>
>>>>>> *Aiven Deutschland GmbH*
>>>>>> Alexanderufer 3-7, 10117 Berlin
>>>>>> Geschäftsführer: Oskari Saarenmaa, Hannu Valtonen,
>>>>>> Anna Richardson, Kenneth Chen
>>>>>> Amtsgericht Charlottenburg, HRB 209739 B
>>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> [image: Aiven] <https://www.aiven.io/>
>>>>
>>>> *Josep Prat*
>>>> Open Source Engineering Director, *Aiven*
>>>> josep.p...@aiven.io   |   +491715557497
>>>> aiven.io <https://www.aiven.io/>   |
>>>> <https://www.facebook.com/aivencloud>
>>>> <https://www.linkedin.com/company/aiven/>   <
>> https://twitter.com/aiven_io>
>>>> *Aiven Deutschland GmbH*
>>>> Alexanderufer 3-7, 10117 Berlin
>>>> Geschäftsführer: Oskari Saarenmaa, Hannu Valtonen,
>>>> Anna Richardson, Kenneth Chen
>>>> Amtsgericht Charlottenburg, HRB 209739 B
>>>>
>>>
>>>
>>
>
>
> --
> [image: Aiven] <https://www.aiven.io/>
>
> *Josep Prat*
> Open Source Engineering Director, *Aiven*
> josep.p...@aiven.io   |   +491715557497
> aiven.io <https://www.aiven.io/>   |   <https://www.facebook.com/aivencloud>
>  <https://www.linkedin.com/company/aiven/>   <https://twitter.com/aiven_io>
> *Aiven Deutschland GmbH*
> Alexanderufer 3-7, 10117 Berlin
> Geschäftsführer: Oskari Saarenmaa, Hannu Valtonen,
> Anna Richardson, Kenneth Chen
> Amtsgericht Charlottenburg, HRB 209739 B

Reply via email to