# Die Kathedrale und der Basar

Die Kathedrale und der Basar (englisch The Cathedral and the Bazaar) ist ein Essay über quelloffene Software von Eric S. Raymond, der ihn erstmals auf dem vierten Internationalen Linux-Kongress am 22. Mai 1997 in Würzburg öffentlich vortrug. Er beschreibt darin die Vor- und Nachteile der im Open-Source-Bereich inzwischen weit verbreiteten Entwicklungsmethode des Basars gegenüber der zuvor gebräuchlichen Methode, die er Kathedrale nennt.

## Kathedrale

Beim Kathedralen-Modell wird der Quellcode eines Programmes gar nicht oder nur mit jeder neuen Software-Veröffentlichung für die Öffentlichkeit verfügbar gemacht. In den Entwicklungszeiträumen zwischen den Veröffentlichungen kann neuer Quellcode ausschließlich von einer einzigen Entwicklergruppe oder einzelnen Entwicklern programmiert werden, die typischerweise bei einem Softwarehersteller angestellt sind. In diesem Fall wird der Quellcode oft als Betriebsgeheimnis behandelt und gar nicht veröffentlicht. Die Art, wie eine Kathedrale gebaut wird, symbolisiert die herkömmliche Entwicklungsweise: Ein Chefarchitekt überwacht eine hierarchisch organisierte Gruppe von eingeweihten Spezialisten. Nur sie können und dürfen zum Werk beitragen. Es gibt einen Bauplan, und wenn dieser erfüllt ist, ist das Gebäude fertig.

## Basar

Beim Basar-Modell ist der Quellcode dagegen in jedem Stadium über das Internet einsehbar. Die Entwicklung vieler Open-Source-Programme folgt diesem Schema. Dieses Modell hat sich, so der Autor, als erfolgreicher als das Kathedralen-Modell erwiesen: Auf einem Basar bieten viele Menschen ihre Waren feil, ohne dass einer mächtiger als der andere wäre. So werden auch große Projekte koordiniert; das beste Beispiel ist der Linux-Kernel, dessen Maintainer Linus Torvalds ist. Es gibt meistens eine Person, die darauf achtet, dass das Marktrecht eingehalten wird. Zudem ist der Basar aus vielen kleinen Teilen aufgebaut – ist einer der Stände einmal nicht vertreten, so ist der Basar als solcher trotzdem vollständig.
Übertragen auf die Software-Entwicklung sind die Händler, welche ihre Waren feilbieten, die Programmierer, die neue Programmteile hinzufügen oder Verbesserungen vornehmen und in das Projekt integrieren wollen; der Wächter über das Marktrecht wiederum entspricht dem Maintainer eines Software-Projekts. Was eigentlich in einem heillosen Durcheinander enden müsste, wächst durch Selbstorganisation zu einer großen Software heran.
Man kann dabei niemals sagen, die Software sei „fertig“. Raymond spricht deshalb davon, dass die Softwareindustrie keine Fertigungs-, sondern eine Dienstleistungsindustrie sei.

## Entwicklungsmodell

Im Essay sind 19 Richtlinien enthalten, wie gute Open-Source-Software programmiert werden kann:
* Jede gute Software wird von einem Entwickler geschrieben, der ein persönliches Problem lösen will.
* Gute Programmierer wissen, was sie schreiben müssen. Brillante wissen, was sie neuschreiben müssen (und was sie wiederverwenden können).
* Plane, eine Version zu verwerfen; du wirst es sowieso tun.
* Wenn du die richtige Einstellung hast, werden dich interessante Probleme finden.
* Wenn du das Interesse an einem Programm verlierst, ist es deine Pflicht, dieses einem kompetenten Nachfolger zu übergeben.
* Wenn du deine Benutzer als Mitprogrammierer betrachtest, ist dies der einfachste Weg zu schneller Verbesserung und effizientem Debugging.
* Veröffentliche früh. Veröffentliche häufig. Und höre auf die Benutzer.
* Mit einer hinreichend großen Gruppe von Betatestern und Mitentwicklern wird fast jedes Problem schnell erkannt und die Lösung von jemandem gefunden.
* Schlaue Datenstrukturen und einfacher Code (im englischen Original: „dumb code“) funktionieren viel besser als andersherum.
* Wenn du deine Betatester wie deine wertvollste Ressource behandelst, werden sie dies auch werden.
* Fast so gut wie eigene gute Ideen zu haben, ist es, gute Ideen von den Benutzern zu erkennen. Manchmal ist letzteres besser.
* Meist entstehen die brillanten Lösungen aus der Erkenntnis, dass das Problem falsch verstanden wurde.
* Perfektion (im Design) ist nicht erreicht, wenn man nichts mehr hinzufügen kann, sondern wenn nichts mehr entfernt werden kann.
* Jedes Tool soll so funktionieren, wie erwartet. Aber ein wirklich gutes Tool ermöglicht Verwendungszwecke, an die du niemals gedacht hättest.
* Wenn du Schnittstellencode schreibst, verhindere um jeden Preis, den Datenstrom zu verändern – und verwirf nur etwas, wenn dies der Empfänger verlangt.
* Wenn deine Programmiersprache nicht ansatzweise Turing-vollständig ist, kann syntaktischer Zucker dein Freund sein.
* Ein Sicherheitssystem ist nur so sicher wie sein Geheimnis. Vermeide Pseudogeheimnisse.
* Um ein interessantes Problem zu lösen, suche eines.
* Mit ausreichend guter Kommunikation, wie über das Internet, und Führung ohne Zwang, sind viele Köpfe immer besser als einer.

## Ausgaben

* The Cathedral & the Bazaar. Musings on Linux and Open Source by an Accidental Revolutionary. O’Reilly & Associates. ISBN 0-596-00108-8