9. Necessary Preconditions for the Bazaar Style
Early reviewers and test audiences for this paper consistently raised questions
about the preconditions for successful bazaar-style development, including
both the qualifications of the project leader and the state of code at
the time one goes public and starts to try to build a co-developer community.
It's fairly clear that one cannot code from the ground up in bazaar
style. One can test, debug and improve in bazaar style, but it would be
very hard to originate a project in bazaar mode. Linus didn't try
it. I didn't either. Your nascent developer community needs to have something
runnable and testable to play with.
When you start community-building, what you need to be able to present
is a plausible promise. Your program doesn't have to work particularly
well. It can be crude, buggy, incomplete, and poorly documented. What it
must not fail to do is convince potential co-developers that it can be
evolved into something really neat in the foreseeable future.
Linux and fetchmail both went public with strong, attractive basic designs.
Many people thinking about the bazaar model as I have presented it have
correctly considered this critical, then jumped from it to the conclusion
that a high degree of design intuition and cleverness in the project leader
is indispensable.
But Linus got his design from Unix. I got mine initially from the ancestral
popclient (though it would later change a great deal, much more proportionately
speaking than has Linux). So does the leader/coordinator for a bazaar-style
effort really have to have exceptional design talent, or can he get by
on leveraging the design talent of others?
I think it is not critical that the coordinator be able to originate
designs of exceptional brilliance, but it is absolutely critical that the
coordinator be able to recognize good design ideas from others.
Both the Linux and fetchmail projects show evidence of this. Linus,
while not (as previously discussed) a spectacularly original designer,
has displayed a powerful knack for recognizing good design and integrating
it into the Linux kernel. And I have already described how the single most
powerful design idea in fetchmail (SMTP forwarding) came from somebody
else.
Early audiences of this paper complimented me by suggesting that I am
prone to undervalue design originality in bazaar projects because I have
a lot of it myself, and therefore take it for granted. There may be some
truth to this; design (as opposed to coding or debugging) is certainly
my strongest skill.
But the problem with being clever and original in software design is
that it gets to be a habit -- you start reflexively making things cute
and complicated when you should be keeping them robust and simple. I have
had projects crash on me because I made this mistake, but I managed not
to with fetchmail.
So I believe the fetchmail project succeeded partly because I restrained
my tendency to be clever; this argues (at least) against design originality
being essential for successful bazaar projects. And consider Linux. Suppose
Linus Torvalds had been trying to pull off fundamental innovations in operating
system design during the development; does it seem at all likely that the
resulting kernel would be as stable and successful as what we have?
A certain base level of design and coding skill is required, of course,
but I expect almost anybody seriously thinking of launching a bazaar effort
will already be above that minimum. The open-source community's internal
market in reputation exerts subtle pressure on people not to launch development
efforts they're not competent to follow through on. So far this seems to
have worked pretty well.
There is another kind of skill not normally associated with software
development which I think is as important as design cleverness to bazaar
projects -- and it may be more important. A bazaar project coordinator
or leader must have good people and communications skills.
This should be obvious. In order to build a development community, you
need to attract people, interest them in what you're doing, and keep them
happy about the amount of work they're doing. Technical sizzle will go
a long way towards accomplishing this, but it's far from the whole story.
The personality you project matters, too.
It is not a coincidence that Linus is a nice guy who makes people like
him and want to help him. It's not a coincidence that I'm an energetic
extrovert who enjoys working a crowd and has some of the delivery and instincts
of a stand-up comic. To make the bazaar model work, it helps enormously
if you have at least a little skill at charming people.
|