All of lore.kernel.org
 help / color / mirror / Atom feed
From: Konstantin Ryabitsev <konstantin@linuxfoundation.org>
To: Joseph Myers <joseph@codesourcery.com>
Cc: cti-tac@lists.linuxfoundation.org
Subject: Re: Next steps from GTI TAC meeting on 2023-03-08 - Evaluate cost of glibc migration.
Date: Wed, 24 May 2023 12:29:39 -0400	[thread overview]
Message-ID: <20230524-december-goon-09e728@meerkat> (raw)
In-Reply-To: <cd8ad55d-38c5-72f1-3464-b5968d1f8fde@codesourcery.com>

On Tue, May 23, 2023 at 10:12:20PM +0000, Joseph Myers wrote:
> > Can you please describe the lifecycle of a patch and how it gets from "user
> > sends a change to the mailing list" to "that patch becomes a commit in the
> > official project repository where it lives forever."
> 
> A patch is sent to the list.  There are some number of review / revision 
> rounds, ending with a reviewer or maintainer saying it is OK to commit (or 
> OK after some specified changes, or OK in the absence of objections within 
> some given period, etc.).  If the person posting the patch has commit 
> access, they commit it; otherwise they should ask the maintainer to do so 
> for them.  Maintainers of parts of the compiler may commit their patches 
> without someone else reviewing them.

This workflow has one important problem -- you must ultimately trust the
integrity of your infrastructure. It would be very easy for a malicious actor
with access to backend infrastructure to insert a commit into the repository
without it being discovered:

1. they can override any server-side validations
2. they can disable email notifications
3. they can forge the Committer identity of the commit

With your current workflow nobody would find out that such commit has been
inserted into the history because everyone must rebase their commits anyway,
so having a push rejected due to newer remote commits is a routine situation
(as opposed to a being a huge red flag in a repository where only one or two
committers are allowed to write).

Similarly, since most commits end up being rebased, there can be no post-fact
validation to find out if there are any commits that did not go through
review -- their patch-id would likely no longer match the mailing list
submission anyway (at least, there would be too many false-positives).

This situation could be partially mitigated if commits were cryptographically
signed, but they don't appear to be.

GCC and other projects are sufficiently high targets that we should not trust
the infrastructure to be secure or admins to be above being bribed or forced
under duress.

> Anyone with commit access can create their own branches in their 
> refs/users/ namespace if they wish, and use them without needing review 
> for commits going there.  Shared development branches under 
> refs/heads/devel/ have whatever rules are established by the people 
> setting up those branches.

From the git backend perspective, this is not optimal, because the resulting
packs contain extra objects that aren't interesting to most cloners. For
example, if I only leave refs/heads and refs/tags in the gcc repository, I get
rid of over 1.1 million extra objects (from 3.9 million to 2.8 million) and
the pack shrinks from 1.8GB to 1.1GB.

To me, it makes more sense to separate this into multiple repositories and
relegate vendor/user branches to their own trees. They still share objects
behind the scenes, but packs and cloning is much more optimized.

-K

  reply	other threads:[~2023-05-24 16:29 UTC|newest]

Thread overview: 37+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-19 22:47 Next steps from GTI TAC meeting on 2023-03-08 - Evaluate cost of glibc migration Joseph Myers
2023-05-22 10:11 ` Joel Brobecker
2023-05-24 12:44   ` Carlos O'Donell
2023-05-24 13:43     ` Siddhesh Poyarekar
2023-05-24 14:12       ` Carlos O'Donell
2023-05-24 15:18         ` Siddhesh Poyarekar
2023-05-23 17:38 ` Konstantin Ryabitsev
2023-05-23 19:34   ` Joseph Myers
2023-05-23 19:52     ` Konstantin Ryabitsev
2023-05-23 20:12       ` Joseph Myers
2023-05-23 20:21         ` Konstantin Ryabitsev
2023-05-23 22:12           ` Joseph Myers
2023-05-24 16:29             ` Konstantin Ryabitsev [this message]
2023-05-24 18:13               ` Siddhesh Poyarekar
2023-05-24 18:55                 ` Brian Behlendorf
2023-05-24 21:27                   ` Siddhesh Poyarekar
2023-05-25 11:06                     ` Carlos O'Donell
2023-05-24 19:06                 ` Konstantin Ryabitsev
2023-05-24 19:42                   ` Joseph Myers
2023-05-24 21:12                   ` Siddhesh Poyarekar
2023-05-25 11:12                     ` Carlos O'Donell
2023-05-24 18:58               ` Joseph Myers
2023-05-24 12:11       ` Siddhesh Poyarekar
2023-05-24 18:44         ` Joseph Myers
2023-05-24 19:58           ` Carlos O'Donell
2023-05-24 12:57     ` Carlos O'Donell
2023-05-24 18:46       ` Joseph Myers
2023-05-24 20:19         ` Carlos O'Donell
2023-05-24 20:48           ` Joseph Myers
  -- strict thread matches above, loose matches on Subject: below --
2023-04-03 17:24 Carlos O'Donell
2023-04-12 20:46 ` Konstantin Ryabitsev
2023-04-12 21:28   ` Brian Behlendorf
2023-05-19 21:00 ` Konstantin Ryabitsev
2023-05-22 14:37   ` Ian Kelling
2023-05-24 20:50     ` Carlos O'Donell
2023-05-24 21:53       ` Ian Kelling
2023-05-25 11:02         ` Carlos O'Donell

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=20230524-december-goon-09e728@meerkat \
    --to=konstantin@linuxfoundation.org \
    --cc=cti-tac@lists.linuxfoundation.org \
    --cc=joseph@codesourcery.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.