linux-doc.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] submitting-patches.rst: streamline for git usage
@ 2020-08-27 17:42 Drew DeVault
  2020-08-28  9:47 ` Jani Nikula
  2020-08-31 22:26 ` Jonathan Corbet
  0 siblings, 2 replies; 6+ messages in thread
From: Drew DeVault @ 2020-08-27 17:42 UTC (permalink / raw)
  To: linux-doc, Jonathan Corbet; +Cc: Drew DeVault

This document is a bit intimidating to new patch submitters, and this
change streamlines it a bit. We presume git usage, because it's much
easier to use and most devs coming at the kernel are likely to be
familiar with it.

I've also added a couple of links to third-party resources which I have
built, namely the following:

https://git-send-email.io
https://useplaintext.email

I additionally removed information designed for subsystem and branch
maintainers, as it's unlikely to be useful for a first-time contributor.
Perhaps this documentation should be moved elsewhere?
---
 Documentation/process/submitting-patches.rst | 169 +++++--------------
 1 file changed, 40 insertions(+), 129 deletions(-)

diff --git a/Documentation/process/submitting-patches.rst b/Documentation/process/submitting-patches.rst
index 5219bf3cddfc..f3312e2cb56b 100644
--- a/Documentation/process/submitting-patches.rst
+++ b/Documentation/process/submitting-patches.rst
@@ -18,11 +18,10 @@ submitting code.  If you are submitting a driver, also read
 for device tree binding patches, read
 Documentation/devicetree/bindings/submitting-patches.rst.
 
-Many of these steps describe the default behavior of the ``git`` version
-control system; if you use ``git`` to prepare your patches, you'll find much
-of the mechanical work done for you, though you'll still need to prepare
-and document a sensible set of patches.  In general, use of ``git`` will make
-your life as a kernel developer easier.
+This documentation assumes that you're using ``git`` to prepare your patches.
+If you're unfamiliar with ``git``, you would be well-advised to learn how to
+use it, it will make your life as a kernel developer and in general much
+easier.
 
 0) Obtain a current source tree
 -------------------------------
@@ -39,67 +38,9 @@ patches prepared against those trees.  See the **T:** entry for the subsystem
 in the MAINTAINERS file to find that tree, or simply ask the maintainer if
 the tree is not listed there.
 
-It is still possible to download kernel releases via tarballs (as described
-in the next section), but that is the hard way to do kernel development.
-
-1) ``diff -up``
----------------
-
-If you must generate your patches by hand, use ``diff -up`` or ``diff -uprN``
-to create patches.  Git generates patches in this form by default; if
-you're using ``git``, you can skip this section entirely.
-
-All changes to the Linux kernel occur in the form of patches, as
-generated by :manpage:`diff(1)`.  When creating your patch, make sure to
-create it in "unified diff" format, as supplied by the ``-u`` argument
-to :manpage:`diff(1)`.
-Also, please use the ``-p`` argument which shows which C function each
-change is in - that makes the resultant ``diff`` a lot easier to read.
-Patches should be based in the root kernel source directory,
-not in any lower subdirectory.
-
-To create a patch for a single file, it is often sufficient to do::
-
-	SRCTREE=linux
-	MYFILE=drivers/net/mydriver.c
-
-	cd $SRCTREE
-	cp $MYFILE $MYFILE.orig
-	vi $MYFILE	# make your change
-	cd ..
-	diff -up $SRCTREE/$MYFILE{.orig,} > /tmp/patch
-
-To create a patch for multiple files, you should unpack a "vanilla",
-or unmodified kernel source tree, and generate a ``diff`` against your
-own source tree.  For example::
-
-	MYSRC=/devel/linux
-
-	tar xvfz linux-3.19.tar.gz
-	mv linux-3.19 linux-3.19-vanilla
-	diff -uprN -X linux-3.19-vanilla/Documentation/dontdiff \
-		linux-3.19-vanilla $MYSRC > /tmp/patch
-
-``dontdiff`` is a list of files which are generated by the kernel during
-the build process, and should be ignored in any :manpage:`diff(1)`-generated
-patch.
-
-Make sure your patch does not include any extra files which do not
-belong in a patch submission.  Make sure to review your patch -after-
-generating it with :manpage:`diff(1)`, to ensure accuracy.
-
-If your changes produce a lot of deltas, you need to split them into
-individual patches which modify things in logical stages; see
-:ref:`split_changes`.  This will facilitate review by other kernel developers,
-very important if you want your patch accepted.
-
-If you're using ``git``, ``git rebase -i`` can help you with this process.  If
-you're not using ``git``, ``quilt`` <https://savannah.nongnu.org/projects/quilt>
-is another popular alternative.
-
 .. _describe_changes:
 
