git@vger.kernel.org list mirror (unofficial, one of many)
 help / color / mirror / Atom feed
From: Elijah Newren <newren@gmail.com>
To: Jakub Narebski <jnareb@gmail.com>
Cc: Pratyush Yadav <me@yadavpratyush.com>,
	Git Mailing List <git@vger.kernel.org>,
	Bert Wesarg <bert.wesarg@googlemail.com>,
	Johannes Schindelin <johannes.schindelin@gmx.de>,
	Junio C Hamano <gitster@pobox.com>,
	Birger Skogeng Pedersen <birger.sp@gmail.com>,
	Philip Oakley <philipoakley@iee.email>,
	Johannes Sixt <j6t@kdbg.org>
Subject: Re: RFC: Moving git-gui development to GitHub
Date: Tue, 29 Oct 2019 23:21:15 -0700
Message-ID: <CABPp-BG2SkH0GrRYpHLfp2Wey91ThwQoTgf9UmPa9f5Szn+v3Q@mail.gmail.com> (raw)
In-Reply-To: <86k18rbbyz.fsf@gmail.com>

On Sat, Oct 26, 2019 at 11:25 AM Jakub Narebski <jnareb@gmail.com> wrote:
>
> Elijah Newren <newren@gmail.com> writes:
> > On Thu, Oct 24, 2019 at 2:45 AM Pratyush Yadav <me@yadavpratyush.com> wrote:
> >>
> >> I recently had some discussions with Dscho about whether it is a better
> >> idea to use GitHub for development instead of email [0]. His argument
> >> was that GitHub makes it easier for newcomers to contribute, since more
> >> people are familiar with GitHub compared to mailing lists. Also, it is
> >> somewhat difficult to set up an email-based workflow.
> [...]
> > GitHub is great for ease of creating new repos, learning about other
> > developers, finding similar projects, creation of webhooks, etc.  But
> > it's *awful* for code review.  Gerrit is a lot better at code reviews
> > (though still has problems); so maybe dealing with both GitHub and
> > Gerrit would be reasonable.
> [...]
> > Email is a horrible medium for sending/receiving
> > changes, but at least it gets the overall code review model right
> > (commit-messages-are-first-order-objects-that-can-be-reviewed,
> > review-individual-commits, merge-per-topic, cover-letter included,
> > range-diff for high-level comparison of different iterations,
> > reversing-commit-order-display-based-on-author-timestamps-is-NOT-forgivable,
> > Change-IDs-are-ugly, magic-refs-are-disgusting, etc.), something no
> > GUI tool (yet) does to my knowledge.
>
> I agree with that.  You need then to decide whether it is better to have
> it easier for beginners to contribute, or is it better to have it easier
> to review code.  What are the pain points?

I don't think that's the right comparison to make.  The problems with
GitHub code review aren't solely ease-of-use issues, they are more a
quality-of-code issues.

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, (b) makes it nearly impossible to review a rebased set of
changes except redoing the entire review from square one, so people
don't rebase, (c) punishes both users and reviewers who want to work
with a rebased patch series by displaying the series out of order --
even for a completely linear history (it resorts based on author
timestamp, not even committer timestamp), and (d) punishes
reviewers/users when they attempt to review individual commits by
making it harder to see and follow these comments (though it has
gotten much better on this front).  There are combination effects too.
People to write really bad commit messages for all the additional
"fixups" they have.  People notice that commits don't bisect nicely,
and instead of understanding that the broken code review system they
wrote was the problem, they instead offer a new "squash merge" option,
thus destroying all the carefully separated commits that help people
understand the individual steps toward the new feature and making it
impossible for anyone in the future to review it incrementally.  You
may say it's a workflow choice for some people to just squash all
their stuff together at their option, which would be fine, but the
problem is most developers don't take the time to think, and someone
in charge of the project notices that they keep getting un-bisectable
meaningless commits unless they force *everyone* in the project to use
squash merging.  Now they are punishing me for creating clean separate
commits and forcing them all to be squashed -- all as an ugly
workaround to the basic tool being *broken*.  You can work around this
by making a long sequence of PRs, one per what you intend to be a
commit, and try to track the hierarchy -- something that GitHub
certainly doesn't make easy.  And then each PR becomes a trivial small
change, and you are back to merging individual commits, and writing
your own tools to manage a hierarchy of PRs...and reviewers hate you
if you do that because it's extremely onerous on them.

