大教堂與市集 八 Fetchmail成熟了

>>>  讀書—連接古今充實信仰  >>>

八 Fetchmail成熟了
現在有了一個簡潔新穎的設計,我確信代碼運行穩定,因為我每天都在用,公測名單也枝繁葉茂。我逐漸發現,我不再只是研發一個可能只有少數人才會用到的瑣碎的個人軟件了。而是在主持一個所有使用SLIP/PPP郵件接口的Unix用戶都切實需要的軟件。
憑借SMTP轉發功能,fetchmail把競爭對手遠遠的甩在了后面,成了一個潛在的“領域殺手”。一個在同領域鶴立雞群的殺手,它讓對手們不但被拋棄而且被遺忘。
這種結果是可遇而不可求的。一個卓有建樹的設計構想會把你順理成章,甚至命中注定地推向成功。而找到這類構想的方法無非是擁有很多值得嘗試的創意——或者能用工程的眼光把其他人的創意發揮到令原作者都難以想像的境地。
安迪·塔能鮑姆[1]首先為IBM PC機開發了一個簡單的原生Unix系統,他的本意是把它作為一個教學工具(他稱之為Minix)。李納斯則把Minix的概念推臻至安迪想像不到的境地,讓它成了這個奇妙的玩意。類似的(只是規模小些),我從卡爾·哈里斯和哈利·豪切斯那里借得創意并把它們深化。我們都不是“原創”——那種人們浪漫想像中的天才。話說回來,大多數科學、工程和軟件的成果都不是來自原創天才,恰恰相反,是銳意進取鑄就了神話。
這兩個項目(指Linux和fetchmail——譯者按)都成果斐然——事實上,這正是每個黑客畢生求索的成功!這同樣意味著我不得不加高要求自己的標準。為了讓fetchmail達到預期的目標,我不僅要為自己編程,還要額外地加入別人需要的功能。與此同時,還必須保證程序的簡潔和健碩。
意識到這點之后,我加入的第一個也是至關重要的功能就是“集體收發”——從一組用戶的郵箱中收取郵件,之后在分發給不同的收件人。
我添加集體收發功能不僅是因為很多用戶吵著要用,更主要的是我覺得通過這個方法可以迫使我更全面的處理地址問題,從而擺脫單信投寄中的缺陷。結果得我所愿。正確地完成RFC822[2]地址解析耗費了我很長時間,并不是因為它的某一部分很難,而是它牽扯了一堆相互關聯的煩人細節。
添加集體收發成為了一項杰出的設計決策,只因為:
 
14.任何工具都應該起到預期的作用,而一個真正杰出的工具會帶來出乎意料的用途。
Any tool should be useful in the expected way, but a truly great tool lends itself to uses you never expected.
 
加入集體收發的一個出乎意料的用途是讓通過網絡相連的客戶端可以保存郵件列表和別名擴展。也就是說,通過ISP上網的個人用戶不需要持續訪問ISP的別名文件就可以管理郵件列表了。
我的公測人員要求加入的另一個重要功能是支持8位的MIME(Multipurpose Internet Mail Extensions,多用途的網際郵件擴充協議)操作。這很容易辦到,因為我之前就很小心的保留了對代碼的8位兼容性(就是,沒有強迫ASCII字符集中未曾用到的第8比特位去攜帶程序信息)。這并不是因為我有先見之明,而是遵循了另一個原則:
 
15.在寫任何網關軟件的時候,都該花點功夫盡可能不去干擾數據流——除非用戶強迫你,否則 永遠 不要拋棄任何信息!
When writing gateway software of any kind, take pains to disturb the data stream as little as possible—and never throw away information unless the recipient forces you to!
 
假設我不曾遵循這個原則,那么加入8位MIME支持就會很困難而且毛病多多。事實上,我現在做的只是讀一下MIME標準(RFC1652)[3],然后加入一條小小的標頭生成規則。
一些歐洲用戶請求我加入了一個選項,來限制每次連接可下載的郵件數目(這樣他們可以節流昂貴的電話上網費)。我曾長時間抵觸這種做法,就算現在也不是心甘情愿。但是如果你是在為外界編寫程序,那么你就必須聽從你的客戶——即使他們不付錢也應如此。
 

譯者按:
1.安迪·塔能鮑姆:安德魯·斯圖爾特·塔能鮑姆(Andrew Stuart Tanenbaum)昵稱安迪(Andy)美國計算機學家,現定居荷蘭。
2.RFC822:Standard for the format of ARPA Internet text messages,標準ARPA 互聯網文本消息格式。
3. SMTP Service Extension for 8bit-MIMEtransport,SMTP 8bit-MIME傳輸服務擴展。


埃里克.斯蒂芬.雷蒙 2014-07-01 18:21:43

[新一篇] 大教堂與市集 七 Popclient變成了Fetchmail

[舊一篇] 大教堂與市集 九 源自Fetchmail的更多經驗
回頂部
寫評論


評論集


暫無評論。

稱謂:

内容:

驗證:


返回列表