-2) Describe your changes
+1) Describe your changes
 ------------------------
 
 Describe your problem.  Whether your patch is a one-line bug fix or
@@ -203,7 +144,7 @@ An example call::
 
 .. _split_changes:
 
-3) Separate your changes
+2) Separate your changes
 ------------------------
 
 Separate each **logical change** into a separate patch.
@@ -236,7 +177,7 @@ then only post say 15 or so at a time and wait for review and integration.
 
 
 
-4) Style-check your changes
+3) Style-check your changes
 ---------------------------
 
 Check your patch for basic style violations, details of which can be
@@ -267,7 +208,7 @@ You should be able to justify all violations that remain in your
 patch.
 
 
-5) Select the recipients for your patch
+4) Select the recipients for your patch
 ---------------------------------------
 
 You should always copy the appropriate subsystem maintainer(s) on any patch
@@ -342,7 +283,7 @@ Trivial patches must qualify for one of the following rules:
 
 
 
-6) No MIME, no links, no compression, no attachments.  Just plain text
+5) No MIME, no links, no compression, no attachments.  Just plain text
 ----------------------------------------------------------------------
 
 Linus and other kernel developers need to be able to read and comment
@@ -350,7 +291,12 @@ on the changes you are submitting.  It is important for a kernel
 developer to be able to "quote" your changes, using standard e-mail
 tools, so that they may comment on specific portions of your code.
 
-For this reason, all patches should be submitted by e-mail "inline".
+For this reason, all patches should be submitted by e-mail "inline". The
+easiest way to do this is with ``git send-email``, which is strongly
+recommended.  An interactive tutorial for ``git send-email`` is available at
+https://git-send-email.io.
+
+If you choose not to use ``git send-email``:
 
 .. warning::
 
@@ -370,7 +316,7 @@ See :ref:`Documentation/process/email-clients.rst <email_clients>`
 for hints about configuring your e-mail client so that it sends your patches
 untouched.
 
-7) E-mail size
+6) E-mail size
 --------------
 
 Large changes are not appropriate for mailing lists, and some
@@ -380,13 +326,17 @@ server, and provide instead a URL (link) pointing to your patch.  But note
 that if your patch exceeds 300 kB, it almost certainly needs to be broken up
 anyway.
 
-8) Respond to review comments
+``git request-pull`` may be used to generate an email which summarizes your changes
+and provides a URL to fetch your tree from. See :ref:`_request_pull`.
+
+7) Respond to review comments
 -----------------------------
 
 Your patch will almost certainly get comments from reviewers on ways in
-which the patch can be improved.  You must respond to those comments;
-ignoring reviewers is a good way to get ignored in return.  Review comments
-or questions that do not lead to a code change should almost certainly
+which the patch can be improved, in the form of a reply to your email. You must
+respond to those comments; ignoring reviewers is a good way to get ignored in
+return. You can simply reply to their emails to answer their comments. Review
+comments or questions that do not lead to a code change should almost certainly
 bring about a comment or changelog entry so that the next reviewer better
 understands what is going on.
 
@@ -395,8 +345,12 @@ for their time.  Code review is a tiring and time-consuming process, and
 reviewers sometimes get grumpy.  Even in that case, though, respond
 politely and address the problems they have pointed out.
 
+When replying to emails with feedback, please use bottom-posting and plain text
+emails. To configure your email client for plain text, a guide is available at
+https://useplaintext.email.
+
 
-9) Don't get discouraged - or impatient
+8) Don't get discouraged - or impatient
 ---------------------------------------
 
 After you have submitted your change, be patient and wait.  Reviewers are
@@ -410,7 +364,7 @@ one week before resubmitting or pinging reviewers - possibly longer during
 busy times like merge windows.
 
 
-10) Include PATCH in the subject
+9) Include PATCH in the subject
 --------------------------------
 
 Due to high e-mail traffic to Linus, and to linux-kernel, it is common
@@ -418,9 +372,10 @@ convention to prefix your subject line with [PATCH].  This lets Linus
 and other kernel developers more easily distinguish patches from other
 e-mail discussions.
 
+``git send-email`` will do this for you automatically.
 
 
-11) Sign your work - the Developer's Certificate of Origin
+10) Sign your work - the Developer's Certificate of Origin
 ----------------------------------------------------------
 
 To improve tracking of who did what, especially with patches that can
@@ -465,59 +420,14 @@ then you just add a line saying::
 	Signed-off-by: Random J Developer <random@developer.example.org>
 
 using your real name (sorry, no pseudonyms or anonymous contributions.)
+This will be done for you automatically if you use ``git commit -s``.
 
 Some people also put extra tags at the end.  They'll just be ignored for
 now, but you can do this to mark internal company procedures or just
 point out some special detail about the sign-off.
 
-If you are a subsystem or branch maintainer, sometimes you need to slightly
-modify patches you receive in order to merge them, because the code is not
-exactly the same in your tree and the submitters'. If you stick strictly to
-rule (c), you should ask the submitter to rediff, but this is a totally
-counter-productive waste of time and energy. Rule (b) allows you to adjust
-the code, but then it is very impolite to change one submitter's code and
-make him endorse your bugs. To solve this problem, it is recommended that
-you add a line between the last Signed-off-by header and yours, indicating
-the nature of your changes. While there is nothing mandatory about this, it
-seems like prepending the description with your mail and/or name, all
-enclosed in square brackets, is noticeable enough to make it obvious that
-you are responsible for last-minute changes. Example::
-
-	Signed-off-by: Random J Developer <random@developer.example.org>
-	[lucky@maintainer.example.org: struct foo moved from foo.c to foo.h]
-	Signed-off-by: Lucky K Maintainer <lucky@maintainer.example.org>
-
-This practice is particularly helpful if you maintain a stable branch and
-want at the same time to credit the author, track changes, merge the fix,
-and protect the submitter from complaints. Note that under no circumstances
-can you change the author's identity (the From header), as it is the one
-which appears in the changelog.
-
-Special note to back-porters: It seems to be a common and useful practice
-to insert an indication of the origin of a patch at the top of the commit
-message (just after the subject line) to facilitate tracking. For instance,
-here's what we see in a 3.x-stable release::
-
-  Date:   Tue Oct 7 07:26:38 2014 -0400
-
-    libata: Un-break ATA blacklist
-
-    commit 1c40279960bcd7d52dbdf1d466b20d24b99176c8 upstream.
-
-And here's what might appear in an older kernel once a patch is backported::
-
-    Date:   Tue May 13 22:12:27 2008 +0200
-
-        wireless, airo: waitbusy() won't delay
-
-        [backport of 2.6 commit b7acbdfbd1f277c1eb23f344f899cfa4cd0bf36a]
-
-Whatever the format, this information provides a valuable help to people
-tracking your trees, and to people trying to troubleshoot bugs in your
-tree.
-
 
-12) When to use Acked-by:, Cc:, and Co-developed-by:
+11) When to use Acked-by:, Cc:, and Co-developed-by:
 -------------------------------------------------------
 
 The Signed-off-by: tag indicates that the signer was involved in the
@@ -586,7 +496,7 @@ Example of a patch submitted by a Co-developed-by: author::
 	Signed-off-by: Submitting Co-Author <sub@coauthor.example.org>
 
 
-13) Using Reported-by:, Tested-by:, Reviewed-by:, Suggested-by: and Fixes:
+12) Using Reported-by:, Tested-by:, Reviewed-by:, Suggested-by: and Fixes:
 --------------------------------------------------------------------------
 
 The Reported-by tag gives credit to people who find bugs and report them and it
@@ -650,7 +560,7 @@ for more details.
 
 .. _the_canonical_patch_format:
 
-14) The canonical patch format
+13) The canonical patch format
 ------------------------------
 
 This section describes how the patch itself should be formatted.  Note
