workflows.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: "Theodore Y. Ts'o" <tytso@mit.edu>
Cc: Han-Wen Nienhuys <hanwen@google.com>,
	Dmitry Vyukov <dvyukov@google.com>,
	Konstantin Ryabitsev <konstantin@linuxfoundation.org>,
	Laura Abbott <labbott@redhat.com>,
	Don Zickus <dzickus@redhat.com>,
	Steven Rostedt <rostedt@goodmis.org>,
	Daniel Axtens <dja@axtens.net>,
	David Miller <davem@davemloft.net>, Drew DeVault <sir@cmpwn.com>,
	Neil Horman <nhorman@tuxdriver.com>,
	workflows@vger.kernel.org
Subject: Re: thoughts on a Merge Request based development workflow
Date: Tue, 15 Oct 2019 14:00:36 +0200	[thread overview]
Message-ID: <CAKMK7uGtvqFSw+wOBeGjV88DeyUoMTV3+F4Fpqv6NGUBCkAAgA@mail.gmail.com> (raw)
In-Reply-To: <20191015015425.GA26853@mit.edu>

On Tue, Oct 15, 2019 at 3:56 AM Theodore Y. Ts'o <tytso@mit.edu> wrote:
>
> On Mon, Oct 14, 2019 at 09:08:17PM +0200, Han-Wen Nienhuys wrote:
> > To 1) : Konstantin was worried about performance implication on git
> > notes.  The git-notes command stores data in a single
> > refs/notes/commits branch. Gerrit actually uses notes (the file
> > format) as well, but has a single notes branch per review, so
> > performance here is not a concern when scaling up the number of
> > reviews.
> >
> > To 2) : Google needs special magic sauce, because we service hundreds
> > of teams that work on thousands of repositories. However, here we're
> > talking about just the kernel itself; that is just a single
> > repository, and not an especially large one.  Chromium is our largest
> > repo, and it is about 10x larger than the linux kernel.
>
> I'd be concerned about cgit, because we need to have a separate file
> for the reviews, and you mean a single notes branch per review; a
> single patch series can have dozens of revisions, with potentially
> dozens of people commenting a large number of times, with e-mail
> threads that are hundreds of messages long.  If all of these changes
> are being squeezed into a single notes file, it would be quite large,
> and there would also be a lot of serialization concerns.  If you mean
> that there would be a single git note for each e-mail in a patch
> review thread.... that would seem to be a real potential problem for
> cgit.
>
> Be that as may, that's an optimization problem, and it is solveable,
> in the same way that most things are a Mere Matter of Programming.
> And if you're right, and it's not actually going to be a problem, then
> Huzzah!  But I suspect Konstantin's worries are probably ones we
> should at least pay attention to.
>
> > Gerrit isn't a big favorite of many people, but some of that
> > perception may be outdated. Since 2016, Google has significantly
> > increased its investment in Gerrit. For example, we have rewritten the
> > web UI from scratch, and there have been many performance
> > improvements.
>
> I agree that Gerrit might be a good starting point, having used it to
> review changes for Google's Data Center Kernels, as well as for
> Android and ChromeOS/Cloud Optimized System kernels.  Indeed, if I'm
> forced to use a non-threading mail user agent, it's far superior to
> e-mail reviews.
>
> Even if you have a threading mail agent, if everyone is using it, I'd
> argue that Gerrit is better, because it makes it really easy to look
> at the various versions of the patch series, including "give me the
> diff between the v3 and v7 version of the patch".  Having the
> conversation about a particular hunk of code in-line with the code
> itself is also very helpful.
>
> So let's talk about the sort of features that might need to be added
> to allow Gerrit to work for upstream development.
>
> > Gerrit has a patchset oriented workflow (where changes are amended all
> > the time), which is a good fit to the kernel's development process.
> > Linus doesn't like Change-Id lines, but I think we could adapt Gerrit
> > so it accepts URLs as IDs instead.
>
> Yep, I don't think this is hard.
>
> > There is talk of building a distributed/federated tool, but if there
> > are policies ("Jane Doe is maintainer of the network subsystem, and
> > can merge changes that only touch file in net/ "), then building
> > something decentralized is really hard. You have to build
> > infrastructure where Jane can prove to others who she is (PGP key
> > signing parties?), and some sort of distributed storage of the policy
> > rules.
>
> So requiring centralized authentication is going to be.... hard.
> There will certainly be some operations which will require
> authentication, sure.  But for things like:

What we do on gitlab.freedesktop.org is allow you to log in using
other hubs like github. As long as
patchwork/gerrit/whatever.kernel.org supports OAuth we could add a
simple "log in using kernel.org" button and it'd be a one-click thing.
And everyone can still choose where they want to have their main
account. Imo that's good enough (but I don't have strong opinions
here).

