The Cathedral & the Bazaar: Musings on Linux and Open Source by an Accidental Revolutionary
Rate it:
Open Preview
9%
Flag icon
I discuss these theories in terms of two fundamentally different development styles, the “cathedral” model of most of the commercial world versus the “bazaar” model of the Linux world.
10%
Flag icon
Every good work of software starts by scratching a developer’s personal itch.
10%
Flag icon
Good programmers know what to write. Great ones know what to rewrite (and reuse).
11%
Flag icon
“Plan to throw one away; you will, anyhow.” (Fred Brooks, The Mythical Man-Month, Chapter 11)
11%
Flag icon
you often don’t really understand the problem until after the first time you implement a solution. The second time, maybe you know enough to do it right. So if you want to get it right, be ready to start over at least once.Note
11%
Flag icon
If you have the right attitude, interesting problems will find you.
11%
Flag icon
When you lose interest in a program, your last duty to it is to hand it off to a competent successor.
11%
Flag icon
Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging.
13%
Flag icon
Given a large enough beta-tester and co-developer base, almost every problem will be characterized quickly and the fix obvious to someone.
16%
Flag icon
Smart data structures and dumb code works a lot better than the other way around.
16%
Flag icon
If you treat your beta-testers as if they’re your most valuable resource, they will respond by becoming your most valuable resource.
16%
Flag icon
The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better.
17%
Flag icon
Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong.
17%
Flag icon
“Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away.”
18%
Flag icon
When writing gateway software of any kind, take pains to disturb the data stream as little as possible—and never throw away information unless the recipient forces you to!
19%
Flag icon
When your language is nowhere near Turing-complete, syntactic sugar can be your friend.
19%
Flag icon
A security system is only as secure as its secret. Beware of pseudo-secrets.
20%
Flag icon
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.
20%
Flag icon
To solve an interesting problem, start by finding a problem that is interesting to you.
22%
Flag icon
Provided the development coordinator has a communications medium at least as good as the Internet, and knows how to lead without coercion, many heads are inevitably better than one.
24%
Flag icon
software project management has five functions: To define goals and keep everybody pointed in the same direction To monitor and make sure crucial details don’t get skipped To motivate people to do boring but necessary drudgework To organize the deployment of people for best productivity To marshal resources needed to sustain the project
24%
Flag icon
open-source developers are volunteers, self-selected for both interest and ability to contribute to the projects they work on (and this remains generally true even when they are being paid a salary to hack open source.) The volunteer ethos tends to take care of the “attack” side of resource-marshalling automatically; people bring their own resources to the table. And there is little or no need for a manager to “play defense” in the conventional sense.
24%
Flag icon
Which brings us neatly to the question of motivation. An equivalent and often-heard way to state my friend’s point is that traditional development management is a necessary compensation for poorly motivated programmers who would not otherwise turn out good work.
29%
Flag icon
There are, in general, three ways to acquire ownership of an open-source project. One, the most obvious, is to found the project. When a project has had only one maintainer since its inception and the maintainer is still active, custom does not even permit a question as to who owns the project.
29%
Flag icon
The second way is to have ownership of the project handed to you by the previous owner (this is sometimes known as “passing the baton”).
30%
Flag icon
The third way to acquire ownership of a project is to observe that it needs work and the owner has disappeared or lost interest.
33%
Flag icon
There are reasons general to every gift culture why peer repute (prestige) is worth playing for:
34%
Flag icon
First and most obviously, good reputation among one’s peers is a primary reward.
34%
Flag icon
Secondly, prestige is a good way (and in a pure gift economy, the only way) to attract attention and cooperation from others.
34%
Flag icon
Thirdly, if your gift economy is in contact with or intertwined with an exchange economy or a command hierarchy, your reputation may spill over and earn you higher status there.
40%
Flag icon
In conflicts over open-source software we can identify four major issues: Who gets to make binding decisions about a project? Who gets credit or blame for what? How to reduce duplication of effort and prevent rogue versions from complicating bug tracking? What is the Right Thing, technically speaking?
41%
Flag icon
As benevolent-dictator projects add more participants, they tend to develop two tiers of contributors; ordinary contributors and co-developers.
41%
Flag icon
A co-developer who accepts maintainance responsibility for a given subsystem generally gets to control both the implementation of that subsystem and its interfaces with the rest of the project, subject only to correction by the project leader (acting as architect).
49%
Flag icon
The tragedy of the commons predicts only three possible outcomes. One is the sea of mud. Another is for some actor with coercive power to enforce an allocation policy on behalf of the village (the communist solution). The third is for the commons to break up as village members fence off bits they can defend and manage sustainably (the property-rights solution). When people reflexively apply this model to open-source cooperation, they expect it to be unstable with a short half-life. Since there’s no obvious way to enforce an allocation policy for programmer time over the Internet, this model ...more
49%
Flag icon
Part of the answer certainly lies in the fact that using software does not decrease its value. Indeed, widespread use of open-source software tends to increase its value, as users fold in their own fixes and features (code patches). In this inverse commons, the grass grows taller when it’s grazed upon.
49%
Flag icon
It may be more to the point that this value is not merely hard to capture, in the general case it’s hard to even assign.
50%
Flag icon
In analyzing this kind of cooperation, it is important to note that while there is a free-rider problem (work may be underprovided in the absence of money or money-equivalent compensation) it is not one that scales with the number of end users (see the endnote on Note 31 for discussion). The complexity and communications overhead of an open-source project is almost entirely a function of the number of developers involved; having more end users who never look at source costs effectively nothing. It may increase the rate of silly questions appearing on the project mailing lists, but this is ...more
50%
Flag icon
The real free-rider problems in open-source software are more a function of friction costs in submitting patches than anything else. A potential contributor with little stake in the cultural reputation game (see Chapter 3) may, in the absence of money compensation, think “It’s not worth submitting this fix because I’ll have to clean up the patch, write a ChangeLog entry, and sign the FSF assignment papers...”. It’s for this reason that the number of contributors (and, at second order, the success of) projects is strongly and inversely correlated with the number of hoops each project makes a ...more
52%
Flag icon
One reason has to do with symmetry. While most open-source developers do not intrinsically object to others profiting from their gifts, most also demand that no party (with the possible exception of the originator of a piece of code) be in a privileged position to extract profits.
63%
Flag icon
The market mechanisms for funding (and making a profit from!) open-source development are still evolving rapidly.