workflows.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Dmitry Vyukov <dvyukov@google.com>
To: Nicolas Belouin <nicolas.belouin@gandi.net>
Cc: Konstantin Ryabitsev <konstantin@linuxfoundation.org>,
	Eric Wong <e@80x24.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: Fri, 11 Oct 2019 15:56:55 +0200	[thread overview]
Message-ID: <CACT4Y+aD=NMqeErSnq_5ssLT-ATuGEqaz7_t45FSrgHTybOFag@mail.gmail.com> (raw)
In-Reply-To: <882d9408-eb8d-0f32-ce7f-7e5f6e8b08fd@gandi.net>

On Fri, Oct 11, 2019 at 9:12 AM Nicolas Belouin
<nicolas.belouin@gandi.net> wrote:
> > <nicolas.belouin@gandi.net> wrote:
> >> On 10/10/19 1:56 AM, Konstantin Ryabitsev wrote:
> >>> On Wed, Oct 09, 2019 at 10:21:56PM +0000, Eric Wong wrote:
> >>>> One of my long-term visions is to have an agreed upon way to
> >>>> have entirely forkable development communities.  Git already
> >>>> gave us forkable code repositories.
> >>> FYI, this does already exist in the form of Fossil:
> >>> https://www.fossil-scm.org/home/doc/trunk/www/index.wiki
> >>>
> >>> The main reason why we can't really consider it is because it requires
> >>> moving away from git, which is a non-starter for anyone.
> >>>
> >>> -K
> >> Maybe the solution is to build such kind of features within git,
> >> many proposed solutions with tools over git or using git.
> >> A tool over git has the issue of conveying the data and making
> >> it non-centralized, whereas a tool using git is non-scalable because
> >> of the way git is *currently* storing things.
> >> Improving git to make it able to store many more objects (be it in-review
> >> commits or previous versions of patches) and then use it to get the kind
> >> of features we can envy from fossil.
> > Hi Nicolas,
> >
> > I am trying to imagine how a complete solution based on git could look
> > like, but I am failing. It seems that there is a number of problems
> > beyond scalability/storage.
> > First, that git probably should be orthogonal to the kernel source git
> > trees, right? People work with multiple kernel trees, sometimes
> > changes migrate, parts of a series can be merged into different trees,
> > etc.
> This I think can't be helped if going through a Merge/Pull request workflow
> as a request will always be seen as a whole applied to a specific tree,
> I agree
> though the external tool solution might help for tree migration though.
> And I
> don't really have a solution for these issues.
> > Then, do we do a single git where everybody has write access, or
> > per-developer git? If we do a global git and everybody has write
> > access, this looks somewhat problematic. If we have multiple
> > per-developer gits, then it does not solve the whole problem of
> > synchronization and data exchange, one can't pull from thousands of
> > unknown gits every time.
> For this one I thought of per-developer git with a branch per series
> with MR discussion attached to the branch on the developer side and on
> maintainer/reference tree side a reference indicating a remote MR is in
> progress, with only those kind of special refs being writable.
>
> On MR acceptance the discussion/history of branch gets into the maintainer/
> reference tree through the merge commit object and gets included
> whenever one
> pulls from this tree
>
> > Where is this git[s] are hosted?
> Wherever the developper/maintainer wants it to be hosted
> > What about force pushes?
> Well a force-push as per the rule of no changing the commits of a public
> branch
> end-up as new reference linking to the old one for traceability.
> > What about authorization/user identification?
> For this one I thought of a X.509 like tree where you need to get your
> key/identity signed
> by some kind of AC so that you create an account through that AC and can
> push on whatever tree
> that trust that AC or one of its parent. I thought about a root with two
> main branches one for
> "Anonymous" kind of registration where you can use something like OpenId
> to get identified
> and get your matching certificate signed and another one for "Higher
> trust" given to e.g Linus
> so he can sign his maintainers and so they can also sign sub-maintainers
> and so on. Then you can
> set-up your repository to trust the root if you want anyone to be able
> to push or some sub-AC to
> restrict and maybe even a depth restriction to allow a hierarchical work
> as done today.
> >
> > It would be nice to reuse git's persistent storage format and ability
> > to push/fetch incremental changes, but we would need to figure out
> > answers to these questions. Maybe I am missing something obvious.
> > Could you outline how a solution based on git could look like?
> > Also in this case git is only a transport layer (like email/SSB), it
> > won't solve the application layer (how patches/comments/issues/CI
> > results are described, systems that consume, act and present that,
> > etc). So building a solid transport, even if we will need to
> > reimplement some git functionality, will be a smaller part of the
> > overall effort. And building a solid transport layer that will solve
> > fundamental infrastructure problems well may be worth it.

Thanks! This clears some of my doubts.
However, I still don't see the complete picture:
1. If I setup a git on github (a new contributor), is it possible to
setup github repo to trust an AC? I have not seen such option. I
assume you need to be configuring you git server manually for this
type of thing?
2. Restricting write access to some refs. Again, this does not seem to
be possible with github. Is it possible with own stock server?
3. If the "comments" ref is writable, can user A delete user B's
comments? Can change/repo owner delete "unwanted" comments?
4. git transport will also need DoS/spam protection, right? Because
it's easy to create 1000 new users each sending 1000 new merge
requests.
5. To sync my local view of the world, I need to fetch, say, net tree
git, then from that find set of other git trees with pending merge
requests and pull these trees, right? There may be a potential problem
with availability: if people setup gits on github, gitlab, kernel.org,
private hostings, etc, some of them may be down.

  reply	other threads:[~2019-10-11 13:57 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 [this message]
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
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='CACT4Y+aD=NMqeErSnq_5ssLT-ATuGEqaz7_t45FSrgHTybOFag@mail.gmail.com' \
    --to=dvyukov@google.com \
    --cc=davem@davemloft.net \
    --cc=dja@axtens.net \
    --cc=dzickus@redhat.com \
    --cc=e@80x24.org \
    --cc=konstantin@linuxfoundation.org \
    --cc=labbott@redhat.com \
    --cc=nhorman@tuxdriver.com \
    --cc=nicolas.belouin@gandi.net \
    --cc=rostedt@goodmis.org \
    --cc=sir@cmpwn.com \
    --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).