Prev
Katedrāle un tirgus: Popclient kļūst par fetchmail
Next
Katedrāle un tirgus: Vēl dažas mācības no fetchmail

Fetchmail aug

Tā nu man bija gan gaumīgs un radošs dizains, gan labi strādājošs kods, ko pats izmantoju katru dienu, gan augošs beta testētāju skaits. Un pamazām es atklāju, ka tas vairs nebija tikai individuāla hakera garadarbs, kas varētu būt noderīgs tika dažiem. 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 šīs idejas, ir būt pašam pilnam ar tā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, par kādiem to domā 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 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 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 iesākuma ģ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.

Prev
Katedrāle un tirgus: Popclient kļūst par fetchmail
Next
Katedrāle un tirgus: Vēl dažas mācības no fetchmail

Created by Valdis Vītoliņš on 2008-11-21 10:04
Last modified by Valdis Vītoliņš on 2021-04-13 14:28
 
Xwiki Powered
Creative Commons Attribution 3.0 Unported License