threads / discuss / 913

[OT] mutually supervised developers

Subject: [OT] mutually supervised developers

## tl;dr

3 messages between Jun 11, 2005 and Jun 12, 2005.

replies: 2people: 3as markdown or json

Junio C Hamano· Jun 11, 2005, 21:19 UTC · lore
I think this is somewhat offtopic here, but I was wondering:
 - if a development model like this would make sense,
 - and if so if we would want GIT to support such a model,
 - and if so if the current GIT already offers such support,
 - and if not what kind of primitives at the core layer we would
   need to add.

Let's assume that a project is co-managed by a handful top-tier developers and has an active development community. There is _the_ public repository that all users consider the canonical starting point to base their work off of. It would be like -git snapshot tree or -mm tree in Linux 2.6 kernel.

These developers are all active in the community, and at times are overenthusiastic. Their own changes are usually quite good, they also have good taste when accepting outside patches, but they all tend to commit not-so-well-thought-out crapola of their own from time to time to their own repository.

I am wondering if the world would be a better place if this fictitious project sets up public repositories in the following way:

 (1) each developer's own repository is public;
 (2) these developers pull from each other "only good stuff",
     rejecting things he or she feels questionable.  Let's
     forget that current GIT does not give a direct support for
     cherrypicking for now.
 (3) the public canonical repository is updated to contain the
     intersection (_not_ union) of these developer repositories.
     Let's also forget that current GIT does not have automated
     way to do such a thing.

This would give each developer an "adult supervision" by all the other developers, because any stuff that somebody finds questionable will not be included in the "intersection". The public canonical repository is essentially to contain the community "concensus".

Applying the above outline literally is inpractical in that it gives any slow (or just otherwise busy) developer an unintended "veto" power to freeze the canonical tree, so the management of the canonical repository part may need to be tweaked with something like majority rule, but the basic idea is to help people get mutual supervision to prevent them from spreading crap they may later regret.

Would people find something like this arrangement workable and worthwhile?

Linus Torvalds· Jun 11, 2005, 23:14 UTC · re: Junio C Hamano · lore

Re: [OT] mutually supervised developers

On Sat, 11 Jun 2005, Junio C Hamano wrote:
Show 16 quoted lines
> 
> I am wondering if the world would be a better place if this
> fictitious project sets up public repositories in the following
> way:
> 
>  (1) each developer's own repository is public;
> 
>  (2) these developers pull from each other "only good stuff",
>      rejecting things he or she feels questionable.  Let's
>      forget that current GIT does not give a direct support for
>      cherrypicking for now.
> 
>  (3) the public canonical repository is updated to contain the
>      intersection (_not_ union) of these developer repositories.
>      Let's also forget that current GIT does not have automated
>      way to do such a thing.
I've thought about it, but one problem ends up being the history.

Even if both developers have the same patches, they may not have gotten them in the same order, which means that it's basically impossible to retain history when doign an intersection. Unions are different - we can just add the new history when we create a union.

> Would people find something like this arrangement workable and
> worthwhile?
If you can explain how it would actually work.. 
		Linus
David Roundy· Jun 12, 2005, 11:47 UTC · re: Linus Torvalds · lore

Re: [OT] mutually supervised developers

On Sat, Jun 11, 2005 at 04:14:38PM -0700, Linus Torvalds wrote:
Show 24 quoted lines
> On Sat, 11 Jun 2005, Junio C Hamano wrote:
> > 
> > I am wondering if the world would be a better place if this
> > fictitious project sets up public repositories in the following
> > way:
> > 
> >  (1) each developer's own repository is public;
> > 
> >  (2) these developers pull from each other "only good stuff",
> >      rejecting things he or she feels questionable.  Let's
> >      forget that current GIT does not give a direct support for
> >      cherrypicking for now.
> > 
> >  (3) the public canonical repository is updated to contain the
> >      intersection (_not_ union) of these developer repositories.
> >      Let's also forget that current GIT does not have automated
> >      way to do such a thing.
> 
> I've thought about it, but one problem ends up being the history.
> 
> Even if both developers have the same patches, they may not have gotten
> them in the same order, which means that it's basically impossible to
> retain history when doign an intersection. Unions are different - we can
> just add the new history when we create a union.

Right, cherry picking and history don't go well together--which is why darcs doesn't normally store a real history (although it can do so--you just can't keep certain portions of the history unless you accept the patches involved).

There are also issues in defining the intersection of all patches. Ideally if you take the union of that intersection with one of the original repositories, you'd get that same repository back, but most naive implementations of union/intersection won't have that property, which would lead to confusion and inconvenience.

This sort of workflow would actually be pretty easy to implement in darcs, if someone were interested.

On Sat, 11 Jun 2005, Junio C Hamano wrote:
> Would people find something like this arrangement workable and
> worthwhile?

I think the biggest issue would be the one mentioned about the problems with a single lazy developer. But I think rather than some sort of majority rule (or "if three developers think it's okay, then it's okay"), keeping the number of relevant developers down would make sense. This also makes sense in that unless you've got seriously dedicated developers, you don't want to force everyone to read every patch. I think if you went with a system like this and wanted many maintainers involved, it would probably best to organize things hierarchically.

-- 
David Roundy
http://www.darcs.net

← back to recent threads