GitHub PRs aren't just hard to use, they literally degrade the quality
of the code for people who have to use it.  I've seen it happen with
many projects.

(At $DAYJOB, they have hundreds of repos and have at times used SVN
then gitolite then gerrit then (Atlassian) stash then github (with
other review tools like sourcegraph and reviewable tried and a few
others read up on), with most of those existing simultaneously --
though we eventually pruned it down to just Gerrit and GitHub, with
some projects in one and some in the other system.  I've seen
migrations between various combinations of these tools (though SVN and
gitolite were nearly phased out by the time I joined), and seen
results of how the tools caused differences in behavior.  And yes, I
know that GitHub's popularity means many have copied GitHub's PR
model, from sourcegraph who were basically identical, to Stash which
is similar but handled rebases better, and I think GitLab looks
similar though I haven't used it that much (yet).  Reviewable handled
rebases a lot better, but still used the utterly broken model of not
allowing commit messages to be reviewed -- and glitterbombed the
interface with butterflies.)

> Another source worth looking into is "Patches carved into stone tablets,
> why the Linux kernel developers rely on plain text email instead of
> using “modern” development tools." presentation by Greg KH from
> 2016[1][2].  But remember that git-gui is not Linux kernel; what works
> for one might not work for the other.
>
> It is unfortunate that we have no tools described in "Patches carved
> into developer sigchains"[3] wishfull blog post by Konstantin Ryabitsev...

Interesting links; thanks for providing them.  And yes, I agree that
git-gui won't necessarily have the same tradeoffs as the Linux kernel.
But I do tend to be noisy here hoping I can spark someone with a
modicum of talent for front-end development (I have neither the talent
nor the inclination for web development) to write a sane webby code
review system.  Much of GitHub is awesome.  And it has some apparently
really nice thing for web devs, which seems to be part of why so many
people use it.  It's just so terribly awful at code reviews.  But
systems like Reviewable and GerritHub build on top of GitHub, so maybe
there is hope someone can build just the review part and make it
awesome.

> [1]: https://kernel-recipes.org/en/2016/talks/patches-carved-into-stone-tablets/
> [2]: https://www.slideshare.net/ennael/kernel-recipes-2016-patches-carved-into-stone-tablets
> [3]: https://people.kernel.org/monsieuricon/patches-carved-into-developer-sigchains
>
> Regards,
> --
> Jakub Narębski

  parent reply	other threads:[~2019-10-30  6:21 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-23 20:13 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 [this message]
2019-11-20 12:19       ` Birger Skogeng Pedersen
2019-11-20 17:13         ` Elijah Newren

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=CABPp-BG2SkH0GrRYpHLfp2Wey91ThwQoTgf9UmPa9f5Szn+v3Q@mail.gmail.com \
    --to=newren@gmail.com \
    --cc=bert.wesarg@googlemail.com \
    --cc=birger.sp@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitster@pobox.com \
    --cc=j6t@kdbg.org \
    --cc=jnareb@gmail.com \
    --cc=johannes.schindelin@gmx.de \
    --cc=me@yadavpratyush.com \
    --cc=philipoakley@iee.email \
    /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

git@vger.kernel.org list mirror (unofficial, one of many)

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://public-inbox.org/git
	git clone --mirror http://ou63pmih66umazou.onion/git
	git clone --mirror http://czquwvybam4bgbro.onion/git
	git clone --mirror http://hjrcffqmbrq6wope.onion/git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V1 git git/ https://public-inbox.org/git \
		git@vger.kernel.org
	public-inbox-index git

Example config snippet for mirrors.
Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.version-control.git
	nntp://ou63pmih66umazou.onion/inbox.comp.version-control.git
	nntp://czquwvybam4bgbro.onion/inbox.comp.version-control.git
	nntp://hjrcffqmbrq6wope.onion/inbox.comp.version-control.git
	nntp://news.gmane.io/gmane.comp.version-control.git
 note: .onion URLs require Tor: https://www.torproject.org/

code repositories for the project(s) associated with this inbox:

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

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git