@@ -773,7 +683,7 @@ references.
 
 .. _explicit_in_reply_to:
 
-15) Explicit In-Reply-To headers
+14) Explicit In-Reply-To headers
 --------------------------------
 
 It can be helpful to manually add In-Reply-To: headers to a patch
@@ -787,7 +697,7 @@ helpful, you can use the https://lkml.kernel.org/ redirector (e.g., in
 the cover email text) to link to an earlier version of the patch series.
 
 
-16) Providing base tree information
+15) Providing base tree information
 -----------------------------------
 
 When other developers receive your patches and start the review process,
@@ -837,8 +747,9 @@ letter or in the first patch of the series and it should be placed
 either below the ``---`` line or at the very bottom of all other
 content, right before your email signature.
 
+.. _request_pull:
 
-17) Sending ``git pull`` requests
+16) Sending ``git pull`` requests
 ---------------------------------
 
 If you have a series of patches, it may be most convenient to have the
-- 
2.28.0


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH] submitting-patches.rst: streamline for git usage
  2020-08-27 17:42 [PATCH] submitting-patches.rst: streamline for git usage Drew DeVault
@ 2020-08-28  9:47 ` Jani Nikula
  2020-08-28 12:31   ` Drew DeVault
  2020-08-31 22:26 ` Jonathan Corbet
  1 sibling, 1 reply; 6+ messages in thread
From: Jani Nikula @ 2020-08-28  9:47 UTC (permalink / raw)
  To: Drew DeVault, linux-doc, Jonathan Corbet; +Cc: Drew DeVault

On Thu, 27 Aug 2020, Drew DeVault <sir@cmpwn.com> wrote:
> This document is a bit intimidating to new patch submitters, and this
> change streamlines it a bit. We presume git usage, because it's much
> easier to use and most devs coming at the kernel are likely to be
> familiar with it.

...and those who deviate from git should know what they're doing without
this.

> -2) Describe your changes
> +1) Describe your changes
>  ------------------------

I suggest just tossing the numbering altoghether while at it.

BR,
Jani.


-- 
Jani Nikula, Intel Open Source Graphics Center

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] submitting-patches.rst: streamline for git usage
  2020-08-28  9:47 ` Jani Nikula
@ 2020-08-28 12:31   ` Drew DeVault
  2020-08-31  7:13     ` Jani Nikula
  0 siblings, 1 reply; 6+ messages in thread
From: Drew DeVault @ 2020-08-28 12:31 UTC (permalink / raw)
  To: Jani Nikula, linux-doc, Jonathan Corbet; +Cc: Drew DeVault

On Fri Aug 28, 2020 at 5:47 AM EDT, Jani Nikula wrote:
> > -2) Describe your changes
> > +1) Describe your changes
> >  ------------------------
>
> I suggest just tossing the numbering altoghether while at it.

Because there are so many headings, I think the numbering is still
useful for being able to easily refer to a specific step when asking
questions.

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] submitting-patches.rst: streamline for git usage
  2020-08-28 12:31   ` Drew DeVault
@ 2020-08-31  7:13     ` Jani Nikula
  0 siblings, 0 replies; 6+ messages in thread
From: Jani Nikula @ 2020-08-31  7:13 UTC (permalink / raw)
  To: Drew DeVault, linux-doc, Jonathan Corbet; +Cc: Drew DeVault

On Fri, 28 Aug 2020, "Drew DeVault" <sir@cmpwn.com> wrote:
> On Fri Aug 28, 2020 at 5:47 AM EDT, Jani Nikula wrote:
>> > -2) Describe your changes
>> > +1) Describe your changes
>> >  ------------------------
>>
>> I suggest just tossing the numbering altoghether while at it.
>
> Because there are so many headings, I think the numbering is still
> useful for being able to easily refer to a specific step when asking
> questions.

The unpopular answer is, of course, that you can reference the headings
in the HTML. For example [1].


BR,
Jani.


[1] https://www.kernel.org/doc/html/latest/process/submitting-patches.html#sign-your-work-the-developer-s-certificate-of-origin

