Hi, just an additional comment:

Lazy consensus is exactly what lead to absence of any testing and breakages.


This *Lazy consensus *is just about the timeframe and the lack of 4
reviewers. The PR should be compliant with all other requirements
(description, testing, documentation etc).

My proposal for this *Lazy consensus:*


14. Number of minimum required code review votes should be increased
> from 2 to 4. This will ensure cross-checks and filter out faulty
> changes.


14.1  A PR may be eligible to be merged under the concept of *Lazy
consensus* with the following conditions:
          - It affects only a single chip or board;
          - It didn't get the minimum of 4 reviewers after two weeks;
            - It was reviewed by at least one independent reviewer;
          - It adheres to all other conditions.
        The PR's author should:
          - After a week without any reviewers, send an e-mail to the
mailing list asking for more people to review it;
          - Explain why the PR can't be split into smaller PRs (if
applicable);
          - Ask for the independent reviewer to merge it after two weeks
without any other reviewers;
        The (required) independent reviewer is responsible for checking if
the PR matches the Lazy Consensus conditions and merging it.


Em ter., 11 de fev. de 2025 às 11:05, Tiago Medicci Serrano <
tiago.medi...@gmail.com> escreveu:

> Hi!
>
> I agree with almost every single point from Sebastien and Tomek:
>
> Lazy consensus is exactly what lead to absence of any testing and
>> breakages.
>>
>
> This isn't entirely true. *Lazy consensus *is very bad if it affects a
> lot of people, but the Wi-Fi support for all Espressif chips was added with
> it (huge PR, few reviewers, doesn't affect any existing configuration).
> That's why I claim we should have exceptions.
>
> We talked about "lazy merge" already and there were opposing voices
>> (including me). The safe default and current updated approach is NOT
>> to merge unless author can prove its useful, working, tested, and top
>> priority does not break stuff. Good cross-check reviews / verification
>> is important.. even if it takes more time than expected. We should
>> value quality more over rushing code changes. This is where all recent
>> discussion came from. Am I wrong?
>
>
> I include myself on that too: I was opposed to it. But I've changed my
> mind about it when it meets this very specific conditions:
>
>    1. Code that affects only a single chip/vendor implementation;
>    2. Are hard to review because can't be split into smaller PRs;
>
> And, even the procedure for that should be well-documented:
>
>    1. PR should initially be treated according the general rules (4
>    independent reviewers);
>    2. After a week without enough reviewers, a call should be made on the
>    mailing list, explaining why the PR can't be split into smaller PRs;
>    3. After two weeks without any reviewers, we could merge if the above
>    conditions are met and we have at least one independent reviewer;
>
> See, I prefer it to let PRs without any reviewers because we don't have
> enough people to review it (or we are not interested in that). It prevents
> people from forking the project just to be able to develop their stuff:
> *we* *really would not like that*. The PR's author is still responsible
> for fixing some bugs if found in the future.
>
> Please, consider this situation.
>
> Em ter., 11 de fev. de 2025 às 10:35, Tomek CEDRO <to...@cedro.info>
> escreveu:
>
>> On Tue, Feb 11, 2025 at 12:40 PM Tiago Medicci Serrano
>> <tiago.medi...@gmail.com> wrote:
>> > Two points that seem to be missing in the current *[VOTE] NuttX
>> > Contributing Guidelines update 202502.* thread:
>> >
>> > About commits...
>> >
>> > We were discussing splitting some changes into different PRs, adding the
>> > commit's message and description, etc but I couldn't find anything
>> (even on
>> > Docs) that mentions the rule of the commit being as small as it can be
>> *without
>> > breaking the build*.
>>
>> Thanks Tiago! We want to clearly state that breaking changes are not
>> welcome :-) True, we already require that each PR should be as small
>> as possible and change only one functional thing at time so we avoid
>> too-many-things-at-once bundles that are hard to analyze and verify..
>> but also cannot break things and sometimes bundles are exceptionally
>> acceptable.. I thought this is obvious.. but maybe we should add this
>> point :D
>>
>>
>> > About required reviewers...
>> >
>> > I have a new proposal about "lazy consensus".
>> >
>> > Currently, nothing being voted refers to it, but it may apply to one
>> > specific situation: there are huge PRs that can't be broken on smaller
>> > parts and affect only a single chip or board.
>> >
>> > For instance, this <https://github.com/apache/nuttx/pull/12004> PR
>> updated
>> > the wireless drivers for ESP32-S3. As can be seen, only a single
>> > independent reviewer reviewed it.
>> >
>> > And it makes sense that no one was willing to review it:
>> >  - It's big (and can't be split into smaller PRs because the changes
>> depend
>> > on each other);
>> >  - It affects only a single chip (and it's expected that no one other
>> than
>> > the manufacturer or the developer that submitted it is willing to review
>> > it);
>> >
>> > *In this specific case, if the PR adheres to the other guidelines
>> (proper
>> > testing, logs, documentation etc), we could rely on a minimum of 1 (one)
>> > independent reviewer and, after two weeks, merge it.*
>>
>> This way we should merge all stalled PRs with only one review right away
>> :-P
>>
>> We talked about "lazy merge" already and there were opposing voices
>> (including me). The safe default and current updated approach is NOT
>> to merge unless author can prove its useful, working, tested, and top
>> priority does not break stuff. Good cross-check reviews / verification
>> is important.. even if it takes more time than expected. We should
>> value quality more over rushing code changes. This is where all recent
>> discussion came from. Am I wrong?
>>
>> In case of pull 12004, I agree this is big, maybe should be split into
>> smaller PRs (i.e. why remove RMT support when updating WIFI?), maybe
>> build and runtime logs could be attached, but it was clearly stated
>> all these changes needs to be bundled not to break stuff, so it was
>> accepted, exceptional situations like this happen, but require
>> additional caution and testing. Still additional reviews can be easily
>> requested, right? It may take more time to verify but we will have
>> solid code base :-)
>>
>> I have ESP32S3 now. I can get others if needed. For instance I
>> recently also bough popular rpi-pico(-2-w) just to see it does not
>> build. I am open to vendors providing free devkits for testing
>> support. For instance STM is known to share their devkits for free,
>> maybe Espressif could provide some new stuff too? :-)
>>
>>
>> To sum up, we want to add additional point like this? Please update if
>> necessary :-)
>>
>> Pull Requests should be as small as possible and focused on only one
>> functional change. Different functional changes should be provided in
>> separate Pull Requests. Remember that breaking changes are not
>> welcome. Pull Requests must not break overall build, runtime, and
>> compatibility, especially for other components. When changes must be
>> bundled together in order to maintain functionality and
>> self-compatibility, exception can be made, and this must be clearly
>> stated there is no other way.
>>
>>
>> --
>> CeDeROM, SQ7MHZ, http://www.tomek.cedro.info
>>
>

Reply via email to