《大教堂与市集》(The Cathedral and the Bazaar)
作者:Angelo 日期:2007-08-16 21:41
早期浏览器历史汇总
作者:Angelo 日期:2007-08-10 15:31
浏览器 | 发布时间 | 主创人员 | 备注 |
(Nexus) | 1990年12月25日 (完成最初版本) 1991年3月(发布) | 蒂姆•伯纳斯-李 | 首个浏览器 |
1991年3到4月间 | 蒂姆•伯纳斯-李 妮可拉·派罗 | 首个通用平台浏览器 | |
1992年4月29日 | 金·尼伯格 蒂穆·兰塔宁 卡蒂·索米内 凯瑞·赛德马兰卡 阿里·莱姆克 | 首个非NeXT平台浏览器 首个Unix平台浏览器 首个诞生在CERN以外的浏览器 | |
1992年5月 | 魏培源 | 首个流行浏览器 第二个Unix平台浏览器 | |
1992年夏 | 托尼·约翰逊 |
《大教堂与市集》后几章要稍微拖后了
作者:Angelo 日期:2007-08-31 23:52
满月
作者:Angelo 日期:2007-08-27 15:11
今天是西元2007年8月27日,农历丁亥年七月十五,也就是鬼节。
无论如何更重要的是,今天是我Blog的满月。
2007年7月27日的凌晨,我写下了《Mozilla的历史》一文,作为开博的标志(之前的是用来测试Blog的)。随即申请大陆信息产业部备案(至今仍在办理中),当日下午用手机信息形式通知朋友来捧场。
一个月中,我用中文写出了全部早期浏览器的历史;北美首个网站的历史;表情符号、万维网译名、网上冲浪的由来;翻译了《Mozilla之书》和《Tux福音》。当然还有其他的以及我目前正在翻译的《大教堂与市集》。
一个月内结识了很多朋友,比如幽谷部落的格主,Mybrand的老板,帮我改错的windrose和roy_hu,淘宝网德隆的董老板,译言的同仁(当然少不了雷大),Mozine的朋友(特别是许久不见的震哥还有那个随便给我该名的紫MM),志同道合的大梵天,秦皇岛的妩伶……总之多的数不过来。(排名不分先后,呵呵)
七 Popclient变成了Fetchmail
作者:Angelo 日期:2007-08-27 10:48
项目的真正转折点来自一份哈利·豪切斯的草拟程序,通过它我们可以将邮件转发至客户机的SMTP端。几乎在收到程序的同时,我就意识到,这个功能会让其他的邮件传送模式都成为历史。
我曾用几周的时间摆弄fetchmail,当时总觉得虽然界面还能用但是却不够漂亮,到处是用处不大的选项。“将收取到的邮件归档”或者“标准输出”选项尤其让人心烦,可我却说不出个所以然来。
(如果你对网络邮件的技术细节不感兴趣,那么就可以安心的略过下面两段。)
当我考虑加入SMTP转发的时候,才发现popclient包揽了太多的事情。它身兼两职——既是一个邮件传输工具(MTA)又是一个本地投寄工具(MDA)。但是如果有了SMTP转发功能,它就可以摆脱MDA的工作。像sendmail一样专注于MTA并把邮件的本地投寄工作交给其他软件。
几乎每个支持TCP/IP
六 花香何曾随名去?
作者:Angelo 日期:2007-08-25 10:05
在研究了李纳斯的作法,并得到他何以成功的理论之后。我决定在我的新项目中(当然没有Linux那么复杂和雄心勃勃)有意地尝试这些理论。
但是我首先要对popclient做大幅的重写和简化。卡尔·哈里斯的代码很扎实,但是却如同大多C程序设计师一样,有种不必要的繁琐。他把代码置于核心,而数据结构作为其支撑。结果代码很漂亮,而数据结构就很特别了,甚至可以说很缭乱了。(至少就LISP老手的标准而言是这样的)
除了改进代码和数据结构,我的重写还有另一层目的,就是要把它演进成一个我完全理解的东西。因为要是你不能对程序了如指掌,维护起来可就不好玩了。
在最初的一个月里,我只是遵循卡尔的设计理念。我所作的第一个重要改变是加入了对IMAP的支持。做法是:把原来的协议支持部分改写成一个通用驱动和三个可调用的方发表(分别针对POP2、POP3和IMAP)。这些变动都阐明了一个程序员需要铭记在心的通用原则(特别是对于像
五 要多少只眼来驯服复杂
作者:Angelo 日期:2007-08-23 12:03
从宏观上,可以说市集风格大大加速了调试和代码演进,但是如果想从微观(开发者和测试者日复一日的工作中)上,准确理解这是如何和怎样起到作用的,却又是另一回事了。在本章中(作于本书初版后三年,采纳了阅读本书,并身体力行的开发人员的意见),我们将关注其背后的机理,对于技术不感兴趣的读者可以安心的跳到下一章。
理解问题的一个关键在于认清如下的重要事实,那就是那些对源代码知之甚少的用户所提交的错误报告通常派不上大用场。因为他们一般只看到表面症状。在提交错误报告的时候,习惯从自身环境出发,这样(一)会忽视重要的背景数据,(二)通常会遗漏重现错误的关键步骤。
更深层的问题是,开发者和测试者的思维模式不同。测试者是由表及里的看问题,而开发者则是自内而外。在封闭源代码的开发环境里,他们被各自的角色羁绊,往往各说各话而且认为对方很难沟通。
开源开发打破了这种束缚。基于源代码,测试者和开发者可以很容易建立一个统一的模型,并借此有效沟通。仅仅描述表面症状的问题报告和深入源代码基础抽象模型的报告,对于开发者而言作用是截然不同的。
四 早发布,常发布
作者:Angelo 日期:2007-08-21 15:18
早发布,常发布
尽早和尽量频繁的发布是Linux开发模式的一个重要部分。包括我在内的大多数开发人员都曾一贯认为——对于一个大型工程来说这并不是个好办法。因为早期版本几乎就是问题版的同义词,而你却并不想过早地把用户的耐心消耗殆尽。
这种信念促使人们普遍采用大教堂式的开发模式。如果首要目标是令用户尽可能少的遭遇错误,那么何不半年(或者更久)发布一次呢?这样我们就有充足的时间在各版本间努力进行调试。Emacs的C核心就是这样开发的,而Lisp库则恰恰相反——在自由软件基金会所辖以外,有很多独立的新版本或研发代码可供选择。【注1】
其中最重要的,俄亥俄州立大学的Emacs Lisp 存档,在当时就已经具有了今天Linux大型数据管理的许多精神与气质。但是我们之中少有人深思过究竟要做什么,以及这个存档的存在暴露了自由软件基金会大教堂模式的哪些问题。在
三 用户的重要性
作者:Angelo 日期:2007-08-19 15:44
我接手了popclient。同样重要的是,我也承继了popclient的用户基础。拥有用户是件美好的事情,他们的存在不仅仅印证了你正在供其所需,而且说明你做的还不赖。加以适当的培养,他们还能成为你的开发伙伴。
许多用户也是黑客,这是Unix传统的另一个强项,而Linux把它推向极致。因为可以获得源代码,大家的工作会更加卓有成效,这可以有效的缩短调试时间。加上一些掌声,他们会帮忙解决问题,提出建议,这总比你单枪匹马要快得多。
6.把用户当作开发伙伴,是快速改进代码和有效调试的不二法门。
Treating your users as co-developers is your least-hassle route to rapid code improvement and effective debugging.
这种效应的力量很容易被低估。事实上,开源世界中的人们一度完全忽视了随着用户数量的增加,该效应是如何得以大幅扩展,同时系统的复杂性并没有显著增加——直到
二 邮件必达
作者:Angelo 日期:2007-08-17 14:22
2.邮件必达
自1993年起,我就在宾州西切斯特的一家提供免费网络服务的小公司CCIL(Chester County InterLink)负责技术工作。我协同创建了公司并编写了一个专用的多用户论坛程序——你可以通过telnet连接locke.ccil.org一探究竟。如今它在三十条线路上支持着近三千名用户。这使我可以每天二十四小时的通过CCIL的56K专线上网——其实,这是工作需要。
我已经惯于使用网络邮件了,但不时地登录locke检查邮件实在很烦人。我所希望的是有办法能将邮件转送到我家的机器(snark)上,并在到达的时候通知我,而且可以用本地工具进行处理。
互联网默认的邮件传输协议SMTP显然不能满足我的要求,STMP是为全时在线的机器设计的,而我家的机器不可能全天在线——况且它也没有一个固定的IP。我需要一个程序,让我能在拨号之后链接到服务器上把邮件下载到本地。我知道有这种工具存在,它们大都使用一种称为


