[PATCH 08/11] doc: add common committer guidelines file

Jani Nikula jani.nikula at intel.com
Tue Oct 30 13:31:48 UTC 2018


On Thu, 25 Oct 2018, Rodrigo Vivi <rodrigo.vivi at intel.com> wrote:
> But I believe any of my 2 thoughts can be done in follow-up work.
> This patch here looks correct, so:

This is just text movement, changes should be separate.

> Reviewed-by: Rodrigo Vivi <rodrigo.vivi at intel.com>

Thanks,
Jani.


>
>
>
>> +
>> +On Confidence, Complexity, and Transparency
>> +===========================================
>> +
>> +* Reviewed-by/Acked-by/Tested-by must include the name and email of a real
>> +  person for transparency. Anyone can give these, and therefore you have to
>> +  value them according to the merits of the person. Quality matters, not
>> +  quantity. Be suspicious of rubber stamps.
>> +
>> +* Reviewed-by/Acked-by/Tested-by can be asked for and given informally (on the
>> +  list, IRC, in person, in a meeting) but must be added to the commit.
>> +
>> +* Reviewed-by. All patches must be reviewed, no exceptions. Please see
>> +  "Reviewer's statement of oversight" in `Documentation/process/submitting-patches
>> +  <https://01.org/linuxgraphics/gfx-docs/drm/process/submitting-patches.html>`_
>> +  and `review training
>> +  <http://blog.ffwll.ch/2014/08/review-training-slides.html>`_.
>> +
>> +* Acked-by. Indicates acceptance. No reply is not a sign of acceptance, unless
>> +  you've involved the person (added Cc:, explicitly included in discussion).
>> +
>> +* Tested-by. Please solicit separate Tested-by especially from the bug
>> +  reporters, or people with specific hardware that you or the author do not
>> +  have.
>> +
>> +* There must not be open issues or unresolved or conflicting feedback from
>> +  anyone. Clear them up first. Defer to maintainers as needed.
>> +
>> +* For patches that are simple, isolated, non-functional, not visible to
>> +  userspace, and/or are in author or reviewer's domain of expertise, one
>> +  reviewer is enough. Author with commit access can push after review, or
>> +  reviewer with commit access can push after review.
>> +
>> +* The more complicated the patch gets, the greater the impact, involves ABI,
>> +  touches several areas or platforms, is outside of author's domain of
>> +  expertise, the more eyeballs are needed. For example, several reviewers, or
>> +  separate author, reviewer and committer. Make sure you have experienced
>> +  reviewers. Involve the domain expert(s). Possibly involve people across
>> +  team/group boundaries. Possibly involve the maintainers. Give people more time
>> +  to voice their concerns. Aim for what's described below in more detail as
>> +  "rough consensus".
>> +
>> +* Most patches fall somewhere in between. You have to be the judge, and ensure
>> +  you have involved enough people to feel comfortable if the justification for
>> +  the commit is questioned afterwards.
>> +
>> +On Rough Consensus
>> +==================
>> +
>> +For really big features with a lot of impact on the code, new cross-driver ABI
>> +(like new atomic properties), or features that will take a few patch series (and
>> +maybe a few kernel releases) aim for rough consensus among a wide group of
>> +stakeholders. There's three components for that:
>> +
>> +* Identify stakeholders beyond just the patch author and reviewers. This
>> +  includes contributors with experience in code ancillary to your feature,
>> +  domain experts, maybe maintainers. Also include maintainers and reviewers of
>> +  the userspace component for new ABI, which often means non-Intel people. In
>> +  case of doubt ask maintainers for a reasonable list of people. Make sure you
>> +  gather their input actively, don't expect them to deliver it on their own -
>> +  most are really busy.
>> +
>> +* Have agreement among all these stakeholders what the code should look like in
>> +  the end. Generally disagreement on the end state is considered a blocker, and
>> +  overruling such disagreement by maintainers is done only in exceptional cases.
>> +  Generally what happens is that maintainers instead do all the work of
>> +  soliciting input, which doesn't scale and should be the patch author's and
>> +  reviewer's duty. Try to document this consensus somewhere, either in a summary
>> +  email, interface patch to describe the data structures and vfuncs. Or maybe
>> +  even a more formal design spec, although in the past that didn't work out when
>> +  non-Intel people are involved, and the actually merged interface differed from
>> +  the spec a lot. Just assumed consensus on IRC tends to result in
>> +  misunderstandings.
>> +
>> +* Have a concrete plan how to get to the agreed end state in the codebase. Often
>> +  it makes sense to have an intermediate patch set merged first, and then polish
>> +  it in tree. Or merge new ABI in stages. Usually this means that a new feature
>> +  or ABI is disabled by default at first. For the actual plan some unhappiness
>> +  from stakeholders about the execution is acceptable, as long as the overall
>> +  stability and other ongoing work isn't negatively affected. As a rule of thumb
>> +  new ABI or features should never be in a partial/limbo stage for more than 2-3
>> +  kernel releases. If that seems unlikely, more work should happen pre-merge.
>> +
>> +
>> +Try to reach rough consensus before spending months writing code you might need
>> +to throw away or at least entirely rewrite again. Also make sure that all
>> +discussions happen in public forums, and make sure there's a searchable
>> +permanent record of any discussions for later reference. This means that for
>> +most things internal meetings are not the most suitable venue.
>> +
>> +Continuous Integration and Pre-Merge Testing
>> +============================================
>> +
>> +The requirements for CI_ pre-merge testing are:
>> +
>> +* ``checkpatch.pl`` does not complain. (Some of the more subjective warnings may
>> +  be ignored at the committer's discretion.)
>> +
>> +* The patch does not introduce new ``sparse`` warnings.
>> +
>> +* Patch series must pass IGT Basic Acceptance Tests (BAT) on all the CI machines
>> +  without causing regressions.
>> +
>> +* Patch series must pass full IGT tests on CI shard machines without causing
>> +  regressions.
>> +
>> +* Patch series must pass GPU piglit tests on all CI machines without causing
>> +  regressions.
>> +
>> +The CI bots will send results to the patch author and intel-gfx for any patches
>> +tracked by patchwork. The results are also available on patchwork_ and the CI_
>> +site.
>> +
>> +Check CI failures and make sure any sporadic failures are a) pre-existing,
>> +and b) tracked in bugzilla. If there's anything dubious that you can't track
>> +down to pre-existing and tracked issues please don't push, but instead figure
>> +out what's going on.
>> +
>> +.. _CI: https://intel-gfx-ci.01.org/
>> +
>> +.. _patchwork: https://patchwork.freedesktop.org/project/intel-gfx/series/
>> +
>> +Labeling Fixes Before Pushing
>> +=============================
>> +
>> +To label fixes that should be cherry-picked to the current -rc development
>> +kernel or drm-next, the commit message should have the 'Fixes:' tag.
>> +
>> +If the fix is relevant for a released kernel please also
>> +
>> +	Cc: stable at vger.kernel.org
>> +
>> +'Fixes:' tag needs to added to any patch fixing a regression or an incorrect
>> +behavior from previous patches. This tag help maintainers and tools to decide
>> +where to cherry-pick a patch to. This also extremely useful for
>> +product groups to know which bugfixes they must include. To follow the
>> +recommended format please generate the Fixes: line using ::
>> +
>> +        $ dim fixes $regressing_commit
>> +
>> +This will also add the correct Cc: line if one is needed.
>> +
>> +If the Cc: or Fixes: was forgotten, you can still reply to the list with that,
>> +just like any other tags, and they should be picked up by whoever pushes the
>> +patch.
>> +
>> +The maintainers will cherry-pick labeled patches from drm-intel-next-queued to
>> +the appropriate branches.
>> +
>> +'Fixes:' tag is described in
>> +`Documentation/process/submitting-patches
>> +<https://01.org/linuxgraphics/gfx-docs/drm/process/submitting-patches.html>`_.
>> +
>> +Requesting Fixes Cherry-Pick Afterwards
>> +=======================================
>> +
>> +It's not uncommon for a patch to have been committed before it's identified as a
>> +fix needing to be backported.
>> +
>> +If the patch is already in Linus' tree, please follow `stable kernel rules
>> +<https://01.org/linuxgraphics/gfx-docs/drm/process/stable-kernel-rules.html>`_.
>> +
>> +Otherwise, send an email to intel-gfx at lists.freedesktop.org containing the subject of the patch, the commit id, why you think it should be applied, and what branch you wish it to be applied to.
>> +
>> +Replying to the original patch is also fine, but please mention the commit id.
>> +
>> +Alternatively, if the cherry-pick has conflicts, please send a patch to
>> +intel-gfx at lists.freedesktop.org with
>> +subject prefix "drm-intel-fixes PATCH" or "drm-intel-next-fixes PATCH" depending
>> +on the branch. Please add 'git cherry-pick -x' style annotation above your
>> +Signed-off-by: line in the commit message:
>> +
>> +	(cherry picked from commit 0bff4858653312a10c83709e0009c3adb87e6f1e)
>> +
>> +Tooling
>> +=======
>> +
>> +drm-intel git repositories are managed with dim_.
>> +
>> +.. _dim: dim.html
>> diff --git a/committer-guidelines.rst b/committer-guidelines.rst
>> new file mode 100644
>> index 000000000000..c0ed6d942aa7
>> --- /dev/null
>> +++ b/committer-guidelines.rst
>> @@ -0,0 +1,12 @@
>> +.. _committer-guidelines:
>> +
>> +======================
>> + Committer Guidelines
>> +======================
>> +
>> +This document gathers together committer guidelines.
>> +
>> +.. toctree::
>> +   :maxdepth: 2
>> +
>> +   committer-drm-intel
>> diff --git a/drm-intel.rst b/drm-intel.rst
>> index 087402cf985d..4587396452f2 100644
>> --- a/drm-intel.rst
>> +++ b/drm-intel.rst
>> @@ -44,7 +44,7 @@ Features
>>  --------
>>  
>>  Features are picked up and pushed to drm-intel-next-queued by committers and
>> -maintainers. See committer guidelines below for details.
>> +maintainers. See :ref:`committer-drm-intel` for details.
>>  
>>  Fixes
>>  -----
>> @@ -55,61 +55,9 @@ a timely manner. Fixes that are relevant for stable, current development
>>  kernels, or drm-next, will be cherry-picked by maintainers to drm-intel-fixes or
>>  drm-intel-next-fixes.
>>  
>> -To make this work, patches should be labeled as fixes (see below), and extra
>> -care should be put into making fixes the first patches in series, not depending
>> -on preparatory work or cleanup.
>> -
>> -Labeling Fixes Before Pushing
>> -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> -
>> -To label fixes that should be cherry-picked to the current -rc development
>> -kernel or drm-next, the commit message should have the 'Fixes:' tag.
>> -
>> -If the fix is relevant for a released kernel please also
>> -
>> -	Cc: stable at vger.kernel.org
>> -
>> -'Fixes:' tag needs to added to any patch fixing a regression or an incorrect
>> -behavior from previous patches. This tag help maintainers and tools to decide
>> -where to cherry-pick a patch to. This also extremely useful for
>> -product groups to know which bugfixes they must include. To follow the
>> -recommended format please generate the Fixes: line using ::
>> -
>> -        $ dim fixes $regressing_commit
>> -
>> -This will also add the correct Cc: line if one is needed.
>> -
>> -If the Cc: or Fixes: was forgotten, you can still reply to the list with that,
>> -just like any other tags, and they should be picked up by whoever pushes the
>> -patch.
>> -
>> -The maintainers will cherry-pick labeled patches from drm-intel-next-queued to
>> -the appropriate branches.
>> -
>> -'Fixes:' tag is described in
>> -`Documentation/process/submitting-patches
>> -<https://01.org/linuxgraphics/gfx-docs/drm/process/submitting-patches.html>`_.
>> -
>> -Requesting Fixes Cherry-Pick Afterwards
>> -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>> -
>> -It's not uncommon for a patch to have been committed before it's identified as a
>> -fix needing to be backported.
>> -
>> -If the patch is already in Linus' tree, please follow `stable kernel rules
>> -<https://01.org/linuxgraphics/gfx-docs/drm/process/stable-kernel-rules.html>`_.
>> -
>> -Otherwise, send an email to intel-gfx at lists.freedesktop.org containing the subject of the patch, the commit id, why you think it should be applied, and what branch you wish it to be applied to.
>> -
>> -Replying to the original patch is also fine, but please mention the commit id.
>> -
>> -Alternatively, if the cherry-pick has conflicts, please send a patch to
>> -intel-gfx at lists.freedesktop.org with
>> -subject prefix "drm-intel-fixes PATCH" or "drm-intel-next-fixes PATCH" depending
>> -on the branch. Please add 'git cherry-pick -x' style annotation above your
>> -Signed-off-by: line in the commit message:
>> -
>> -	(cherry picked from commit 0bff4858653312a10c83709e0009c3adb87e6f1e)
>> +To make this work, patches should be labeled as fixes (see XXX), and extra care
>> +should be put into making fixes the first patches in series, not depending on
>> +preparatory work or cleanup.
>>  
>>  Merge Timeline
>>  ==============
>> @@ -123,213 +71,3 @@ release. There are no fast paths.
>>  
>>  For predictions on the future merge windows and releases, see
>>  http://phb-crystal-ball.org/.
>> -
>> -Committer Guidelines
>> -====================
>> -
>> -This section describes the guidelines for pushing patches. Strict rules covering
>> -all cases are impossible to write and follow. We put a lot of trust in the sound
>> -judgement of the people with commit access, and that only develops with
>> -experience. These guidelines are primarily for the committers to aid in making
>> -the right decisions, and for others to set their the expectations right.
>> -
>> -The short list:
>> -
>> -* Only push patches changing `drivers/gpu/drm/i915`.
>> -
>> -* Only push patches to `drm-intel-next-queued` branch.
>> -
>> -* Ensure certain details are covered, see separate list below.
>> -
>> -* You have confidence in the patches you push, proportionate to the complexity
>> -  and impact they have. The confidence must be explicitly documented with
>> -  special tags (Reviewed-by, Acked-by, Tested-by, Bugzilla, etc.) in the commit
>> -  message. This is also your insurance, and you want to have it when the commit
>> -  comes back haunting you. The complexity and impact are properties of the patch
>> -  that must be justified in the commit message.
>> -
>> -* Last but not least, especially when getting started, you can't go wrong with
>> -  asking or deferring to the maintainers. If you don't feel comfortable pushing
>> -  a patch for any reason (technical concerns, unresolved or conflicting
>> -  feedback, management or peer pressure, or anything really) it's best to defer
>> -  to the maintainers. This is what the maintainers are there for.
>> -
>> -* After pushing, please reply to the list that you've done so.
>> -
>> -Detail Check List
>> ------------------
>> -
>> -An inexhaustive list of details to check:
>> -
>> -* The patch conforms to `Documentation/process/submitting-patches
>> -  <https://01.org/linuxgraphics/gfx-docs/drm/process/submitting-patches.html>`_
>> -
>> -* The commit message is sensible, and includes adequate details and references.
>> -
>> -* Bug fixes are clearly indicated as such.
>> -
>> -* IGT test cases, if applicable, must be complete and reviewed. Please see
>> -  `details on testing requirements
>> -  <http://blog.ffwll.ch/2013/11/testing-requirements-for-drmi915.html>`_.
>> -
>> -* The patch series has passed CI pre-merge testing. See CI details below.
>> -
>> -* An open source userspace, reviewed and ready for merging by the upstream
>> -  project, must be available for new kernel ABI. Please see `details on
>> -  upstreaming requirements
>> -  <http://blog.ffwll.ch/2015/05/gfx-kernel-upstreaming-requirements.html>`_.
>> -
>> -* Relevant documentation must be updated as part of the patch or series.
>> -
>> -* Patch series builds and is expected to boot every step of the way, i.e. is
>> -  bisectable.
>> -
>> -* Each patch is of a sensible size. A good rule of thumb metric is, would you
>> -  (or the author) stand a chance to fairly quickly understand what goes wrong if
>> -  the commit is reported to cause a regression?
>> -
>> -* When pushing someone else's patch you must add your own signed-off per
>> -  http://developercertificate.org/. dim apply-branch should do this
>> -  automatically for you.
>> -
>> -* For patches that move around lots of code (file rename or extraction) please
>> -  coordinate with maintainers to avoid unnecessary pain with conflicts. Usually
>> -  some explicit merges are needed to avoid git getting lost.
>> -
>> -* As a general rule, do not modify the patches while applying, apart from the
>> -  commit message. If the patch conflicts, or needs to be changed due to review,
>> -  have the author rebase, update and resend. Any change at this stage is a
>> -  potential issue bypassing CI.
>> -
>> -  At most, minor comment and whitespace tweaks are acceptable.
>> -
>> -* Please notify maintainers (IRC is fine) of new merge conflicts during drm-tip
>> -  rebuild, so that they can do backmerges as needed.
>> -
>> -On Confidence, Complexity, and Transparency
>> --------------------------------------------
>> -
>> -* Reviewed-by/Acked-by/Tested-by must include the name and email of a real
>> -  person for transparency. Anyone can give these, and therefore you have to
>> -  value them according to the merits of the person. Quality matters, not
>> -  quantity. Be suspicious of rubber stamps.
>> -
>> -* Reviewed-by/Acked-by/Tested-by can be asked for and given informally (on the
>> -  list, IRC, in person, in a meeting) but must be added to the commit.
>> -
>> -* Reviewed-by. All patches must be reviewed, no exceptions. Please see
>> -  "Reviewer's statement of oversight" in `Documentation/process/submitting-patches
>> -  <https://01.org/linuxgraphics/gfx-docs/drm/process/submitting-patches.html>`_
>> -  and `review training
>> -  <http://blog.ffwll.ch/2014/08/review-training-slides.html>`_.
>> -
>> -* Acked-by. Indicates acceptance. No reply is not a sign of acceptance, unless
>> -  you've involved the person (added Cc:, explicitly included in discussion).
>> -
>> -* Tested-by. Please solicit separate Tested-by especially from the bug
>> -  reporters, or people with specific hardware that you or the author do not
>> -  have.
>> -
>> -* There must not be open issues or unresolved or conflicting feedback from
>> -  anyone. Clear them up first. Defer to maintainers as needed.
>> -
>> -* For patches that are simple, isolated, non-functional, not visible to
>> -  userspace, and/or are in author or reviewer's domain of expertise, one
>> -  reviewer is enough. Author with commit access can push after review, or
>> -  reviewer with commit access can push after review.
>> -
>> -* The more complicated the patch gets, the greater the impact, involves ABI,
>> -  touches several areas or platforms, is outside of author's domain of
>> -  expertise, the more eyeballs are needed. For example, several reviewers, or
>> -  separate author, reviewer and committer. Make sure you have experienced
>> -  reviewers. Involve the domain expert(s). Possibly involve people across
>> -  team/group boundaries. Possibly involve the maintainers. Give people more time
>> -  to voice their concerns. Aim for what's described below in more detail as
>> -  "rough consensus".
>> -
>> -* Most patches fall somewhere in between. You have to be the judge, and ensure
>> -  you have involved enough people to feel comfortable if the justification for
>> -  the commit is questioned afterwards.
>> -
>> -On Rough Consensus
>> -------------------
>> -
>> -For really big features with a lot of impact on the code, new cross-driver ABI
>> -(like new atomic properties), or features that will take a few patch series (and
>> -maybe a few kernel releases) aim for rough consensus among a wide group of
>> -stakeholders. There's three components for that:
>> -
>> -* Identify stakeholders beyond just the patch author and reviewers. This
>> -  includes contributors with experience in code ancillary to your feature,
>> -  domain experts, maybe maintainers. Also include maintainers and reviewers of
>> -  the userspace component for new ABI, which often means non-Intel people. In
>> -  case of doubt ask maintainers for a reasonable list of people. Make sure you
>> -  gather their input actively, don't expect them to deliver it on their own -
>> -  most are really busy.
>> -
>> -* Have agreement among all these stakeholders what the code should look like in
>> -  the end. Generally disagreement on the end state is considered a blocker, and
>> -  overruling such disagreement by maintainers is done only in exceptional cases.
>> -  Generally what happens is that maintainers instead do all the work of
>> -  soliciting input, which doesn't scale and should be the patch author's and
>> -  reviewer's duty. Try to document this consensus somewhere, either in a summary
>> -  email, interface patch to describe the data structures and vfuncs. Or maybe
>> -  even a more formal design spec, although in the past that didn't work out when
>> -  non-Intel people are involved, and the actually merged interface differed from
>> -  the spec a lot. Just assumed consensus on IRC tends to result in
>> -  misunderstandings.
>> -
>> -* Have a concrete plan how to get to the agreed end state in the codebase. Often
>> -  it makes sense to have an intermediate patch set merged first, and then polish
>> -  it in tree. Or merge new ABI in stages. Usually this means that a new feature
>> -  or ABI is disabled by default at first. For the actual plan some unhappiness
>> -  from stakeholders about the execution is acceptable, as long as the overall
>> -  stability and other ongoing work isn't negatively affected. As a rule of thumb
>> -  new ABI or features should never be in a partial/limbo stage for more than 2-3
>> -  kernel releases. If that seems unlikely, more work should happen pre-merge.
>> -
>> -
>> -Try to reach rough consensus before spending months writing code you might need
>> -to throw away or at least entirely rewrite again. Also make sure that all
>> -discussions happen in public forums, and make sure there's a searchable
>> -permanent record of any discussions for later reference. This means that for
>> -most things internal meetings are not the most suitable venue.
>> -
>> -Continuous Integration and Pre-Merge Testing
>> ---------------------------------------------
>> -
>> -The requirements for CI_ pre-merge testing are:
>> -
>> -* ``checkpatch.pl`` does not complain. (Some of the more subjective warnings may
>> -  be ignored at the committer's discretion.)
>> -
>> -* The patch does not introduce new ``sparse`` warnings.
>> -
>> -* Patch series must pass IGT Basic Acceptance Tests (BAT) on all the CI machines
>> -  without causing regressions.
>> -
>> -* Patch series must pass full IGT tests on CI shard machines without causing
>> -  regressions.
>> -
>> -* Patch series must pass GPU piglit tests on all CI machines without causing
>> -  regressions.
>> -
>> -The CI bots will send results to the patch author and intel-gfx for any patches
>> -tracked by patchwork. The results are also available on patchwork_ and the CI_
>> -site.
>> -
>> -Check CI failures and make sure any sporadic failures are a) pre-existing,
>> -and b) tracked in bugzilla. If there's anything dubious that you can't track
>> -down to pre-existing and tracked issues please don't push, but instead figure
>> -out what's going on.
>> -
>> -.. _CI: https://intel-gfx-ci.01.org/
>> -
>> -.. _patchwork: https://patchwork.freedesktop.org/project/intel-gfx/series/
>> -
>> -Tooling
>> -=======
>> -
>> -drm-intel git repositories are managed with dim_:
>> -
>> -.. _dim: dim.html
>> diff --git a/index.rst b/index.rst
>> index 2a73f5de5bed..88b49edbeece 100644
>> --- a/index.rst
>> +++ b/index.rst
>> @@ -26,6 +26,7 @@ Contents:
>>     drm-tip
>>     drm-misc
>>     drm-intel
>> +   committer-guidelines
>>     commit-access
>>     getting-started
>>     dim
>> -- 
>> 2.11.0
>> 

-- 
Jani Nikula, Intel Open Source Graphics Center


More information about the dim-tools mailing list