5. Když růže není růží
Poté, co jsem studoval Linusovo chování a zformuloval teorii, proč bylo úspěšné, vědomě jsem se rozhodl tuto teorii otestovat na mém vlastním (ačkoliv zdaleka ne tak komplexním) projektu.
Ale první věc, kterou jsem učinil, byla reorganizace a zjednodušení popklienta. Carlova implementace byla velmi rozumná, ale vykazovala nepotřebnou složitost, která je běžná u mnoha C programátorů. Považoval kód za jádro a strukturu dat jako podporu pro kód. Výsledkem bylo, že kód byl nádherný, ale struktura dat náhodná a dosti ošklivá (alespoň podle vysokého standardu tohoto zkušeného LISP hackera).
K přepisování jsem měl i další důvod než vylepšení kódu a datových struktur. Potřeboval jsem program zcela pochopit. Není to žádná legrace, opravovat chyby v programu, kterému nerozumíte.
Během prvého měsíce jsem se držel základního Carlova plánu. První vážnou změnou bylo přidání protokolu IMAP. To jsem učinil tak, že jsem program rozčlenil na obecnou část a specifické metody. Toto a předchozí změny ilustrují obecný princip, kterého by se měli programátoři přidržovat, zejména pak v jazycích, jako je C.
9. Promyšlené datové struktury a průměrný kód fungují mnohem lépe než při obrácené konfiguraci
Brooks, kapitola 9: Ukaž mi svůj [kód] a skryj [datové struktury] a nebudu rozumět. Ukaž mi [datové struktury] a obyčejně nebudu potřebovat tvůj [kód], většinou mi bude jasný.
Ve skutečnosti řekl diagramy a tabulky. Ale po 30 letech kulturních a terminologických změn to znamená téměř to samé.
V tu dobui (začátek září 1996, asi 6 týdnů od času nula) jsem začal přemýšlet o změně jména. Konec konců, už to nebyl jenom POP klient. Ale váhal jsem, protože dosud v programu nebylo nic opravdu původního. Moje verze popklienta si teprve musela vytvořit vlastní identitu.
Vše se změnilo velmi radikálně, když se fetchmail naučil přesměrovávat poštu na SMPT port. K tomu se dostanu za okamžik. Jak jsem se již zmínil, rozhodl jsem se použít svůj projekt jako test toho, co Linus Torvalds udělal dobře. Jak jsem tedy testoval? Takto:
Publikoval jsem časně a často, téměř vždy alespoň jednou za 10 dnů, při intenzivní práci jednou denně
Zvětšoval jsem seznam testerů o každého, kdo mne kontaktoval ohledně fetchmailu
Všem z nich jsem posílal hovorné vzkazy, kdykoliv jsem něco publikoval, a povzbuzoval jsem je k spoluúčasti
A naslouchal jsem jim, dával si od nich schvalovat rozhodnutí a chválil je, když mi poslali nějakou opravu nebo komentář.
Tato jednoduchá opatření se vyplatila téměř okamžitě. Od začátku projektu jsem dostával hlášení o chybách ve kvalitě, pro kterou by většina vývojářů byla schopna zabít, a často bylo přiloženo i dobré řešení. Dostával jsem poštu, kterou byla zábava číst, promyšlenou kritiku a rozumné návrhy na nové možnosti. Takže:
10. Pokud zacházíte s Vašimi testovateli, jako by byli vaším nejcennějším kapitálem, oni se vaším nejcennějším kapitálem skutečně stanou.
Jedno zajímavé měřítko úspěchu fetchmailu je velikost seznamu testovatelů, přátel fetchmailu. V době, kdy tento text píši, má 249 členů a dva až tři členové přibývají každý týden.
Ve skutečnosti, při revizi na konci května 1997 tento seznam již ztrácí ze svého maximálního počtu téměř 300 členů ze zajímavého důvodu. Několik lidí mne požádalo, abych je odhlásil ze seznamu, protože fetchmail už pracuje tak dobře, že nepotřebují sledovat, co je nového. Možná to patří k normálnímu životnímu cyklu vyspělého projektu ve stylu tržiště.