[Meta] The Linus Bus Factor

From: Shlomi Fish
Date: Wed Mar 28 2007 - 15:52:31 EST


Hi all!

I'm writing from my gmail.com account so I won't be overwhelmed with
the incoming email.

---------------------------------------------------------------------------

The purpose of this email is two-fold:

1. To make sure that Linus Torvalds hits himself with a bus. I.e.: resigns
from his role as the benevolent dictator of the Linux kernel, at least
temporarily.

2. To advocate the enactment of a central git repository with several
commiters.

I'll start with No. 2.

From what I understood, at the moment, only Linus can commit or accept
pulled changes to the repository of the vanilla tree. Other people have their
own personal repositories as well. This system works, but I believe it is
sub-optimal. Here are some examples why:

1. Subversion. 126 people with a commit bit - some of them inactive, but
still. I recall being present at #svn or #svn-dev on Freenode and seeing the
commits come by from the CIA bot constantly. (Some people apparently never
sleep).

2. Pugs. Audrey Tang is extremely liberal about giving people commit access.
She gives it to practically everyone who asks or who has something to
contribute just so she or whoever, won't be bothered with committing it
themselves. Even I received a commit despite my notorious perl6-critique essay
([1]). Larry Wall has said that it makes Pugs a happy commune.....errr family.

And Pugs still works pretty well, even if it is slow.

3. KDE. KDE takes this to extreme. 100s of people with commit access - perhaps
even 1,000s. Commits are handed out liberally. And yet KDE works very well,
has many features, and is mostly bug free. It is so good that even the Linus
uses it, and has advocated.

Just for completeness sake, I should note that it also exists to some
extent with GNOME, but I cannot testify how liberally the commits there are
given. I have a commit bit there, too, but it took me some more time than
with KDE, where I received it as a birthday present for my 24+57/365's
birthday.

---------------

None of these projects are using git - they are using Subversion now, and some
of them were using CVS to a great degree of the same effectiveness beforehand.
And they are all doing very well, and the integrity of the code is preserved.

Now, if we have the same for the Linux kernel (and I believe git has no problem
allowin it), then it will simplify processses, facilitate commiting some simple
changes, and generally make everyone happier. If Al Viro (for example) can
commit directly to the central repository a patch that re-indents some code,
it will be a better idea than to have him commit it to his own and then request
Linus to pull it from there.

Note that many commiters does not mean anarchy. When I got a commit bit to
the central Subversion repository, I still submitted most patches for peer
review, because I was not confident to apply them myself. The same happened
with the GIMP, where I received a full allowance to do whatever I pleased
with the gimpressionist plug-in, but still was not confident in commiting my
patches directly to the GIMP core without consulting anyone. So I sent them
to peer review on the GIMP bug tracker, and after everyone were happy with
them (which ususally involved several iterations), I was able to commit them.

What the KDE people do is that they ensure the quality of the SVN snapshots
by monitoring the commits feed, and by testing them extensively. And it works:
KDE is relatively bug free, and works pretty well, despite the fact that
everyone and his sister-in-law has a commit bit.

Note that you don't have to depend on Linus or whoever to do this. You can
simply take the initiative and give commits to your own repository to people
who trust. You can call it a subversive (pardon the pun with svn) movement.
Linus may disapprove but since Linux is open source, you don't need to ask
him. If Linus wishes he can eventually pull the relevant changes from the
multi-commit repository.

------------------

Which brings us to issue No. 1:

Ben Collins-Sussman and Brian Fitzpatrick talk in http://xrl.us/vhak about the
"bus factor": how many developers need to be hit by a bus so a project would be
neutralised. This number is probably very high for the Linux kernel, as many
people know its internals in and out.

However, I'm worried about something slightly different. I'm worried about the
fact that Linus Torvalds started the Linux kernel project, and is still
heading it after 14 years, where it evolved from being a toy, to an
"enterprise-grade, industrial strength" kernel that is used anywhere from
8 MB embedded devices to super-computers, not to mention being the second or
third most popular desktop system (and second on IBM PCs) and the second or
first most popular for servers.

I'm not saying Linus is not doing a good job - almost everyone agrees that
he has been doing an exceptional job. However, being the benevolent dictator
( "for life" ) has made him the bottleneck, the poster boy, the scape goat, the
ultimate authority, and lots of other roles that he defaults to play. This is
unhealthy for the project.

It is known that Solon ( http://en.wikipedia.org/wiki/Solon ) said he was
leaving Athens for a trip around the world, in the midst of his reform for
several years. But he in fact moved to a nearby Island where he observed
by proxy how they managed without him. Without being an insider of the Linux
kernel mailing list, I believe Linus voluntarily leaving will have a positive
effect.

At the moment everyone default to Linus, but if he "hit himself with a bus",
they'll have to manage without him. This will eventually lead to a better
internal organisation, and a much more robust solution. There might be a
different benevolent dictator. There might be a central git repository with
many committers. There might be something. But it will be better than it is
today.

I hate the term "benevolent dictator *for life*", because it assumes the person
cannot be overthrown or that there cannot be a mutiny (my term for coup)
against him. A benevolent dictator in the free software world must not be for
life because he may not be the best solution for ever.

Now that I think of it, I find it said that people think of the Linux kernel
project as "Linus Torvalds' baby". Compare it to KDE which is a large amorphous
meta-project, with no-one known in particular, to Subversion, which while
having many prominent contributors has no poster child. And then there's Perl,
which while Larry Wall is its undoubted demi-god, has many other prominent
figures.

Of course, like I said, you can do a mutiny without asking Linus, by starting
out a central repository for the kernel with many commiters. If this works,
then this repository may eventually become the de-facto kernel (and Linus
would no longer be the benevolent dictator). If it won't work, then we're not
better off, but very little time was wasted.

Linus *can* resign willingly, which may be even more desirable. However, the
Linux kernel is a FOSS project after all, and if you don't like something, you
can always fork it, or at least create your own branch, patchset, etc. in the
version control repository.

Let the flames begin!

Regards,

Shlomi Fish

[1] - http://www.shlomifish.org/philosophy/computers/perl/perl6-critique/


------------------------------------------
Shlomi Fish http://www.shlomifish.org/

Electrical Engineering studies. In the Technion. Been there. Done
that. Forgot a lot. Remember too much.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/