>   * Submitting a patch for review
>   * Making comments on a patch
>
> Adding a formal +1 or +2 vote, or actually approving that the patch be
> merged will obviously require authentication.  But as much as
> possible, a valid e-mail address should be all that's necessary for
> what people currently do using e-mail today.
>
> As far as a federated tool is concerned, I don't think we need to
> encode strict rules, because so long as we have a human (e.g., Linus)
> merging individual subsystem trees, I think we can let maintainers or
> maintainer groups (who, after all, today have absolutely control over
> their git trees) work out those issues amongst themselves, with an
> appeal to Linus to resolve conflicts and to make a final quality
> control check.
>
> Solving the problem of replacing how a maintainer or maintainer group
> reviews patches for their subsystem, and doing the review for patches
> that land in an a particular subsystem's git tree is a much simpler
> problem.  And if we can solve this, I think that's sufficient.
>
> But what this *does* mean is that sometimes patches will be cc'ed to
> multiple mailing lists, we need to map that into the gerrit world of a
> patch being cc'ed to multiple git trees.  The patch series might only
> end up landing in a single git tree, or it might be split up and with
> some commits landing in the ext4.git tree, and some in the btrfs.git
> tree, and some in the xfs.git tree, with some prerequisite patches
> landing on a separate branch of one of these trees, which the
> maintainers will merge into their trees.
>
> Today, this can be easily done by cc'ing the patch to multiple mailing
> lists.  Exactly how this works may get tricky, especially in the
> federated model where (for example) perhaps the btrfs tree might be
> administered by Facebook, while the xfs tree might be administrated by
> Red Hat.  Given that we *also* have to support people who want to keep
> using e-mail during the transition period, it may be that using
> unauthenticated e-mail messages where comments are attached quoted
> patch hunks, perhaps that can be the interchange format between
> different servers that aren't under a common administrative domain.

Last time I looked none of the common web ui tools (gerrit, gitlab,
github) had any reasonable support for topic branches/patch series
that target multiple different branches/repositories. They all assume
that a submission gets merged into one branch only and that's it. You
can of course submit the same stuff for inclusion into multiple
places, but that gives you separate discussion tracking for each one
(at least with the merge/pull request model, maybe gerrit is better
here), which is real bad.

> In *practice* hopefully most of the git/Gerrit trees will be
> administrated by Linux Foundation's kernel.org team.  But I think it's
> important that we support a distributed/federated model, as an
> insurance policy if nothing else.

If we go with any of the tooling changes discussed here I expect it'll
be a per-subsystem choice on what's the preferred thing, e.g. I don't
expect drm to move away from freedesktop.org because we have all our
userspace there. At that level interop with email-based pull requests
should be good enough. Better would be if you could somehow do
"foreign" submissions, which just point at a merge/pull request at the
other submission (maybe just use the git pull line) and internally
track/forward all comments or stuff like CI status. But I'm not aware
of any standard for this.
-Daniel
-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch

  reply	other threads:[~2019-10-15 12:00 UTC|newest]

Thread overview: 102+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-24 18:25 thoughts on a Merge Request based development workflow Neil Horman
2019-09-24 18:37 ` Drew DeVault
2019-09-24 18:53   ` Neil Horman
2019-09-24 20:24     ` Laurent Pinchart
2019-09-24 22:25       ` Neil Horman
2019-09-25 20:50         ` Laurent Pinchart
2019-09-25 21:54           ` Neil Horman
2019-09-26  0:40           ` Neil Horman
2019-09-28 22:58             ` Steven Rostedt
2019-09-28 23:16               ` Dave Airlie
2019-09-28 23:52                 ` Steven Rostedt
2019-10-01  3:22                 ` Daniel Axtens
2019-10-01 21:14                   ` Bjorn Helgaas
2019-09-29 11:57               ` Neil Horman
2019-09-29 12:55                 ` Dmitry Vyukov
2019-09-30  1:00                   ` Neil Horman
2019-09-30  6:05                     ` Dmitry Vyukov
2019-09-30 12:55                       ` Neil Horman
2019-09-30 13:20                         ` Nicolas Belouin
2019-09-30 13:40                         ` Dmitry Vyukov
2019-09-30 21:02                     ` Konstantin Ryabitsev
2019-09-30 14:51                   ` Theodore Y. Ts'o
2019-09-30 15:15                     ` Steven Rostedt
2019-09-30 16:09                       ` Geert Uytterhoeven
2019-09-30 20:56                       ` Konstantin Ryabitsev
2019-10-08  1:00                     ` Stephen Rothwell
2019-09-26 10:23           ` Geert Uytterhoeven
2019-09-26 13:43             ` Neil Horman
2019-10-07 15:33   ` David Miller
2019-10-07 15:35     ` Drew DeVault
2019-10-07 16:20       ` Neil Horman
2019-10-07 16:24         ` Drew DeVault
2019-10-07 18:43           ` David Miller
2019-10-07 19:24             ` Eric Wong
2019-10-07 15:47     ` Steven Rostedt
2019-10-07 18:40       ` David Miller
2019-10-07 18:45       ` David Miller
2019-10-07 19:21         ` Steven Rostedt
2019-10-07 21:49     ` Theodore Y. Ts'o
2019-10-07 23:00     ` Daniel Axtens
2019-10-08  0:39       ` Eric Wong
2019-10-08  1:26         ` Daniel Axtens
2019-10-08  2:11           ` Eric Wong
2019-10-08  3:24             ` Daniel Axtens
2019-10-08  6:03               ` Eric Wong
2019-10-08 10:06                 ` Daniel Axtens
2019-10-08 13:19                   ` Steven Rostedt
2019-10-08 18:46                 ` Rob Herring
2019-10-08 21:36                   ` Eric Wong
2019-10-08  1:17       ` Steven Rostedt
2019-10-08 16:43         ` Don Zickus
2019-10-08 17:17           ` Steven Rostedt
2019-10-08 17:39             ` Don Zickus
2019-10-08 19:05               ` Konstantin Ryabitsev
2019-10-08 20:32                 ` Don Zickus
2019-10-08 21:35                   ` Konstantin Ryabitsev
2019-10-09 21:50                     ` Laura Abbott
2019-10-10 12:48                       ` Neil Horman
2019-10-09 21:35                 ` Laura Abbott
2019-10-09 21:54                   ` Konstantin Ryabitsev
2019-10-09 22:09                     ` Laura Abbott
2019-10-09 22:19                       ` Dave Airlie
2019-10-09 22:21                     ` Eric Wong
2019-10-09 23:56                       ` Konstantin Ryabitsev
2019-10-10  0:07                         ` Eric Wong
2019-10-10  7:35                         ` Nicolas Belouin
2019-10-10 12:53                           ` Steven Rostedt
2019-10-10 14:21                           ` Dmitry Vyukov
2019-10-11  7:12                             ` Nicolas Belouin
2019-10-11 13:56                               ` Dmitry Vyukov
2019-10-14  7:31                                 ` Nicolas Belouin
2019-10-10 17:52                     ` Dmitry Vyukov
2019-10-10 20:57                       ` Theodore Y. Ts'o
2019-10-11 11:01                         ` Dmitry Vyukov
2019-10-11 12:54                           ` Theodore Y. Ts'o
2019-10-14 19:08                         ` Han-Wen Nienhuys
2019-10-15  1:54                           ` Theodore Y. Ts'o
2019-10-15 12:00                             ` Daniel Vetter [this message]
2019-10-15 13:14                               ` Han-Wen Nienhuys
2019-10-15 13:45                                 ` Daniel Vetter
2019-10-16 18:56                                   ` Han-Wen Nienhuys
2019-10-16 19:08                                     ` Mark Brown
2019-10-17 10:22                                       ` Han-Wen Nienhuys
2019-10-17 11:24                                         ` Mark Brown
2019-10-17 11:49                                     ` Daniel Vetter
2019-10-17 12:09                                       ` Han-Wen Nienhuys
2019-10-17 12:53                                         ` Daniel Vetter
2019-10-15 16:07                           ` Greg KH
2019-10-15 16:35                             ` Steven Rostedt
2019-10-15 18:58                             ` Han-Wen Nienhuys
2019-10-15 19:33                               ` Greg KH
2019-10-15 20:03                                 ` Mark Brown
2019-10-15 19:50                               ` Mark Brown
2019-10-15 18:37                           ` Konstantin Ryabitsev
2019-10-15 19:15                             ` Han-Wen Nienhuys
2019-10-15 19:35                               ` Greg KH
2019-10-15 19:41                               ` Konstantin Ryabitsev
2019-10-16 18:33                                 ` Han-Wen Nienhuys
2019-10-09  2:02           ` Daniel Axtens
2019-09-24 23:15 ` David Rientjes
2019-09-25  6:35   ` Toke Høiland-Jørgensen
2019-09-25 10:49   ` Neil Horman

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=CAKMK7uGtvqFSw+wOBeGjV88DeyUoMTV3+F4Fpqv6NGUBCkAAgA@mail.gmail.com \
    --to=daniel@ffwll.ch \
    --cc=davem@davemloft.net \
    --cc=dja@axtens.net \
    --cc=dvyukov@google.com \
    --cc=dzickus@redhat.com \
    --cc=hanwen@google.com \
    --cc=konstantin@linuxfoundation.org \
    --cc=labbott@redhat.com \
    --cc=nhorman@tuxdriver.com \
    --cc=rostedt@goodmis.org \
    --cc=sir@cmpwn.com \
    --cc=tytso@mit.edu \
    --cc=workflows@vger.kernel.org \
    /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).