Atpakaļ
Katedrāle un tirgus: Popclient kļūst par fetchmail | Tālāk
Katedrāle un tirgus: Vēl dažas mācības no fetchmail |
Fetchmail aug
Tā nu man bija gaumīgs un radošs dizains un labi strādājošs kods, ko pats to izmantoju katru dienu, un augošs beta testētāju skaits. Un pamazām es atklāju, ka tas vairs nebija vienkāršs individuāla hakera garadarbs, kas varētu būt noderīgs vēl dažiem citiem. Nu jau manās rokās bija programma, kas bija patiesi nepieciešama katram hakerim ar Unix kārbu un e-pastu caur SLIP/PPP pieslēgumu.
Ar SMTP pārsūtīšanas iespēju mana programma izrāvās tālu priekšā konkurentiem un potenciāli varēja kļūt par "vienīgo labāko" programmu, kā tas bija noticis ar daudzām klasiskām lietojumprogrammām, kas tik labi pildīja tām doto uzdevumu, ka alternatīvas jau sen tika aizmirstas, jo nebija vajadzīgas.
Tādā veidā jūs sasniedzat rezultātu, ko nebijāt ne plānojis, ne paredzējis. Bet jums ir jāuzķer tik pamatīga dizaina ideja, ka vēlāk rezultāts šķiet neizbēgams, dabīgs un paredzams. Vienīgais veids, kā atrast šādas idejas, ir būt pašam pilnam ar idejām -- vai arī izvērtēt citu cilvēku idejas un izvilkt gaismā tās, kas bieži vien to autoriem nemaz nešķiet svarīgas.
Endijam Tananbaumam (
Andy Tanenbaum) radās oriģināla ideja izveidot vienkāršu Unix sistēmu IBM PC datoriem un izmantot to apmācībai (viņš to nosauca par Minix). Linuss Torvalds pārveidoja Minix ideju tā, kā pats Endijs to nebija paredzējis -- un tas izauga par kaut ko brīnišķīgu. Tieši tādā pašā veidā (gan mazākā mērogā), es paņēmu dažas idejas no Karla Harisa un Harija Hočheizera un attīstīju tās tālāk. Neviens no mums nebija "īsts" ģēnijs, kādus par tādiem uzskata romantiski cilvēki. Tomēr lielākā daļa zinātnes, inženierijas un programmu izstrādi nav radījuši "īsti" ģēniji, lai gan hakeru mitoloģija apgalvo pretējo.
Rezultāti bija reibinoši -- un šādu veiksmi patiesībā būtu vēlējies katrs hakeris! Un viņi būtu vēlējušies, ka es būtu izvirzījis savus standartus vēl augstākus. Lai padarītu fetchmail tik labu, kā viņiem šķita tas varētu būt, man tas būtu jāraksta ne tikai savām vajadzībām, bet arī jāiekļauj lietas, kas, lai arī man nav vajadzīgas, ir svarīgas citiem. Un tas jādara, saglabājot programmu vienkāršu un robustu.
Pirmā nogurdinošā, tomēr svarīgākā, īpašība bija
multidrop iespēja savākt vēstules veselai lietotāju grupai un tad pārsūtīt katru vēstuli tās individuālajam saņēmējam.
Es nolēmu pievienot
multidrop iespēju daļēji tāpēc, ka daži lietotāji to pieprasīja, bet daļēji arī tāpēc, ka tas ļaus atrast kļūdas
singledrop kodā, izmantojot to dažādos veidos. Tā arī bija. Panākt pareizu
RFC 822 adrešu apstrādi man prasīja ievērojamu laiku, ne tāpēc, ka katrs atsevišķs gabals būtu grūts, bet gan daudzo iesaistīto un atkarīgo detaļu dēļ.
Bet
multidrop adresēšana galu galā tomēr bija ideāla dizaina izvēle. Es to uzzināju no sekojošā:
14. Katram rīkam jābūt noderīgam, izmantojot to paredzētajā veidā, bet patiesi labus rīkus var izmantot arī tā, kā jūs to nekad nebijāt paredzējis.
fetchmail
multidrop iespēja ļāva izmantot vēstkopas un pseidonīmus, Interneta pieslēguma
klienta pusē. Tas ļāva jebkuram, izmantojot savu personālo datoru ar ISP pieslēgumu, uzturēt vēstkopu un pseidonīmus, neatkarīgi no ISP pseidonīmiem.
Vēl viena iespēja, ko pieprasīja mani beta lietotāji bija 8 bitu MIME (
Multipurpose Internet Mail Extensions) atbalsts. To izdarīt bija diezgan vienkārši, jo es biju uzmanīgs, lai mana programma ar 8 bitiem strādātu korekti (t.i., programmas datu apstrādē nezaudēju 8 bitu, kas netiek izmantots standarta ASCII kodu tabulā). Ne tādēļ, ka es paredzēju šādu vajadzību, bet gan tāpēc, ka paļāvos uz vēl vienu likumu:
15. Rakstot jebkādu starpposma (vārtejas) programmu, centies izmainīt datu plūsmu tik maz, cik vien tas ir iespējams -- un nekad nezaudē informāciju, pirms saņēmējs to nav īpaši pieprasījis!
Ja es nebūtu ievērojis šo likumu, 8 bitu MIME atbalsta ieviešana būtu bijusi grūta un kļūdaina. Bet šajā gadījumā man tikai vajadzēja izlasīt MIME standartu
RFC 1652) un pievienot triviālu galvenes ģenerēšanas loģiku.
Daži Eiropas lietotāji man arvien pieprasīja ļaut ierobežot sesijas laikā maksimālo saņemto vēstuļu skaitu (lai viņi varētu kontrolēt savu dārgo telefonu pakalpojumu izmaksas). Es pretojos ilgu laiku, tomēr to ieviesu, lai arī vēl arvien neesmu īpaši laimīgs par to. Bet, ja jūs rakstāt pasaulei, jums ir jāieklausās savos lietotājos -- un tas ir spēkā arī tad, ja viņi jums nemaksā par to naudu.
Atpakaļ
Katedrāle un tirgus: Popclient kļūst par fetchmail | Tālāk
Katedrāle un tirgus: Vēl dažas mācības no fetchmail |