[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 1/2] docs: introduce dedicated page about code provenance / s
From: |
Stefan Hajnoczi |
Subject: |
Re: [PATCH 1/2] docs: introduce dedicated page about code provenance / sign-off |
Date: |
Thu, 23 Nov 2023 10:13:15 -0500 |
On Thu, Nov 23, 2023 at 11:40:25AM +0000, Daniel P. Berrangé wrote:
> Currently we have a short paragraph saying that patches must include
> a Signed-off-by line, and merely link to the kernel documentation.
> The linked kernel docs have alot of content beyond the part about
> sign-off an thus is misleading/distracting to QEMU contributors.
>
> This introduces a dedicated 'code-provenance' page in QEMU talking
> about why we require sign-off, explaining the other tags we commonly
> use, and what to do in some edge cases.
>
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
> docs/devel/code-provenance.rst | 197 ++++++++++++++++++++++++++++++
> docs/devel/index-process.rst | 1 +
> docs/devel/submitting-a-patch.rst | 18 +--
> 3 files changed, 201 insertions(+), 15 deletions(-)
> create mode 100644 docs/devel/code-provenance.rst
>
> diff --git a/docs/devel/code-provenance.rst b/docs/devel/code-provenance.rst
> new file mode 100644
> index 0000000000..b4591a2dec
> --- /dev/null
> +++ b/docs/devel/code-provenance.rst
> @@ -0,0 +1,197 @@
> +.. _code-provenance:
> +
> +Code provenance
> +===============
> +
> +Certifying patch submissions
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +The QEMU community **mandates** all contributors to certify provenance
> +of patch submissions they make to the project. To put it another way,
> +contributors must indicate that they are legally permitted to contribute
> +to the project.
> +
> +Certification is achieved with a low overhead by adding a single line
> +to the bottom of every git commit::
> +
> + Signed-off-by: YOUR NAME <YOUR@EMAIL>
> +
> +This existence of this line asserts that the author of the patch is
> +contributing in accordance with the `Developer's Certificate of
> +Origin <https://developercertifcate.org>`__:
> +
> +.. _dco:
> +
> +::
> + Developer's Certificate of Origin 1.1
> +
> + By making a contribution to this project, I certify that:
> +
> + (a) The contribution was created in whole or in part by me and I
> + have the right to submit it under the open source license
> + indicated in the file; or
> +
> + (b) The contribution is based upon previous work that, to the best
> + of my knowledge, is covered under an appropriate open source
> + license and I have the right under that license to submit that
> + work with modifications, whether created in whole or in part
> + by me, under the same open source license (unless I am
> + permitted to submit under a different license), as indicated
> + in the file; or
> +
> + (c) The contribution was provided directly to me by some other
> + person who certified (a), (b) or (c) and I have not modified
> + it.
> +
> + (d) I understand and agree that this project and the contribution
> + are public and that a record of the contribution (including all
> + personal information I submit with it, including my sign-off) is
> + maintained indefinitely and may be redistributed consistent with
> + this project or the open source license(s) involved.
> +
> +It is generally expected that the name and email addresses used in one
> +of the ``Signed-off-by`` lines, matches that of the git commit ``Author``
> +field. If the person sending the mail is also one of the patch authors,
> +it is further expected that the mail ``From:`` line name & address match
> +one of the ``Signed-off-by`` lines.
> +
> +Multiple authorship
> +~~~~~~~~~~~~~~~~~~~
> +
> +It is not uncommon for a patch to have contributions from multiple
> +authors. In such a scenario, a git commit will usually be expected
> +to have a ``Signed-off-by`` line for each contributor involved in
> +creatin of the patch. Some edge cases:
> +
> + * The non-primary author's contributions were so trivial that
> + they can be considered not subject to copyright. In this case
> + the secondary authors need not include a ``Signed-off-by``.
> +
> + This case most commonly applies where QEMU reviewers give short
> + snippets of code as suggested fixes to a patch. The reviewers
> + don't need to have their own ``Signed-off-by`` added unless
> + their code suggestion was unusually large.
> +
> + * Both contributors work for the same employer and the employer
> + requires copyright assignment.
> +
> + It can be said that in this case a ``Signed-off-by`` is indicating
> + that the person has permission to contributeo from their employer
s/contributeo/contribute/
> + who is the copyright holder. It is none the less still preferrable
> + to include a ``Signed-off-by`` for each contributor, as in some
> + countries employees are not able to assign copyright to their
> + employer, and it also covers any time invested outside working
> + hours.
> +
> +Other commit tags
> +~~~~~~~~~~~~~~~~~
> +
> +While the ``Signed-off-by`` tag is mandatory, there are a number of
> +other tags that are commonly used during QEMU development
> +
> + * **``Reviewed-by``**: when a QEMU community member reviews a patch
> + on the mailing list, if they consider the patch acceptable, they
> + should send an email reply containing a ``Reviewed-by`` tag.
> +
> + NB: a subsystem maintainer sending a pull request would replace
> + their own ``Reviewed-by`` with another ``Signed-off-by``
> +
> + * **``Acked-by``**: when a QEMU subsystem maintainer approves a patch
> + that touches their subsystem, but intends to allow a different
> + maintainer to queue it and send a pull request, they would send
> + a mail containing a ``Acked-by`` tag.
> +
> + * **``Tested-by``**: when a QEMU community member has functionally
> + tested the behaviour of the patch in some manner, they should
> + send an email reply conmtaning a ``Tested-by`` tag.
s/conmtaning/containing/
> +
> + * **``Reported-by``**: when a QEMU community member reports a problem
> + via the mailing list, or some other informal channel that is not
> + the issue tracker, it is good practice to credit them by including
> + a ``Reported-by`` tag on any patch fixing the issue. When the
> + problem is reported via the GitLab issue tracker, however, it is
> + sufficient to just include a link to the issue.
> +
> +Subsystem maintainer requirements
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +When a subsystem maintainer accepts a patch from a contributor, in
> +addition to the normal code review points, they are expected to validate
> +the presence of suitable ``Signed-off-by`` tags.
> +
> +At the time they queue the patch in their subsystem tree, the maintainer
> +**MUST** also then add their own ``Signed-off-by`` to indicate that they
> +have done the aforementioned validation.
> +
> +The subsystem maintainer submitting a pull request is **NOT** expected to
> +have a ``Reviewed-by`` tag on the patch, since this is implied by their
> +own ``Signed-off-by``.
> +
> +Tools for adding ``Signed-of-by``
s/Signed-of-by/Signed-off-by/
> +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +There are a variety of ways tools can support adding ``Signed-off-by``
> +tags for patches, avoiding the need for contributors to manually
> +type in this repetitive text each time.
> +
> +git commands
> +^^^^^^^^^^^^
> +
> +When creating, or amending, a commit the ``-s`` flag to ``git commit``
> +will append a suitable line matching the configuring git author
> +details.
> +
> +If preparing patches using the ``git format-patch`` tool, the ``-s``
> +flag can be used to append a suitable line in the emails it creates,
> +without modifying the local commits. Alternatively to modify the
> +local commits on a branch en-mass::
> +
> + git rebase master -x 'git commit --amend --no-edit -s'
> +
> +emacs
> +^^^^^
> +
> +In the file ``$HOME/.emacs.d/abbrev_defs`` add::
> +
> + (define-abbrev-table 'global-abbrev-table
> + '(
> + ("8rev" "Reviewed-by: YOUR NAME <your@email.addr>" nil 1)
> + ("8ack" "Acked-by: YOUR NAME <your@email.addr>" nil 1)
> + ("8test" "Tested-by: YOUR NAME <your@email.addr>" nil 1)
> + ("8sob" "Signed-off-by: YOUR NAME <your@email.addr>" nil 1)
> + ))
> +
> +with this change, if you type (for example) ``8rev`` followed
> +by ``<space>`` or ``<enter>`` it will expand to the whole phrase.
> +
> +vim
> +^^^
> +
> +In the file ``$HOME/.vimrc`` add::
> +
> + iabbrev 8rev Reviewed-by: YOUR NAME <your@email.addr>
> + iabbrev 8ack Acked-by: YOUR NAME <your@email.addr>
> + iabbrev 8test Tested-by: YOUR NAME <your@email.addr>
> + iabbrev 8sob Signed-off-by: YOUR NAME <your@email.addr>
> +
> +with this change, if you type (for example) ``8rev`` followed
> +by ``<space>`` or ``<enter>`` it will expand to the whole phrase.
> +
> +Re-starting abandoned work
> +~~~~~~~~~~~~~~~~~~~~~~~~~~
> +
> +For a variety of reasons there are some patches that get submitted to
> +QEMU but never merged. An unrelated contributor may decide (months or
> +years later) to continue working from the abandoned patch and re-submit
> +it with extra changes.
> +
> +If the abandoned patch already had a ``Signed-off-by`` from the original
> +author this **must** be preserved. The new contributor **must** then add
> +their own ``Signed-off-by`` after the original one if they made any
> +further changes to it. It is common to include a comment just prior to
> +the new ``Signed-off-by`` indicating what extra changes were made. For
> +example::
> +
> + Signed-off-by: Some Person <some.person@example.com>
> + [Rebased and added support for 'foo']
> + Signed-off-by: New Person <new.person@example.com>
> diff --git a/docs/devel/index-process.rst b/docs/devel/index-process.rst
> index 362f97ee30..b54e58105e 100644
> --- a/docs/devel/index-process.rst
> +++ b/docs/devel/index-process.rst
> @@ -13,6 +13,7 @@ Notes about how to interact with the community and how and
> where to submit patch
> maintainers
> style
> submitting-a-patch
> + code-provenance
> trivial-patches
> stable-process
> submitting-a-pull-request
> diff --git a/docs/devel/submitting-a-patch.rst
> b/docs/devel/submitting-a-patch.rst
> index c641d948f1..ec541b3d15 100644
> --- a/docs/devel/submitting-a-patch.rst
> +++ b/docs/devel/submitting-a-patch.rst
> @@ -322,21 +322,9 @@ Patch emails must include a ``Signed-off-by:`` line
>
> Your patches **must** include a Signed-off-by: line. This is a hard
> requirement because it's how you say "I'm legally okay to contribute
> -this and happy for it to go into QEMU". The process is modelled after
> -the `Linux kernel
> -<http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/SubmittingPatches?id=f6f94e2ab1b33f0082ac22d71f66385a60d8157f#n297>`__
> -policy.
> -
> -If you wrote the patch, make sure your "From:" and "Signed-off-by:"
> -lines use the same spelling. It's okay if you subscribe or contribute to
> -the list via more than one address, but using multiple addresses in one
> -commit just confuses things. If someone else wrote the patch, git will
> -include a "From:" line in the body of the email (different from your
> -envelope From:) that will give credit to the correct author; but again,
> -that author's Signed-off-by: line is mandatory, with the same spelling.
> -
> -There are various tooling options for automatically adding these tags
> -include using ``git commit -s`` or ``git format-patch -s``. For more
> +this and happy for it to go into QEMU". For full guidance, read the
> +:ref:`code-provenance` documentation.
> +
> information see `SubmittingPatches 1.12
>
> <http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/SubmittingPatches?id=f6f94e2ab1b33f0082ac22d71f66385a60d8157f#n297>`__.
>
> --
> 2.41.0
>
signature.asc
Description: PGP signature
- Re: [PATCH 1/2] docs: introduce dedicated page about code provenance / sign-off, (continued)
Re: [PATCH 1/2] docs: introduce dedicated page about code provenance / sign-off, Peter Maydell, 2023/11/23
Re: [PATCH 1/2] docs: introduce dedicated page about code provenance / sign-off, Kevin Wolf, 2023/11/23
Re: [PATCH 1/2] docs: introduce dedicated page about code provenance / sign-off, Michael S. Tsirkin, 2023/11/23
Re: [PATCH 1/2] docs: introduce dedicated page about code provenance / sign-off,
Stefan Hajnoczi <=
[PATCH 2/2] docs: define policy forbidding use of "AI" / LLM code generators, Daniel P . Berrangé, 2023/11/23
- Re: [PATCH 2/2] docs: define policy forbidding use of "AI" / LLM code generators, Alex Bennée, 2023/11/23
- Re: [PATCH 2/2] docs: define policy forbidding use of "AI" / LLM code generators, Daniel P . Berrangé, 2023/11/23
- Re: [PATCH 2/2] docs: define policy forbidding use of "AI" / LLM code generators, Michael S. Tsirkin, 2023/11/23
- Re: [PATCH 2/2] docs: define policy forbidding use of "AI" / LLM code generators, Kevin Wolf, 2023/11/24
- Re: [PATCH 2/2] docs: define policy forbidding use of "AI" / LLM code generators, Alex Bennée, 2023/11/24
- Re: [PATCH 2/2] docs: define policy forbidding use of "AI" / LLM code generators, Michael S. Tsirkin, 2023/11/24
- Re: [PATCH 2/2] docs: define policy forbidding use of "AI" / LLM code generators, Peter Maydell, 2023/11/24