-- 
Jani Nikula, Intel Open Source Graphics Center

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] submitting-patches.rst: streamline for git usage
  2020-08-27 17:42 [PATCH] submitting-patches.rst: streamline for git usage Drew DeVault
  2020-08-28  9:47 ` Jani Nikula
@ 2020-08-31 22:26 ` Jonathan Corbet
  2020-08-31 23:01   ` Drew DeVault
  1 sibling, 1 reply; 6+ messages in thread
From: Jonathan Corbet @ 2020-08-31 22:26 UTC (permalink / raw)
  To: Drew DeVault; +Cc: linux-doc

On Thu, 27 Aug 2020 13:42:37 -0400
Drew DeVault <sir@cmpwn.com> wrote:

> This document is a bit intimidating to new patch submitters, and this
> change streamlines it a bit. We presume git usage, because it's much
> easier to use and most devs coming at the kernel are likely to be
> familiar with it.
> 
> I've also added a couple of links to third-party resources which I have
> built, namely the following:
> 
> https://git-send-email.io
> https://useplaintext.email
> 
> I additionally removed information designed for subsystem and branch
> maintainers, as it's unlikely to be useful for a first-time contributor.
> Perhaps this documentation should be moved elsewhere?
> ---
>  Documentation/process/submitting-patches.rst | 169 +++++--------------
>  1 file changed, 40 insertions(+), 129 deletions(-)

So I am absolutely sympathetic with the idea of simplifying this
document... you should have seen it before the last pass I made.  I think
we want a number of these changes, but I do have some requests.

- Assuming use of Git makes sense to me; I don't think we need to be
  suggesting (or documenting) creating patches by hand at this point.  So
  that's all good.

- We have a document on configuring email clients for use in kernel
  development; we should be pointing there rather than to outside sites.
  There might well be a place for a pointer to useplaintext.email in
  Documentation/process/email-clients.rst, but that's a separate patch.

- In general we've been removing manual section numbers for the reasons
  amply demonstrated in this patch; maintaining them is a pain and, once
  you've gone through and changed them all, referring to sections by
  number doesn't work as well anymore.  My own feeling is that they should
  come out.

- Please don't just remove maintainer information like that.  If it needs
  a new home, fine, find a new home for it.  We have a nascent maintainers
  manual that could certainly use some help.

- Please split your work into multiple, single-purpose patches so that
  they can be reviewed more easily.

Thanks,

jon

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH] submitting-patches.rst: streamline for git usage
  2020-08-31 22:26 ` Jonathan Corbet
@ 2020-08-31 23:01   ` Drew DeVault
  0 siblings, 0 replies; 6+ messages in thread
From: Drew DeVault @ 2020-08-31 23:01 UTC (permalink / raw)
  To: Jonathan Corbet; +Cc: linux-doc

Thanks for the feedback!

On Mon Aug 31, 2020 at 6:26 PM EDT, Jonathan Corbet wrote:
> - We have a document on configuring email clients for use in kernel
> development; we should be pointing there rather than to outside sites.
> There might well be a place for a pointer to useplaintext.email in
> Documentation/process/email-clients.rst, but that's a separate patch.

Yeah, I was wondering if this'd come up. There are an awful lot of email
clients and keeping an up-to-date list of instructions for configuring
plaintext is unfortunately an entire project in and of itself.

Will move to email-clients.rst in a separate patch for further
discussion.

> - In general we've been removing manual section numbers for the reasons
> amply demonstrated in this patch; maintaining them is a pain and, once
> you've gone through and changed them all, referring to sections by
> number doesn't work as well anymore. My own feeling is that they should
> come out.

Should this be split into its own patch?

> - Please don't just remove maintainer information like that. If it needs
> a new home, fine, find a new home for it. We have a nascent maintainers
> manual that could certainly use some help.

Totally fair, I'll look for a new home for this info.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2020-08-31 23:04 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-08-27 17:42 [PATCH] submitting-patches.rst: streamline for git usage Drew DeVault
2020-08-28  9:47 ` Jani Nikula
2020-08-28 12:31   ` Drew DeVault
2020-08-31  7:13     ` Jani Nikula
2020-08-31 22:26 ` Jonathan Corbet
2020-08-31 23:01   ` Drew DeVault

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).