Die Kathedrale und der Basar

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche

Die Kathedrale und der Basar (engl. „The Cathedral and the Bazaar“) lautet der Titel eines bekannten Essays über quelloffene Software. Verfasst wurde es von Eric S. Raymond, der es 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[Bearbeiten]

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 einem einzelnen Entwickler programmiert werden, die/der typischerweise bei einem Softwarehersteller angestellt ist. 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[Bearbeiten]

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[Bearbeiten]

Im Essay sind 19 Richtlinien enthalten, wie gute Open-Source-Software programmiert werden kann:

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

Siehe auch[Bearbeiten]

Weblinks[Bearbeiten]