5. Kdyz ruze neni ruzi
Pote, co jsem studoval Linusovo chovani a zformuloval teorii, proc bylo uspesne, vedome jsem se rozhodl tuto teorii otestovat na mem vlastnim (ackoliv zdaleka ne tak komplexnim) projektu.
Ale prvni vec, kterou jsem ucinil, byla reorganizace a zjednoduseni popklienta. Carlova implementace byla velmi rozumna, ale vykazovala nepotrebnou slozitost, ktera je bezna u mnoha C programatoru. Povazoval kod za jadro a strukturu dat jako podporu pro kod. Vysledkem bylo, ze kod byl nadherny, ale struktura dat nahodna a dosti oskliva (alespon podle vysokeho standardu tohoto zkuseneho LISP hackera).
K prepisovani jsem mel i dalsi duvod nez vylepseni kodu a datovych struktur. Potreboval jsem program zcela pochopit. Neni to zadna legrace, opravovat chyby v programu, kteremu nerozumite.
Behem prveho mesice jsem se drzel zakladniho Carlova planu. Prvni vaznou zmenou bylo pridani protokolu IMAP. To jsem ucinil tak, ze jsem program rozclenil na obecnou cast a specificke metody. Toto a predchozi zmeny ilustruji obecny princip, ktereho by se meli programatori pridrzovat, zejmena pak v jazycich, jako je C.
9. Promyslene datove struktury a prumerny kod funguji mnohem lepe nez pri obracene konfiguraci
Brooks, kapitola 9: Ukaz mi svuj [kod] a skryj [datove struktury] a nebudu rozumet. Ukaz mi [datove struktury] a obycejne nebudu potrebovat tvuj [kod], vetsinou mi bude jasny.
Ve skutecnosti rekl diagramy a tabulky. Ale po 30 letech kulturnich a terminologickych zmen to znamena temer to same.
V tu dobui (zacatek zari 1996, asi 6 tydnu od casu nula) jsem zacal premyslet o zmene jmena. Konec koncu, uz to nebyl jenom POP klient. Ale vahal jsem, protoze dosud v programu nebylo nic opravdu puvodniho. Moje verze popklienta si teprve musela vytvorit vlastni identitu.
Vse se zmenilo velmi radikalne, kdyz se fetchmail naucil presmerovavat postu na SMPT port. K tomu se dostanu za okamzik. Jak jsem se jiz zminil, rozhodl jsem se pouzit svuj projekt jako test toho, co Linus Torvalds udelal dobre. Jak jsem tedy testoval? Takto:
Publikoval jsem casne a casto, temer vzdy alespon jednou za 10 dnu, pri intenzivni praci jednou denne
Zvetsoval jsem seznam testeru o kazdeho, kdo mne kontaktoval ohledne fetchmailu
Vsem z nich jsem posilal hovorne vzkazy, kdykoliv jsem neco publikoval, a povzbuzoval jsem je k spoluucasti
A naslouchal jsem jim, daval si od nich schvalovat rozhodnuti a chvalil je, kdyz mi poslali nejakou opravu nebo komentar.
Tato jednoducha opatreni se vyplatila temer okamzite. Od zacatku projektu jsem dostaval hlaseni o chybach ve kvalite, pro kterou by vetsina vyvojaru byla schopna zabit, a casto bylo prilozeno i dobre reseni. Dostaval jsem postu, kterou byla zabava cist, promyslenou kritiku a rozumne navrhy na nove moznosti. Takze:
10. Pokud zachazite s Vasimi testovateli, jako by byli vasim nejcennejsim kapitalem, oni se vasim nejcennejsim kapitalem skutecne stanou.
Jedno zajimave meritko uspechu fetchmailu je velikost seznamu testovatelu, pratel fetchmailu. V dobe, kdy tento text pisi, ma 249 clenu a dva az tri clenove pribyvaji kazdy tyden.
Ve skutecnosti, pri revizi na konci kvetna 1997 tento seznam jiz ztraci ze sveho maximalniho poctu temer 300 clenu ze zajimaveho duvodu. Nekolik lidi mne pozadalo, abych je odhlasil ze seznamu, protoze fetchmail uz pracuje tak dobre, ze nepotrebuji sledovat, co je noveho. Mozna to patri k normalnimu zivotnimu cyklu vyspeleho projektu ve stylu trziste.