From: "Daniel P. Berrangé" <berrange@redhat.com>
To: qemu-devel@nongnu.org
Cc: "Richard Henderson" <richard.henderson@linaro.org>,
"Alexander Graf" <agraf@csgraf.de>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Michael S. Tsirkin" <mst@redhat.com>,
"Markus Armbruster" <armbru@redhat.com>,
"Phil Mathieu-Daudé" <philmd@linaro.org>,
"Stefan Hajnoczi" <stefanha@redhat.com>,
"Thomas Huth" <thuth@redhat.com>, "Kevin Wolf" <kwolf@redhat.com>,
"Gerd Hoffmann" <kraxel@redhat.com>,
"Mark Cave-Ayland" <mark.cave-ayland@ilande.co.uk>,
"Peter Maydell" <peter.maydell@linaro.org>,
"Daniel P. Berrangé" <berrange@redhat.com>
Subject: [PATCH 1/2] docs: introduce dedicated page about code provenance / sign-off
Date: Thu, 23 Nov 2023 11:40:25 +0000 [thread overview]
Message-ID: <20231123114026.3589272-2-berrange@redhat.com> (raw)
In-Reply-To: <20231123114026.3589272-1-berrange@redhat.com>
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
+ 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.
+
+ * **``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``
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+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
next prev parent reply other threads:[~2023-11-23 11:41 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-11-23 11:40 [PATCH 0/2] docs: define policy forbidding use of "AI" / LLM code generators Daniel P. Berrangé
2023-11-23 11:40 ` Daniel P. Berrangé [this message]
2023-11-23 11:58 ` [PATCH 1/2] docs: introduce dedicated page about code provenance / sign-off Philippe Mathieu-Daudé
2023-11-23 17:08 ` Daniel P. Berrangé
2023-11-23 23:56 ` Michael S. Tsirkin
2023-11-23 13:01 ` Peter Maydell
2023-11-23 17:12 ` Daniel P. Berrangé
2023-11-23 13:16 ` Kevin Wolf
2023-11-23 17:12 ` Daniel P. Berrangé
2023-11-23 14:25 ` Michael S. Tsirkin
2023-11-23 17:16 ` Daniel P. Berrangé
2023-11-23 17:33 ` Michael S. Tsirkin
2023-11-24 11:11 ` Philippe Mathieu-Daudé
2023-11-24 11:27 ` Michael S. Tsirkin
2023-11-24 9:49 ` Kevin Wolf
2023-11-23 15:13 ` Stefan Hajnoczi
2024-01-27 14:36 ` Zhao Liu
2024-01-29 9:31 ` Daniel P. Berrangé
2024-01-29 9:35 ` Samuel Tardieu
2024-01-29 10:41 ` Peter Maydell
2024-01-29 11:00 ` Daniel P. Berrangé
2023-11-23 11:40 ` [PATCH 2/2] docs: define policy forbidding use of "AI" / LLM code generators Daniel P. Berrangé
2023-11-23 12:57 ` Alex Bennée
2023-11-23 17:37 ` Michal Suchánek
2023-11-23 23:27 ` Michael S. Tsirkin
2023-11-23 17:46 ` Daniel P. Berrangé
2023-11-23 23:53 ` Michael S. Tsirkin
2023-11-24 10:17 ` Kevin Wolf
2023-11-24 10:33 ` Alex Bennée
2023-11-24 10:42 ` Michael S. Tsirkin
2023-11-24 10:43 ` Peter Maydell
2023-11-24 11:02 ` Michael S. Tsirkin
2023-11-24 11:37 ` Daniel P. Berrangé
2023-11-24 11:39 ` Michael S. Tsirkin
2023-11-24 11:40 ` Michael S. Tsirkin
2023-11-23 13:20 ` Kevin Wolf
2023-11-23 14:35 ` Michael S. Tsirkin
2023-11-23 14:56 ` Manos Pitsidianakis
2023-11-23 15:13 ` Michael S. Tsirkin
2023-11-23 15:29 ` Philippe Mathieu-Daudé
2023-11-23 17:06 ` Michael S. Tsirkin
2023-11-23 17:29 ` Michal Suchánek
2023-11-23 18:05 ` Michael S. Tsirkin
2023-11-23 15:32 ` Alex Bennée
2023-11-23 18:02 ` Daniel P. Berrangé
2023-11-23 18:10 ` Peter Maydell
2023-11-24 10:25 ` Kevin Wolf
2023-11-24 10:37 ` Michael S. Tsirkin
2023-11-24 10:42 ` Manos Pitsidianakis
2023-11-23 17:58 ` Daniel P. Berrangé
2023-11-23 22:39 ` Michael S. Tsirkin
2023-11-24 9:06 ` Daniel P. Berrangé
2023-11-24 9:27 ` Michael S. Tsirkin
2023-11-24 10:21 ` Alex Bennée
2023-11-24 10:30 ` Michael S. Tsirkin
2023-11-24 11:41 ` Daniel P. Berrangé
2023-11-23 15:22 ` Stefan Hajnoczi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231123114026.3589272-2-berrange@redhat.com \
--to=berrange@redhat.com \
--cc=agraf@csgraf.de \
--cc=alex.bennee@linaro.org \
--cc=armbru@redhat.com \
--cc=kraxel@redhat.com \
--cc=kwolf@redhat.com \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=mst@redhat.com \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=stefanha@redhat.com \
--cc=thuth@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).