Nach dem Befassen mit Linus' Verhalten und dem Entwickeln einer
Theorie darüber, warum es so erfolgreich ist, traf ich eine bewusste
Entscheidung, um diese Theorie an meinem neuen (und zugegebenermaßen
weniger komplexen und weniger ehrgeizigen) Projekt zu testen.
Das erste, was ich aber machte, war, popclient zu vereinfachen und zu
reorganisieren. Carl Harris' Implementation war robust und solide,
zeigte aber eine Art von unnötiger Kompliziertheit, die für viele
C-Programmierer charakteristisch ist. Für ihn war der Code das
Zentrale, und die Datenstrukturen waren die Unterstützung für den
Code. Das führte zu sehr schön gestaltetem Code, aber zu sehr
improvisierten und unansehnlichen Datenstrukturen (wenigstens nach den
hohen Standards dieses alten LISP-Hackers).
Neben dieser Verbesserung des Designs hatte ich aber noch einen
anderen Nutzen im Auge, als ich den Code umschrieb. Die erste
tief greifende Umstellung war, dass ich Unterstützung für IMAP einbaute.
Ich schrieb die Protokoll-Automaten in einen generischen Treiber plus
drei Tabellen mit Methoden um (jeweils eine für POP2, POP3 und IMAP).
Diese und die vorhergehenden Änderungen illustrieren ein allgemeines
Prinzip, das Programmierer im Auge behalten sollten, speziell bei
Sprachen, die
dynamisches Typisieren
nicht von Haus aus unterstützen:
9. Smarte Datenstrukturen und dummer Code funktionieren viel besser
als umgekehrt.
Brooks, Kapitel 9: Also zeige mir Deinen [Code], aber verhülle Deine
[Datenstrukturen], und ich werde auf ewig im Dunkeln tappen. Zeige mir
aber Deine [Datenstrukturen] und ich werde Deinen [Code] gar nicht
brauchen, denn ich weiß, wie er aussieht.
Eigentlich redete er von Flussdiagrammen und Tabellen, aber unter
Beachtung der dreißig Jahre, die seither vergangen sind, ist die
kleine Anpassung zulässig.
Zu diesem Zeitpunkt (Anfang September 1996, sechs Wochen nach der
Stunde 0 des Projekts), dachte ich, dass eine Namensänderung angebracht
sei -- immerhin war das Programm kein reiner POP-Klient mehr. Ich
zögerte aber, weil es noch keine wirklich neuen Erweiterungen im
Design gab. Meine Fassung von popclient musste erst eine eigene
Identität entwickeln.
Das änderte sich aber, und zwar radikal, als fetchmail lernte, wie man
abgeholte Mail an das SMTP-Port weiterreicht. Ich werde das gleich
näher erläutern, vorher aber noch Folgendes: Ich habe meine
Entscheidung schon erwähnt, dieses Projekt als Test für meine
Hypothese zu verwenden, die ich mir über Linus Torvalds' Erfolg
gebildet hatte. Was genau bedeutet das? Die Frage ist berechtigt, hier
also, was ich tat:
-
Ich veröffentlichte früh und häufig Freigaben (fast immer
wenigstens alle zehn Tage; während der Zeiten intensiver
Entwicklung eine pro Tag).
-
Ich fügte meiner wachsenden Beta-Liste jeden hinzu, der mich zu
fetchmail kontaktierte.
-
Ich verschickte ausführliche und in lockerem Tonfall gehaltene
Ankündigungen, wann immer ich eine Freigabe machte, und ermunterte
meine Leute, am Prozess teilzuhaben.
-
Ich hörte auf meine Betatester und befragte sie regelmäßig zu
Design-Entscheidungen und lobte sie wann immer sie Patches oder
Anregungen lieferten.
Diese simplen Maßnahmen zahlten sich unmittelbar aus. Vom Anfang des
Projekts an bekam ich Bugreports von einer Qualität, für die die
meisten Entwickler alles und ihren linken Arm hergeben würden; oft
waren auch gute Korrekturen beigelegt. Ich bekam konstruktive Kritik
zu hören, Fanpost und wohldurchdachte Anregungen für neue Features.
Das führt uns zu:
10. Wenn man seine Betatester wie die wertvollste Ressource behandelt,
werden sie als Reaktion darauf zur wertvollsten Ressource werden.
Eine interessante Maßnahme hinter fetchmails Erfolg ist die schiere
Größe der Beta-Liste, die fetchmail-friends. Im Augenblick der
Abfassung dieses Textes enthält sie 249 Mitglieder und wächst jede
Woche um zwei oder drei.
Tatsächlich ist die Liste zum Zeitpunkt der Überarbeitung im Mai 1997
von einem Zenit von 300 wieder geschrumpft, und das aus einem
interessanten Grund. Mehrere Leute haben mich gebeten, sie von der
Liste zu nehmen, weil fetchmail so gut funktioniert, dass es für sie
keine Veranlassung mehr gibt, am Gedankenaustausch teilzunehmen! Dies
ist vielleicht ein für reife Basar-artige Projekte normaler
Lebensabschnitt.
|