7. Fetchmail dospiva
V ruce jsem mel usporadanou a originalni konstrukci, kod, o kterem jsem vedel, ze funguje, nebot jsem ho pouzival kazdy den a rostouci seznam testovatelu. Postupne mi dochazelo, ze uz se nezabyvam programovanim neceho jednoducheho, co muze byt uzitecne pro nekolik dalsich lidi. Mel jsem v rukou program, ktery potrebuje kazdy hacker s Unixem a SLIP/PPP postovnim pripojenim.
Se SMTP presmerovanim se fetchmail dostal daleko do cela konkurence a stal se potencialnim vladcem kategorie, takovym, ktery vyplni svuj prostor tak dokonale, ze alternativy nejsou pouze odmitnuty, ale i temer zapomenuty.
Myslim si, ze takovy vysledek skutecne nemuzete planovat. Musi Vas k nemu dovest vyvojovy plan tak silny, ze pri zpetnem pohledu se zdaji vysledky nevyhnutelne, temer predpoveditelne. Jedinou moznosti, jak dostat takovy napad, je mit mnoho napadu, nebo mit inzenyrsky usudek a dovest napady nekoho jineho az za hranici toho, co si autor puvodni myslenky dokazal predstavit.
Andrew Tanenbaum prisel s puvodni myslenkou vystavet jednoduchy Unix pro 386 jako ucebni pomucku. Linus Torvalds dotahl koncept Minixu dale, nez si zrejme Andrew mohl predstavit a vzniklo z nej neco uzasneho. Stejnym zpusobem (ackoliv v mensim meritku), jsem prevzal napady Carl Harrise a Harry Hochheisera a dotahl jsem je do konce. Vzdyt vetsina vedy, inzenyrstvi a softwaroveho vyvoje neni vytvarena nejakym originalnim geniem, ac to hackerske bajeslovi tvrdi.
Vysledky byly presto fantasticke, ve skutecnosti to byl prave takovy uspech, po kterem kazdy hacker touzi. A to znamenalo, ze si musim sam pro sebe nastavit jeste narocnejsi kriteria. Abych ucinil fetchmail tak dobry, jak jen jsem si byl schopen predstavit, musel jsem psat nejen pro sve vlastni potreby, ale rovnez zahrnout podporu, kterou jsem nepotreboval sam, ale jini uzivatele. A pri tom vsem jsem musel udrzet program jednoduchy a stabilni.
Prvni a zdaleka nejdulezitejsi funkci, kterou jsem pridal po te, co jsem si vse uvedomil, byla podpora vicenasobneho stahovani, moznost stahnout postu z postovnich schranek, ktere obsahovali postu vice uzivatelu a pote ji distribuovat jednotlivym prijemcum.
Rozhodl jsem se tuto funkci pridat, protoze nekteri uzivatele po ni touzili, ale zejmena proto, ze me to prinuti radne prohlednou soucasnou verzi a objevit chyby, ktere ve snaze napsat mnohem obecnejsi postup vyplavou na povrch.
Ukazalo se, ze se take jednalo a vyborne konstrukcni rozhodnuti.
14. Jakykoliv nastroj by mel byt uzitecny ocekavanym zpusobem, ale opravdu velke nastroje se hodi na pouziti, ktere jste nikdy neocekaval
Tak tento prepsany fetchmail byl neocekavane vyuzit pri sprave diskuznich skupin.
Dalsi dulezitou zmenou, kterou ode mne pozadovali moji testovatele, byla podpora 8-bit MIME. To bylo docela snadne, nebot jsem si daval pozor, abych nijak nepozmenil 8 bit. Nebylo to proto, ze bych predvidal tento pozadavek, spise jsem se ridil dalsim pravidlem:
15. Pokud pisete zprostredkovatelsky software jakehokoliv druhu, snazte se vlastni data nijak nemenit a nikdy se nezbavujte zadne informace, pokud vas k tomu nedonuti prijemce.
Kdybych se timto neridil, podpora 8-bitoveho MIME by byla obtizna a s chybami. Takto mi stacilo precist si standard a pridat neco trivialni logiky pri generaci hlavicek.
Nekteri evropsti uzivatele mne premlouvali, abych pridal omezeni poctu vzkazu stahnutelnych pri jednom sezeni (aby mohli kontrolovat cenu svych drahych telefonnich linek). Dlouho jsem tomu vzdoroval a stale s tim nejsem zcela spokojen. Pokud ale pisete pro cely svet, musite naslouchat svym zakaznikum, to se nemeni jenom proto, ze nejste placen penezi.