git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: "SZEDER Gábor" <szeder.dev@gmail.com>
To: Elijah Newren <newren@gmail.com>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: Pain points in PRs [was: Re: RFC: Moving git-gui development to GitHub]
Date: Mon, 19 Apr 2021 22:33:27 +0200	[thread overview]
Message-ID: <20210419203327.GV2947267@szeder.dev> (raw)
In-Reply-To: <CABPp-BEcpasV4vBTm0uxQ4Vzm88MQAX-ArDG4e9QU8tEoNsZWw@mail.gmail.com>

On Wed, Nov 20, 2019 at 09:13:04AM -0800, Elijah Newren wrote:
> > On Wed, Oct 30, 2019 at 7:21 AM Elijah Newren <newren@gmail.com> wrote:
> > > Projects which switch to GitHub tend to have overall commit quality go
> > > down IMO, because the system (a) makes it nearly impossible to review
> > > commit messages, so people eventually degrade to writing really bad
> > > ones,
> > What do you mean here, exactly? In what way is it "nearly impossible"
> > to review commit messages in GH?
> 
> My lengthy rant wasn't good enough for you?  ;-)  Well, I'll try even
> harder to bore everyone to death, then and extend my rant a bit...

Thank you very much for taking the time and effort to write it up.

It summarized some of my main gripes with PR-based collaboration on
GitHub with such clarity that I would never been able to achive.

(The recent "Pain points in Git's patch flow" thread reminded me that
I saved this message and even marked it as important ages ago... but
haven't gotten around to read it until now.

  https://public-inbox.org/git/YHaIBvl6Mf7ztJB3@google.com/T/
)

> Reviewing is the process of providing feedback on proposed changes.
> Code review tools and mechanisms typically provide ways to (a) see
> proposed changes in isolation and (b) comment on individual lines and
> preserve context (with the goal of later merging a group of commits
> that implement something useful).
> 
> git-format-patch and git-send-email combined with usage of email
> clients that know how to quote previous emails and let you respond
> inline are a natural way of achieving both (a) and (b).
> 
> GUI tools can, of course, also achieve something similar by showing
> proposed changes and allowing commenting on individual lines in
> context.  GitHub fails pretty hard on both counts, particularly for
> commit messages.  It guides people to an overall diff rather than to
> the diffs inside individual commits and completely omits all commit
> messages when you do so.  It does provide a way to access individual
> commits and their diffs, though it makes it somewhat unnatural.  (It
> at least isn't as awful as it used to be in years past, when any
> comments on individual commits were completely lost and separated from
> the PR.)  And even if you do "go against the grain" to comment on
> individual commits, there is no provided mechanism for commenting on
> the commit message itself.  Instead it has to be given as a general
> comment on the overall set of changes, which then loses the context of
> what you are commenting on unless you re-include and quote it
> yourself.  That usually doesn't happen, so when you comment on four
> commit messages in a review, you have four separate global comments
> and someone attempting to respond to them doesn't get to see the
> commit messages next to them, resulting in confusion.  Even if you do
> re-include and quote the commit message bits you are commenting on,
> the resulting comment isn't in any way tied to the commit in question
> in the UI.
> 
> So people who use GitHub for code review just don't bother.   They
> write non-isolated commits and far from rarely use awful commit
> messages.  Then they merge this abomination of history, or possibly
> even worse, they squash merge it all to make it impossible for any
> future readers to be able to dissect.
> 
> Yeah, yeah, small features so that the review is smaller and easier.
> That is important, yes, but it still conflates two things and thus
> ruins reviews.  Each PR should implement something useful.  Commits
> should be designed both for current and future reviewers to see a
> clear path towards how that useful thing was implemented.  Sometimes
> one commit is enough, but conflating the two necessarily either means
> sometimes creating one-commit PRs that don't actually implement
> anything useful, or a cognitive overload for code reviewers.  GitHub
> simultaneously encourages bad behavior (bad commit messages since they
> are designed to not be reviewable, non-isolated commits, fixup commits
> that are never properly squashed, etc.) and penalizes good behavior
> (folks who try to clean up their sequence of commits are met with
> problems ranging from GitHub screwing up the topological ordering of a
> linear commit history, to poor ability to see incremental changes
> whenever rebasing happens, to reckless squash merging of all their
> careful work into a single commit as something close to an act of war
> against any future readers who want to dig into why certain changes
> were made).  Yes, GitHub has gotten much better at code reviews; it's
> merely abysmally awful these days as opposed to a complete joke as it
> was in years past.  But it's still so bad that I have seen people try
> to solve this by having a sequence of PRs per (small) feature they
> want to implement, even though GitHub provides no way to denote
> dependencies or ordering between PRs.
> 
> You may think I've gone off on a bunch of tangents, but fundamentally
> I believe that almost all of these other problems predominantly arise
> as secondary and tertiary effects of not understanding that commit
> messages should be a first class citizen of code review.
> 
> Sure, you can claim all you want that it is entirely possible to
> review commit messages within the GitHub UI and it's just extremely
> inconvenient, yadda, yadda, but the truth of the matter is that people
> everywhere struggle to even do code reviews at all, and when they do
> they all too often turn into rubberstamp exercises or don't delve
> deeply enough.  In that context, I believe my "nearly impossible"
> wording is entirely warranted.  Using a tool that simultaneously
> encourages bad behavior and penalizes good behavior will not so
> surprisingly yield bad behavior.  GitHub PRs are such a tool, IMO.
> 
> (To be fair, I'll note that GitHub has awesome code browsing, really
> easy setup and administration of new repositories and organizations,
> simple and reasonable and thus pretty nice code search, etc., etc.
> I'm not saying GitHub is a bad tool, I actually think most of it is a
> very excellent tool; I am just claiming that the PR section of it is
> very bad.)
> 
> 
> Elijah

  reply	other threads:[~2021-04-19 20:34 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-23 20:13 RFC: Moving git-gui development to GitHub Pratyush Yadav
2019-10-24  2:06 ` Junio C Hamano
2019-10-24  7:37   ` Birger Skogeng Pedersen
2019-10-24 17:16     ` Denton Liu
2019-10-24 19:06       ` Pratyush Yadav
2019-10-24 21:29       ` Pratyush Yadav
2019-10-25  5:33         ` Birger Skogeng Pedersen
2019-10-25 17:47           ` Pratyush Yadav
2019-10-24 19:46 ` Elijah Newren
2019-10-25 18:36   ` Pratyush Yadav
2019-10-26 18:25   ` Jakub Narebski
2019-10-28 10:13     ` Konstantin Ryabitsev
2019-10-30  6:21     ` Elijah Newren
2019-11-20 12:19       ` Birger Skogeng Pedersen
2019-11-20 17:13         ` Elijah Newren
2021-04-19 20:33           ` SZEDER Gábor [this message]
2021-04-19 21:52             ` Pain points in PRs [was: Re: RFC: Moving git-gui development to GitHub] Junio C Hamano
2021-04-20  7:49               ` Son Luong Ngoc
2021-04-20 20:17                 ` Junio C Hamano
2021-04-22 20:22             ` Felipe Contreras

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210419203327.GV2947267@szeder.dev \
    --to=szeder.dev@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=newren@gmail.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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).