[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-core-devel
Subject:    clarification on git, central repositories and commit access lists
From:       Adam Treat <treat () kde ! org>
Date:       2007-08-20 6:52:32
Message-ID: 105191.19338.qm () web30711 ! mail ! mud ! yahoo ! com
[Download RAW message or body]

Hi Linus,

I just watched your talk on git and wanted to ask for clarification on a few points.  \
Many of us in the KDE community are interested in git and some even contemplate using \
git as the official SCM tool in the future.  However, I think a few issues have been \
confused and want to see if you can clarify.

Your talk focused heavily on the evils of a central repository versus the benefits of \
a distributed model.  However, I wonder if what you actually find distasteful is not \
a central repository per se, but rather designing an SCM that relies upon \
*communication* with a central repository to do branching/merging or offline \
development.

After all, your repository acts as a de-facto central repository of the linux kernel \
in as much as everyone pulls from it.  Without such a central place to pull the linux \
kernel would not exist, rather what you'd have is a bunch of forks which perhaps \
merge with each other from time to time.

For any software project to exist as opposed to a bunch of forks I think you *have to \
have* a central repository from which everyone pulls, no?  Of course many branches \
might exist, but those branches must pull from a central repository if they want to \
share *at least some* common code.

A central repository is also necessary for projects like KDE to enable things like \
buildbots and commit mailing lists.  These tools are important to the way we work and \
provide for many eyes constantly reviewing changes to the codebase as well as regular \
regression testing across diverse platforms.  In the future, whether git or svn, I \
see no advantages in getting rid of a central repository from which everyone pulls.  \
I wonder whether you really disagree.

In your talk you also focus on the evils of commit access lists, comparing and \
contrasting with the web of trust the kernel uses where you have no commit access \
lists at all.  However, isn't the kernel model just a special case?  The linux kernel \
has a de-facto commit access list of one: you.

This might work well for the kernel, but I fail to see how this really reduces \
politics.  Many are still constantly pushing and arguing to merge their branches \
upstream into your repository.  Would having a central repository where you and all \
your trusted lieutenants push their changes really be very different?

The KDE community has a very large commit access list and it is quite easy to join.  \
Having a central git repository with a large set of committers would seem to map well \
with our community.  I fail to see any harm in this model.  The web of trust would \
still exist, it would just be much larger and more inclusive than the model the \
kernel uses.  I wonder if you disagree.

Another sticking point is the performance implications of a git repository managing \
something the size of the KDE project.  I understand the straightforward solution: \
just define content boundaries with a separate git repo for each submodule: \
kdelibs.git, kdebase.git, kdesupport.git, etc, etc.  And then have a super git repo \
with hooks that point to these submodules.  However, I think this leads to a few \
problems.

What if I want to make a commit to kdelibs that will require changes in other modules \
for them to compile.  I will no longer be able to make a single atomic commit with \
changes to multiple submodules, right?  Also, won't we lose history when moving \
files/content between submodules?  And how will we break up the existing history \
between all of these submodules?

Finally, a couple points...  CVS/SVN might be stupid and moronic, but I think it is \
good to note they are not nearly as bad as some other SCM's.  Many SCM's used by some \
of the largest codebases in the world are still lock-based.  If you think it is \
difficult to branch/merge using a central server, remember that some poor folks can't \
even *change a single file* without asking the central server for permission.

It is also good to note that a free distributed SCM was not available until recently. \
The kernel community might have had a special deal with BitKeeper, but the same \
didn't apply to all open source projects AFAIK.  When KDE moved to svn it was the \
best tool for the job.  That might have changed when git became easier to use, but at \
the time it was simply too big of a barrier for new developers and too new.  And from \
what I understand git support on other platforms is a recent development.

Cheers,

Adam


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic