Message ID | 20190508113947.11920-1-george.dunlap@citrix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | MAINTAINERS: Add explicit check-in policy section | expand |
On 08/05/2019 13:39, George Dunlap wrote: > The "nesting" section in the MAINTAINERS file was not initially > intended to describe the check-in policy for patches, but only how > nesting worked; but since there was no check-in policy, it has been > acting as a de-facto policy. > > One problem with this is that the policy is not complete: It doesn't > cover open objections, time to check-in, or so on. The other problem > with the policy is that, as written, it doesn't account for > maintainers submitting patches to files which they themselves > maintain. This is fine for situations where there are are multiple > maintaniers, but not for situations where there is only one > maintianer. > > Add an explicit "Check-in policy" section to the MAINTAINERS document > to serve as the canonical reference for the check-in policy. Move > paragraphs not explicitly related to nesting into it. > > While here, "promote" the "The meaning of nesting" section title. > > Signed-off-by: George Dunlap <george.dunlap@citrix.com> > --- > CC: Ian Jackson <ian.jackson@citrix.com> > CC: Wei Liu <wei.liu2@citrix.com> > CC: Andrew Cooper <andrew.cooper3@citrix.com> > CC: Jan Beulich <jbeulich@suse.com> > CC: Tim Deegan <tim@xen.org> > CC: Konrad Wilk <konrad.wilk@oracle.com> > CC: Stefano Stabellini <sstabellini@kernel.org> > CC: Julien Grall <julien.grall@arm.com> > CC: Lars Kurth <lars.kurth@citrix.com> > > This is a follow-up to the discussion in `[PATCH for-4.12] > passthrough/vtd: Drop the "workaround_bios_bug" logic entirely`, specifically > Message-ID: <5C9CF25A020000780022291B@prv1-mh.provo.novell.com> > > This encodes my understanding of the policy, and what I think is the > best one. > > A second approach would be: > > 1. In order to get a change to a given file committed, it must have > an Ack or Review from at least one maintainer of that file other than > the submitter. > > 2. In the case where a file has only one maintainer, it must have an > Ack or Review from a "nested" maintainer. > > I.e., if I submitted something to x86/mm, it would require an Ack from > Jan or Andy, or (in exceptional circumstances) The Rest; but an Ack from > (say) Roger or Juergen wouldn't suffice. > > A third approach would be to say that in the case of multiple > maintainers, the maintainers themselves can decide to mandate the > other maintainer's Ack. For instance, Dario and I could agree that we > don't need each others' ack for changes to the scheduler, but Andy and > Jan could agree that they do need each other's Ack for changes to the > x86 code. What about variant 2b: 1. In order to get a change to a given file committed, it must have an Ack or Review from at least one maintainer of that file other than the submitter. 2. In the case the submitter is a maintainer of a modified file it must have an Ack or Review from either a "nested" maintainer or a Designated reviewer of that file. > --- > MAINTAINERS | 46 ++++++++++++++++++++++++++++++++++++++++------ > 1 file changed, 40 insertions(+), 6 deletions(-) > > diff --git a/MAINTAINERS b/MAINTAINERS > index e43388ddb0..65ba35f02d 100644 > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -99,7 +99,46 @@ Descriptions of section entries: > One regex pattern per line. Multiple K: lines acceptable. > > > -The meaning of nesting: > + Check-in policy > + =============== > + > +In order for a patch to be checked in, in general, several conditions > +must be met: > + > +1. In order to get a change to a given file committed, it must have > + the approval of at least one maintainer of that file. > + > + A patch of course needs acks from the maintainers of each file that > + it changes; so a patch which changes xen/arch/x86/traps.c, > + xen/arch/x86/mm/p2m.c, and xen/arch/x86/mm/shadow/multi.c would > + require an Ack from each of the three sets of maintainers. > + > + See below for rules on nested maintainership. > + > +2. It must have an Acked-by or a Reviewed-by from someone other than > + the submitter. > + > +3. Sufficient time must have been given for anyone to respond. This > + depends in large part upon the urgency and nature of the patch. > + For a straightforward uncontroversial patch, a day or two is > + sufficient; for a controversial patch, longer (maybe a week) would > + be better. > + > +4. There must be no "open" objections. > + > +In a case where one person submits a patch and a maintainer gives an > +Ack, the Ack stands in for both the approval requirement (#1) and the > +Acked-by-non-submitter requirement (#2). > + > +In a case where a maintainer themselves submits a patch, the > +Signed-off-by meets the approval requriment (#1); so an Ack or Review > +from anyone in the community suffices for requirement #2. > + > +Maintainers may choose to override non-maintainer objections in the > +case that consensus can't be reached. > + > + The meaning of nesting > + ====================== Everywhere else tabs are used for indenting. Juergen
On 5/8/19 12:59 PM, Juergen Gross wrote: > What about variant 2b: > > 1. In order to get a change to a given file committed, it must have > an Ack or Review from at least one maintainer of that file other than > the submitter. > > 2. In the case the submitter is a maintainer of a modified file it must > have an Ack or Review from either a "nested" maintainer or a Designated > reviewer of that file. That changes the current meaning of "Designated Reviewer" somewhat. At the moment, it only means "Send this person an email"; if we did that, it would mean, "This person is more trusted to do reviews than others". Not sure what I think about that yet. >> + The meaning of nesting >> + ====================== > > Everywhere else tabs are used for indenting. I did try to get my editor to use tabs. I'll try harder next time I guess. :-/ -George
>>> On 08.05.19 at 13:39, <george.dunlap@citrix.com> wrote: > The "nesting" section in the MAINTAINERS file was not initially > intended to describe the check-in policy for patches, but only how > nesting worked; but since there was no check-in policy, it has been > acting as a de-facto policy. > > One problem with this is that the policy is not complete: It doesn't > cover open objections, time to check-in, or so on. The other problem > with the policy is that, as written, it doesn't account for > maintainers submitting patches to files which they themselves > maintain. This is fine for situations where there are are multiple > maintaniers, but not for situations where there is only one > maintianer. > > Add an explicit "Check-in policy" section to the MAINTAINERS document > to serve as the canonical reference for the check-in policy. Move > paragraphs not explicitly related to nesting into it. > > While here, "promote" the "The meaning of nesting" section title. > > Signed-off-by: George Dunlap <george.dunlap@citrix.com> First of all - thanks for putting this together and this way kicking off the discussion which model to standardize on. As a nit - I think the whole thing could do with running through a spell checker: There's multiple spellings of "maintainer" above, and I think I've noticed a few more issues. > This encodes my understanding of the policy, and what I think is the > best one. > > A second approach would be: > > 1. In order to get a change to a given file committed, it must have > an Ack or Review from at least one maintainer of that file other than > the submitter. > > 2. In the case where a file has only one maintainer, it must have an > Ack or Review from a "nested" maintainer. > > I.e., if I submitted something to x86/mm, it would require an Ack from > Jan or Andy, or (in exceptional circumstances) The Rest; but an Ack from > (say) Roger or Juergen wouldn't suffice. This, FTR, is my understanding of the current policy. A general remark on your use of "nested": My (non-native-English) understanding of this would mean a more specific rather than a more general area. Hence to avoid mis-interpretation I'd prefer if the terms "more general" and "more specific" could be used, just like the pre-existing section (also) does. > --- a/MAINTAINERS > +++ b/MAINTAINERS > @@ -99,7 +99,46 @@ Descriptions of section entries: > One regex pattern per line. Multiple K: lines acceptable. > > > -The meaning of nesting: > + Check-in policy > + =============== > + > +In order for a patch to be checked in, in general, several conditions > +must be met: > + > +1. In order to get a change to a given file committed, it must have > + the approval of at least one maintainer of that file. > + > + A patch of course needs acks from the maintainers of each file that > + it changes; so a patch which changes xen/arch/x86/traps.c, > + xen/arch/x86/mm/p2m.c, and xen/arch/x86/mm/shadow/multi.c would > + require an Ack from each of the three sets of maintainers. > + > + See below for rules on nested maintainership. > + > +2. It must have an Acked-by or a Reviewed-by from someone other than > + the submitter. For one, the way we use Acked-by and Reviewed-by, an ack from a non-maintainer IMO makes no sense. But then this is too lax for my taste anyway. I'd be happy to see dedicated reviewers' R-b or more general maintainers' A-b be sufficient. (This is relevant for maintainer submitted patches only anyway, as otherwise item 1 will cover it in full already.) > +3. Sufficient time must have been given for anyone to respond. This > + depends in large part upon the urgency and nature of the patch. > + For a straightforward uncontroversial patch, a day or two is > + sufficient; for a controversial patch, longer (maybe a week) would > + be better. Is a week really enough? I realize (not the least from experiencing overly long delays) that waiting longer reduces overall progress, but there have been a number of cases in the not so distant past where waiting even multiple weeks or months turned out to not be enough for objections to finally surface (sometimes post commit). So as a submitter I'd prefer short timeout periods here, but as a maintainer I think longer might be preferable. But of course, since maintainer acks are needed anyway, this may be infrequent enough a problem to not worry about it in the general policy. What you don't mention at all is the not uncommon case of patches sitting there indefinitely without receiving any acks or reviews (or where the discussion simply gets stalled), despite pings. I really think we need to at least mention this situation as well, even if only to set expectations. But I also could imagine some reasonable timeout to be established for such changes to go in without all the needed acks (as I'm intending - policy or not by that time - to do for "[PATCH v7 00/10] x86: indirect call overhead reduction" once the tree is open again, as previously indicated). Jan
On Wed, 8 May 2019, George Dunlap wrote: > + Check-in policy > + =============== > + > +In order for a patch to be checked in, in general, several conditions > +must be met: > + > +1. In order to get a change to a given file committed, it must have > + the approval of at least one maintainer of that file. > + > + A patch of course needs acks from the maintainers of each file that > + it changes; so a patch which changes xen/arch/x86/traps.c, > + xen/arch/x86/mm/p2m.c, and xen/arch/x86/mm/shadow/multi.c would > + require an Ack from each of the three sets of maintainers. > + > + See below for rules on nested maintainership. > + > +2. It must have an Acked-by or a Reviewed-by from someone other than > + the submitter. > + > +3. Sufficient time must have been given for anyone to respond. This > + depends in large part upon the urgency and nature of the patch. > + For a straightforward uncontroversial patch, a day or two is > + sufficient; for a controversial patch, longer (maybe a week) would > + be better. > + > +4. There must be no "open" objections. > + > +In a case where one person submits a patch and a maintainer gives an > +Ack, the Ack stands in for both the approval requirement (#1) and the > +Acked-by-non-submitter requirement (#2). > + > +In a case where a maintainer themselves submits a patch, the > +Signed-off-by meets the approval requriment (#1); so an Ack or Review > +from anyone in the community suffices for requirement #2. Not that I am opposed to it, but this is not how Julien and I have been working so far: when one of us sends a patch the other needs to review it or at least ack it.
George Dunlap writes ("Re: [Xen-devel] [PATCH] MAINTAINERS: Add explicit check-in policy section"): > On 5/8/19 12:59 PM, Juergen Gross wrote: > > 2. In the case the submitter is a maintainer of a modified file it must > > have an Ack or Review from either a "nested" maintainer or a Designated > > reviewer of that file. > > That changes the current meaning of "Designated Reviewer" somewhat. At > the moment, it only means "Send this person an email"; if we did that, > it would mean, "This person is more trusted to do reviews than others". > > Not sure what I think about that yet. I think this is a bad idea. The purpose was to provide a way for someone to be emailed which doesn't involve giving them authority, and which is therefore a status which can be granted on request and does not require any assessment etc. If we chane this we will have to invent a new status to perform this function. Ian.
George Dunlap writes ("[PATCH] MAINTAINERS: Add explicit check-in policy section"): > + Check-in policy > + =============== > + > +In order for a patch to be checked in, in general, several conditions > +must be met: I think it is very helpful to write guidelines, but I am opposed to declaring this as a rigid policy. In particular as committer I often bend the rules (I guess, I mean, insofar as we have rules, I do things that feel like bending them). I do this when ISTM that all the "relevant" people either have approved, or will approve of my action when they find out about it. I may be wrong but I don't think I have ever caused anyone to feel like I overstepped a boundary, by deliberately (for example) committing something which seems to lack an appropriate ack. (That's not to say that I don't make errors; but that is rather a different question.) At the very least, I am often very keen to commit things which unbreak recent serious regressions, eg which unbreak the build. I have even on occasion done a substantive review of a patch, as part of convincing myself that the maintainer will approve of it (or at least, approve of my decision to commit it). I'm not sure exactly how to codify this. For me the key test is: if I do this, is anyone going to be annoyed because they felt their ack should have been waited for *and they wouldn't have granted it*; ie, they felt the patch ought not to have been committed. If that were to happen I would have to apologise and recalibrate my understanding of when such a thing is appropriate (and this might indeed depend on which maintainer(s) were involved, etc.) Obviously the best way to avoid such friction is to wait for the explicit ack, and chase it if need be; but sometimes (not usually, but occasionally) that is not practical for whatever reason. Does this make sense ? Regards, Ian.
>>> On 09.05.19 at 13:05, <ian.jackson@citrix.com> wrote: > George Dunlap writes ("Re: [Xen-devel] [PATCH] MAINTAINERS: Add explicit > check-in policy section"): >> On 5/8/19 12:59 PM, Juergen Gross wrote: >> > 2. In the case the submitter is a maintainer of a modified file it must >> > have an Ack or Review from either a "nested" maintainer or a Designated >> > reviewer of that file. >> >> That changes the current meaning of "Designated Reviewer" somewhat. At >> the moment, it only means "Send this person an email"; if we did that, >> it would mean, "This person is more trusted to do reviews than others". >> >> Not sure what I think about that yet. > > I think this is a bad idea. The purpose was to provide a way for > someone to be emailed which doesn't involve giving them authority, > and which is therefore a status which can be granted on request and > does not require any assessment etc. > > If we chane this we will have to invent a new status to perform this > function. I think we will want to do this anyway: "Designated Reviewer" isn't the same as "Cc <person> on patches" (which may be just because someone wants to monitor what's being submitted / discussed). At least that's my (non-native-English) understanding of "designated". Jan
On 5/9/19 12:16 PM, Ian Jackson wrote: > George Dunlap writes ("[PATCH] MAINTAINERS: Add explicit check-in policy section"): >> + Check-in policy >> + =============== >> + >> +In order for a patch to be checked in, in general, several conditions >> +must be met: > > I think it is very helpful to write guidelines, but I am opposed to > declaring this as a rigid policy. The phrase "in general" was meant to indicate that it was not a rigid policy, but... well, a general one, which was understood may not apply in exceptional circumstances. > In particular as committer I often bend the rules (I guess, I mean, > insofar as we have rules, I do things that feel like bending them). [snip] > Does this make sense ? Sure, but is this not already covered by the section at the end of "The meaning of nesting"? Or are you specifically thinking of a case where 1) you write the fix, and 2) nobody from THE REST is around to provide an "stand-in for the more specific maintainer" Ack? If the latter, we can certainly add some text to say that in such an exceptional circumstance, a committer may act unilaterally. I think in general, first the specific maintainer's Ack ought to be sought; and if that cannot be found, then a then more general maintainer's Ack should be sought; and if there is nobody from the most general set of maintainers (THE REST) other than the submitter of the patch, then the submitter/committer should make a call as to whether to act unilaterally or to wait. In all cases where a more general maintainer has stood in for a more specific maintainer, they should be prepared to defend their choice. Is that what you had in mind? -George
diff --git a/MAINTAINERS b/MAINTAINERS index e43388ddb0..65ba35f02d 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -99,7 +99,46 @@ Descriptions of section entries: One regex pattern per line. Multiple K: lines acceptable. -The meaning of nesting: + Check-in policy + =============== + +In order for a patch to be checked in, in general, several conditions +must be met: + +1. In order to get a change to a given file committed, it must have + the approval of at least one maintainer of that file. + + A patch of course needs acks from the maintainers of each file that + it changes; so a patch which changes xen/arch/x86/traps.c, + xen/arch/x86/mm/p2m.c, and xen/arch/x86/mm/shadow/multi.c would + require an Ack from each of the three sets of maintainers. + + See below for rules on nested maintainership. + +2. It must have an Acked-by or a Reviewed-by from someone other than + the submitter. + +3. Sufficient time must have been given for anyone to respond. This + depends in large part upon the urgency and nature of the patch. + For a straightforward uncontroversial patch, a day or two is + sufficient; for a controversial patch, longer (maybe a week) would + be better. + +4. There must be no "open" objections. + +In a case where one person submits a patch and a maintainer gives an +Ack, the Ack stands in for both the approval requirement (#1) and the +Acked-by-non-submitter requirement (#2). + +In a case where a maintainer themselves submits a patch, the +Signed-off-by meets the approval requriment (#1); so an Ack or Review +from anyone in the community suffices for requirement #2. + +Maintainers may choose to override non-maintainer objections in the +case that consensus can't be reached. + + The meaning of nesting + ====================== Many maintainership areas are "nested": for example, there are entries for xen/arch/x86 as well as xen/arch/x86/mm, and even @@ -113,11 +152,6 @@ the Ack of the xen/arch/x86/mm/shadow maintainer for that part of the patch, but would not require the Ack of the xen/arch/x86 maintainer or the xen/arch/x86/mm maintainer. -(A patch of course needs acks from the maintainers of each file that -it changes; so a patch which changes xen/arch/x86/traps.c, -xen/arch/x86/mm/p2m.c, and xen/arch/x86/mm/shadow/multi.c would -require an Ack from each of the three sets of maintainers.) - 2. In unusual circumstances, a more general maintainer's Ack can stand in for or even overrule a specific maintainer's Ack. Unusual circumstances might include:
The "nesting" section in the MAINTAINERS file was not initially intended to describe the check-in policy for patches, but only how nesting worked; but since there was no check-in policy, it has been acting as a de-facto policy. One problem with this is that the policy is not complete: It doesn't cover open objections, time to check-in, or so on. The other problem with the policy is that, as written, it doesn't account for maintainers submitting patches to files which they themselves maintain. This is fine for situations where there are are multiple maintaniers, but not for situations where there is only one maintianer. Add an explicit "Check-in policy" section to the MAINTAINERS document to serve as the canonical reference for the check-in policy. Move paragraphs not explicitly related to nesting into it. While here, "promote" the "The meaning of nesting" section title. Signed-off-by: George Dunlap <george.dunlap@citrix.com> --- CC: Ian Jackson <ian.jackson@citrix.com> CC: Wei Liu <wei.liu2@citrix.com> CC: Andrew Cooper <andrew.cooper3@citrix.com> CC: Jan Beulich <jbeulich@suse.com> CC: Tim Deegan <tim@xen.org> CC: Konrad Wilk <konrad.wilk@oracle.com> CC: Stefano Stabellini <sstabellini@kernel.org> CC: Julien Grall <julien.grall@arm.com> CC: Lars Kurth <lars.kurth@citrix.com> This is a follow-up to the discussion in `[PATCH for-4.12] passthrough/vtd: Drop the "workaround_bios_bug" logic entirely`, specifically Message-ID: <5C9CF25A020000780022291B@prv1-mh.provo.novell.com> This encodes my understanding of the policy, and what I think is the best one. A second approach would be: 1. In order to get a change to a given file committed, it must have an Ack or Review from at least one maintainer of that file other than the submitter. 2. In the case where a file has only one maintainer, it must have an Ack or Review from a "nested" maintainer. I.e., if I submitted something to x86/mm, it would require an Ack from Jan or Andy, or (in exceptional circumstances) The Rest; but an Ack from (say) Roger or Juergen wouldn't suffice. A third approach would be to say that in the case of multiple maintainers, the maintainers themselves can decide to mandate the other maintainer's Ack. For instance, Dario and I could agree that we don't need each others' ack for changes to the scheduler, but Andy and Jan could agree that they do need each other's Ack for changes to the x86 code. --- MAINTAINERS | 46 ++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 40 insertions(+), 6 deletions(-)