开源运动的"圣经"——《大教堂与集市》读书笔记

作者:Eric S. Raymond

一、黑客圈简史


1、早期

(1)MIT 与 ITS

黑客”一词大约就起源于MIT的计算机文化。

PDP-1时代开始,黑客文化的命运就和DEC(数字设备公司)的PDP小型机系统交织在一起了,DEC率先推出了交互式商业计算和分时操作系统,由于其机器灵活、强大且相对便宜,很多大学都购买了DEC的小型机。廉价的分时系统成为黑客文化成长的媒介,在整个ARPAnet的生命周期中,大多数时间都是DEC小型机的天下,其中最重要的是PDP-10,这款发布于1967年的机器,几乎是这之后15年内黑客圈的最爱,TOPS-10(PDP-10的操作系统)和MACRO-10(其汇编语言)至今仍被黑客在一些俚语和传说中充满怀旧地提及。同样也是使用PDP-10,MIT却有些与众不同,他们完全摒弃了DEC为PDP-10写的软件,而是自己写了一个操作系统,即传说中大名鼎鼎的ITS。 ITS即“不兼容分时系统”(Incompatible Time-sharing System),这充分体现了MIT黑客们的态度。

关于 ITS:

  • ITS是用汇编语言写的,其应用大都是用AI语言LISP写的。LISP比当时的任何编程语言都要强大而灵活。
  • ITS文化的一些技术产物至今仍然被人们使用,EMACS编辑器可能是其中最广为人知的。
(2)PARC

另一个重要的黑客文化节点是XEROX PARC,即著名的Palo Alto研究中心。从上世纪70年代到80年代中期,PARC产生了大量极具突破性的软硬件发明,其数量之多令人震惊。目前被广泛使用的鼠标、窗口和图标式软件交互界面,以及激光打印机和局域网,都是在那里发明的。比起80年代才出现的个人计算机,PARC的D系列机器足足早了十年。

(3)APRAnet

APRAnet是第一个横贯美国大陆的高速计算机网络,它从一个由国防部出资兴建的实验性数字通信系统,逐渐成长为一个连接大学、国防部承包商及研究实验室等数百个节点的大网,使得位于各地的研究者能够以前所未有的速度和灵活性交换信息,这极大地促进了合作交流,推动了科学技术的突飞猛进。

ARPAnet和PDP-10文化在上世纪整个70年代得到了迅猛而多样的发展,电子邮件列表(mailing list)除了促进一些专题兴趣小组(special-interest group)在全美范围内的合作外,也越来越多地应用于社交和休闲领域。

2、中期

(1)UNIX

上溯至ARPAnet还远未普及的1969年,在新泽西郊外,一股新生力量开始成长并不断发展壮大,最终使PDP-10文化变得不再重要。这一年,APRAnet刚刚诞生,而贝尔实验室的黑客Ken Thompson,也正在这年发明了UNIX

贝尔实验室另一名黑客Dennis Ritchie为还处于雏形阶段的UNIX发明了一种新的语言:C语言

操作系统在传统上都是用汇编语言精心编写的,目的是充分利用机器的效能。 Thompson 和 Ritchie 是最早意识到当时硬件和编译技术都已经好到能让整个操作系统用 C 语言编写的那批人之一。到 1978 年,整个 UNIX 环境已经可以成功地被移植到多种不同型号的机器上了。这是史无前例和影响巨大的。如果 UNIX 能够在多种不同型号的机器上提供相同的人机界面和相同的功能,它就能成为一个通用的软件环境。机器更新换代时,用户就可以不再购买那些为新机器而重新编写的软件,黑客们则可以在不同机器上使用相同的工具,而不是每次都去做类似发明轮子和钻燧取火的事。除了可移植性, UNIX 和 C 还有其他的重要优势,它们都是 KISS( Keep It Simple, Stupid) 哲学下的产物。程序员可以很容易地在脑海中记忆并掌握整个 C 语言的逻辑结构(这可不同于之前或之后的大多数语言),而不需要去频繁地查看手册。而 UNIX 则拥有一系列灵活方便的工具程序,每个工具都被设计为可与其他工具组合运用,以方便地实现特定目的。 UNIX 和 C 的组合,很快被证明适用于极为广泛的计算作业,其中很多完全超出设计者的预期。虽然缺乏正式的支持和推广,它仍然在 AT&T 内部迅速传播开来。到 1980 年,它已经扩散蔓延到很多大学和研究机构,而数以千计的黑客们则开始考虑在家里使用它了。早期 UNIX 文化中的主力机器是 PDP-11 及其后代 VAX。

(2)UNIX vs ITS

PDP-10的黑客们倾向于把UNIX团体看成是一群暴发户,与LISP和ITS具有巴洛克式令人着迷的复杂性相比,UNIX使用的工具看上去原始得可笑,“就像拿着石刀和穿着兽皮!”他们嘟囔道。

鄙视链无处不在,哈哈哈。

ITS没有未来了,因为它没有可移植性,而且也没人能把它搬到新机器上,在VAX上运行的Berkeley版UNIX成为最出类拔萃的黑客系统。

ITS和UNIX之间仍然会时不时爆发一些派系之争,且大多数情况下都是ITS一方挑起的。但随着1990年最后一台ITS机器的关机停用,狂热分子们也不得不放下立场,伴随着不同程度的抱怨,他们大多融入了UNIX文化。

(3)Berkeley UNIX vs AT&T UNIX

最大的对立来自于Berkeley UNIXAT&T UNIX的爱好者。偶尔你还可以发现那个时期的招贴画:卡通化的“星球大战”X翼战机从画着AT&T标识的死星的爆炸中疾驶而出。Berkeley黑客们喜欢把自己比做是反抗军,矛头直指那些没有灵魂的商业帝国,而AT&T UNIX虽然在市场份额上从来没有超过BSD/SUN组合,却赢得了标准之战。1990年,AT&T UNIX和BSD UNIX已经很难区分,因为彼此都吸纳了对方的很多新特性

(4)其他分支的黑客

另外一股势力也开始成长,第一台个人电脑在1975年开始进入市场,苹果公司于1977年成立。

微型计算机的发展势头越来越清晰,并吸引着新一代聪明的年轻人,他们的语言是BASIC,这种语言是如此简陋,以至于PDP-10信徒和UNIX爱好者都认为这简直不值得去蔑视。

DOS和Mac黑客们的数量已经超过了“网络部落”,但他们没有产生一种有自我意识的文化,其间有五十多种技术如蜉蝣般生死交替,但从来没有稳定到可以发展出俚语、传说和轶事这类的公共传统文化。

3、黑客与骇客

1984年,当 Ma Bell 被拆分后,UNIX第一次成为AT&T支持的产品,黑客圈形成了两大阵营,一边是围绕Internet和Usenet而形成的相对有凝聚力的“网络部落”(他们中绝大多数使用运行着UNIX的小型机或工作站级别的机器),一边则是没有网络的分散在各个角落的微机爱好者。这一阶段,一些严重的计算机破坏(cracking)事件开始被主流媒体报道,记者们误用黑客(hacker)一词来形容那些破坏者,这种不幸的误用一直延续至今。

其实应该叫骇客(Cracker)。两者最根本的区别是:黑客搞建设,骇客搞破坏。

将真实身份隐藏在虚假名字后面是骇客、warez d00dz以及其他不入流家伙们幼稚而愚蠢的行为。黑客不会这么做,黑客以自己的作为为荣,并愿意把自己的作品与真名相联系。

4、GNU/Linux

(1)UNIX 的衰落

UNIX曾经承诺的跨平台可移植性,在多个专有UNIX版本的争吵声中看不到任何希望,这些专有UNIX商家表现得如此沉闷、盲目和没有市场能力,以至于微软凭借Windows操作系统,从他们手中抢走很多市场份额。

技术上的个人英雄主义时代已经终结,软件工业和新生的互联网,将会越来越多受微软这类大型企业控制。

(2)GNU

Richard M.Stallman(人们更熟悉他的名字缩写RMS,这也是他常用的登录名)离开实验室,创建了自由软件基金会(FSF:Free Software Foundation),献身于生产高质量的自由软件。Steven Levy称赞他为“最后一个真正的黑客”,幸好没被他说中! RMS的宏大计划是黑客文化在上世纪80年代遭遇变迁的典型例证——1982年他开始用C语言重新构建整个UNIX的克隆,并免费发布,这就是广为人知的GNU(Gnu's Not UNIX,这是一种递归式的缩写)操作系统,GNU迅速成为黑客活动的焦点,而ITS的精神和传统,作为以UNIX和VAX为主的新一代黑客文化的重要组成部分,籍此得到了保全。事实上,在其后大约十多年里,RMS的自由软件基金会在很大程度上定义了黑客文化的公共意识形态,Richard M.Stallman本人则毋庸置疑地成为了整个黑客文化部落的唯一精神领袖。

(3)Linux

Linus Torvalds的学生有了施展才能的空间,1991年,他开始为386机器开发自由UNIX内核,使用的正是FSF提供的软件套件。Linus很快获得了成功并吸引了互联网上的黑客们,他们帮助Linus一同开发Linux一个全功能的UNIX,源代码完全免费,而且可以再发布

Linux最重要的特点不是技术上的,而是社会学上的。在Linux被开发出来之前,所有人都认为,如果软件复杂到操作系统这样的程度,就必须要有一个精心协作的团队,团队要比较小,而且紧密互动,不管是以前还是现在,这都是很典型的开发模式。

Linux几乎从一开始就发展出一条完全不同的路,其开发更像是仅通过互联网合作的大量志愿者的随意之作。在质量方面,没有严格的标准也没有一个强有力的机构来管理,他们只是执行一个简单得有点幼稚的策略:每周发布,并在接下来几天内获取数百个用户的反馈。他们创造了一种类似达尔文“物竞天择”的选择机制,被选择对象则是开发者们所做的种种软件修改。让所有人吃惊的是,这种方式工作得非常好。

1993年年底,Linux在稳定性和可靠性上已经和很多商业UNIX不相上下,并能支持比商业UNIX要多得多的软件,一些商业应用软件甚至开始考虑移植到Linux上

20世纪90年代后期,黑客圈的活动中心是开发Linux和宣扬互联网。

5、后黑客时代

互联网成为主流后,黑客文化开始受到尊敬,并有了一定政治影响力,1994年到1995年间,黑客的大规模强烈抗议,使得试图将“强加密”算法置于美国政府控制之下的Clipper提案无疾而终。1996年,黑客动员起广泛的同盟,导致所谓的“通信合宜法”(CDA)被废止,阻止了政府对互联网的审查。

二、大教堂与集市

上一章说到 linux 独有的开发模式——“集市”模式,这一章我们详细比比传统的 “大教堂”模式`跟 “集市”模式。


绝大多数商业公司所采用的“大教堂”模式和Linux世界采用的“集市”模式

1、“大教堂”模式 特点

我相信大多数重要软件(操作系统和真正大型工具如Emacs编辑器)需要像建造大教堂那样,在与世隔绝的环境下,由天才式专家或几个行家里手精心打造,不成熟时绝不发布beta测试版。

2、“集市”模式 特点

(1)发布 与 bug

“集市”模式的一个特征是:早发布,常发布

绝大多数开发者(包括我)都习惯性地认为:除非是很小的项目,这么做有害无益,因为软件的早期版本几乎都是问题版本(buggy version),如果早早发布,恐怕会耗尽用户们的耐心。

用户越多,bug越多”是因为增加用户就会增加程序检验的方式。

为防范严重bug给用户带来的影响,Linus有这么一招:在Linux内核版本号上加以标识(可以从版本号看出系统是否稳定——译者注),潜在用户要么选择上一个被标识为 “稳定”的版本,要么冒着有bug的风险使用最新版本以获取新特性。这种策略还没有被Linux黑客们系统性地加以模仿,也许他们以后会这样做。事实上,给用户以选择使得两种版本都更具吸引力。

理解这个问题的关键在于要弄清楚这个现象:如果报告 bug 的用户对源码不关心,则其报告通常不会很有用。对源码不关心的用户,往往报告的都是表面症状,他们把自己的运行环境当成是理所当然的,他们不仅省略了重要的背景数据,而且很少给出重现 bug 的可靠方法。这里隐含的问题是开发者和测试者对程序有着不匹配的思维模式,测试者是从外往内看,程序员是从内往外看。对于不开放源码的软件开发,开发者与测试者往往局限于自己的角色,各说各话,都对对方倍感沮丧。开源开发打破了这种困境,由于大家都有真实的源码,开发者和测试者很容易发展出一个共享的表达模式并进行有效的交流

源码级bug报告非常有用的理由还有很多,但都围绕着这个事实:一个错误可能会导致多种症状,因用户使用方式和环境不同而有不同表现。

(2)集思广益

仅次于拥有好主意的是,识别来自用户的好主意,有时后者会更好。

通常,那些最有突破性和最有创新力的解决方案来自于你认识到你对问题的基本观念是错的

任何工具都应具备预期内的功能,但一个伟大的工具能给你带来预期外的功能。

Linux和fetchmail都证实了这一点。Linus虽不是一个让人惊叹的原创设计者(前面说过),但他表现出了能识别优秀设计并将其集成进Linux内核的出色才能。而我也介绍过,fetchmail中最强大的设计(SMTP转发)来自他人。

集市项目的协调人或领导人必须要有很好的人际交往和沟通能力。

(3)无私编程 + 基于互联网的协作

无私编程”(egoless programming)。

也有翻译成 无我编程 的。

传统的UNIX世界中,有一些因素阻止了把这种方法推进到极致。一方面是各种许可证(license)的法律限制、商业秘密和市场利益,另一方面(现在看来)是当时的Internet还不够好。在互联网变得便宜之前,有一些地域性的协作社区,他们在文化上鼓励Weinberg的“无私编程”,开发人员可以很容易地吸引到很多高水平的评论者和合作开发者。

Linux孕育之时万维网(World Wide Web)刚刚诞生。廉价的Internet是Linux模式得以发展的必要条件,但我认为它还不足以成为充分条件。

在软件工程的全部经验中,Brooks定律占据着统治地位,它来自于Fred Brooks的经典著作《人月神话》。 Brooks推测,如果开发成员数目为N,工作量会呈N倍增长,但复杂性和bug率会以N 2增长。N 2体现着各开发者代码之间的通信路径(以及可能的代码接口)。对于一个有数以千计贡献者的项目,Brooks定律预言它必然会成为怪异不堪、难以驾驭的一团乱麻,但不知怎地,Linux社区打破了N 2效应,他们做出了质量高得惊人的OS。我决心要弄明白这是怎么回事。

(4)齐心协力 + 另类激励

Weinberg引用了19世纪俄国无政府主义者Pyotr Alexeyvich Kropotkin所著《一位革命家的回忆》(Memoirs of a Revolutionist)中的一段,很好地诠释了这个问题:“我成长于一个农奴主家庭,在投入积极生活之时,像那个年代所有年轻人一样,我非常相信命令、指示、斥责、惩罚等行为的必要性。但当我早期不得不管理重要事业并和(自由)人打交道时,在任何错误都会立刻导致严重后果时,我开始感悟到按“命令与纪律原则”行事和按“共识原则”行事之间的重要区别。前者在军队检阅时的作用令人钦佩,但在真实生活中却一文不值,想要达到目标,必须要靠众人的齐心协力。”“齐心协力”正是Linux这种项目所需要的。

GNU Emacs编辑器是一个极端的、有启发性的例子,尽管该项目的人员流动率很高,从始至今持续起作用的只有一人(Emacs的作者),但15年来,仍然有数百名贡献者投入努力,他们合作造就了一个统一的架构体系,还没有哪个闭源编辑器能匹敌这样的长寿记录。


Linux黑客们致力于最大化的“效用函数”,其目的并不是经典意义上的经济价值,而是自我满足和黑客声望这些无形的东西。(有人把这种动机称为“利他”,但他们忽视了一个事实,即“利他”本身是“利他者”自我满足的外在表现。)

若论激励效果,问题自身的魅力比单纯的金钱要有效得多。

1997年首版的“大教堂与集市”文章结束于上面这个展望:由程序员和无政府主义者组成的快乐的网络部落,战胜和压倒了等级森严的传统闭源软件世界。

现在看来,开源成功的一个最重要成果,就是告诉我们,“玩”是创造性活动中最具经济效能的工作模式。

但传统开发管理是对缺乏激励的程序员们的必要补充,否则他们不会干得很好。

3、两者混合

卓越程序员们有个很重要的特征是“建设性懒惰”,他们知道人们要的是结果而不是勤奋,而从一个部分可行的方案开始,明显要比从零开始容易得多。以 Linus Torvalds 为例,他并没有尝试从零开始写 Linux,而是以重用 Minix(一个用于 PC 机的迷你型 UNIX 类操作系统)的代码和理念作为开始,虽然 Linux 中所有 Minix 代码最终都被移除或重写,但它在 Linux 成长初期确实起到了类似脚手架的作用。

好的软件作品,往往源自于开发者的个人需要。
优秀的程序员知道写什么,卓越的程序员知道改写(和重用)什么。

不只是Emacs,还有其他一些软件产品也使用了两层架构和两级用户群,内核使用大教堂模式开发,工具箱(toolbox)使用集市模式开发

三、开垦心智层


1、开源文化

(1)许可证

Richard M.Stallman(RMS)创立的自由软件基金会(FSF),从20世纪80年代早期开始,支持了大量的开源项目,包括Emacs和GCC——它们至今仍然是互联网开源世界的基础,而且看起来将继续保持这个地位。多年来,FSF是开源文化唯一的最为重要的焦点,它产生的大量工具,仍然对开源文化至关重要。

FSF的许可条文“通用公共许可证”(GPL)表达了FSF的态度。

更多许可证区别可以参考我文:《MIT / BSD / Apache / LGPL / Mozilla / GPL 区别》

(2)实用派 与 纯粹派

实用派更看重它是否有好的工具和玩意儿,而不太在乎是不是反商业,他们会使用高质量的商业软件而不会产生价值观上的排斥。

直到1993至1994年,由于Linux的爆发,实用派才找到一个真正有力的基础,尽管Linus Torvalds从来没有反对过RMS,但他树立了一个友好对待商业Linux成长的榜样,他公开支持在特殊用途上使用高质量的商业软件,并对黑客文化中的纯粹派和狂热人士予以适度的调侃。

完全反商业化的纯粹派,越来越发觉自己成了少数派。

开源文化的“官方”意识形态和他们的实践并不一致。文化是有适应能力的机器,开源文化会对一系列可识别的动力和压力做出反应。通常,文化对其所处环境的适应,既反映了其自觉的意识形态,也反映了其隐藏的、无意识或潜意识的认识。而无意识调适和其意识形态的不一致,是很常见的现象

2、开源的激励动力

(1)编程乐趣

精湛工艺(craftsmanship)带来的单纯快乐是黑客首要的动机。

编程乐趣”是对自我实现或自我超越需求的满足,这种高层次需求只有在低层次需求(包括生理安全、归属感、同侪尊重)被最低程度满足后,才会持续地表现出来。

(2)声誉竞争

没有生存问题之后,名望就成了追求目标。

“编程乐趣”要在一定社会环境下才能成为个体的主要动机,而“声誉竞争”可能对该环境提供起到了至关重要的作用。

除了“声誉竞争”模型,很难看到其他有解释力的理论。

相比之下,在黑客社区中,一个人的作品就是他的宣言。这里有着严格的精英意识(技术最好的人胜出),这里的信条是让质量说话,让黑客最自豪的是代码“好使”(just works),是让任何称职程序员都能看到的好东西,所以,黑客文化的知识库增长迅猛。

出于非常类似的原因,抨击作者而非代码是不合常规的,这一点微妙而有趣,黑客们会没有顾忌地在意识形态或个人差异上互相攻击,但从未听说有哪个黑客曾公开攻击另一个人的技术能力。

最后,我个人曾观察到一些顶级黑客的自谦行为,表明了他们对个人崇拜的真实恐惧(这并非没有道理)。Linus Torvalds和Larry Wall都明白无误地展现过很多次对个人崇拜的回避。

最后,声誉竞争模型解释了一个常被引用的格言,即“自称是黑客不代表你就是黑客,只有其他黑客认为你是黑客,你才是黑客

开源世界的1.0版意味“开发者愿意拿自己的名誉赌它好使”,而闭源世界的1.0版则意味着“如果你很谨慎,不要用这版”。

”使用”是最真实的赞美,类别杀手比同类竞争者好。

所以人们会认为:多数人使用的作品优于那些少数人使用的

3、开源的冲突处理机制

(1)所有权

所有权是动物领土权的抽象,它之所以被进化出来,是为了减少物种内的暴力争斗。狼通过标记边界和尊重其他同类的边界,可以减少陷入争斗的机会,而争斗可能会使它虚弱或死亡,从而降低它成功繁殖的概率。类似的,人类社会的所有权是为了防止人类之间的冲突,通过设定边界,可以清楚地区分和平行为与侵犯行为。

开源社区支持的所有权声明是一种摩擦最小化和合作最大化的方法,尽管“所有权声明”比栅栏或者狗吠要抽象得多,尽管有时只是在README文件中声明一下项目维护者的名字,但这个道理是没错的。它是领土权的抽象,并(像其他形式的所有权一样)基于领土本能,一种为协助解决冲突而进化出来的本能。

(2)领土

做网页很容易,很难理解为什么有个网页就让项目看起来更重要或者更不一般

那么,将项目安家在网站上的做法为什么会流行起来?

通过建立项目“主页”,使项目在组织上更有空间感的万维网王国中建立起“家园”(home territory),从而具象化了在程序空间中“开垦家园”的抽象概念。

(3)合作

按这个逻辑推理,我们明白善意独裁者事实上并不绝对拥有整个项目。虽然他有权做出强制性决策,但实际上是通过交易一部分声誉回报来换取他人的工作。这让人不禁联想到与之非常类似的佃农耕作,当然这点除外:即便贡献者不再为项目工作,其名字仍然保留在名誉表上,并能继续“赚取”一定程度的声誉。当善意独裁者项目的参与者不断增加时,它倾向于发展出两层级的贡献者结构:普通贡献者和合作开发者。

黑客们常说“责任背后是权力”。

(4)话术

给予激励是聪明的做法,但一定不能有附加条件,以避免把事情搞糟糕。Ryan观察到以下两种说法有着完全不同的效果:“我给你报酬是因为我认可你工作的价值”和“你得到报酬是因为你达到了我的标准”,第一种说法不会挫伤积极性,但第二种会。

(5)理论

动物行为学分析也促使我们更近距离观察开源文化中的冲突处理机制。

我们已经研究了那些规范开源软件所有权和控制权的习惯,看到了它们所隐含的与Lockean土地权理论相类同的财产权理论。

四、魔法锅


1、开源优势

(1)高可靠和高质量

开源为独立同行评审创造了条件。开源的同行评审是得到高可靠和高质量软件的唯一的可扩展方法。

在一个竞争性市场上,客户寻求的是高可靠和高质量的软件,走开源之路并学会如何通过服务、增值和附属市场获取收入流的软件制造者,自然会赢得客户的回报。

另一方面,经济学家知道,信息不对称会给市场带来负面影响。如果靠特权信息收费能够比努力生产好产品更有利可图,高质量的产品就会被逐出市场。不透明是质量的敌人(secrecy is the enemy of quality),软件业如此,其他行业也如此。

让我想到密码学上的柯克霍夫原则:即使密码系统的任何细节已为人悉知,只要密钥未泄漏,它也应是安全的。

(2)抗风险

如果源码是开放的,消费者在供应商破产后仍然能有所依靠。

(3)重置竞争(防垄断)

开源项目可以有效防止闭源产品制约市场,能重置竞争并让新进公司从劣势领域转至优势领域里。

Netscape将Mozilla浏览器开源是阻止微软对HTML和HTTP进行事实上控制的一种成功手段。

谈到Linux是否会分裂,很多人会拿上世纪80年代专有UNIX供应商的行为做类比,尽管就开放标准问题进行了无数次会谈,尽管成立了众多的联盟、团体和协定,专有UNIX还是四分五裂了。事实证明,供应商更有兴趣通过增加和修改操作系统功能将其差异化,而不是考虑如何通过维护兼容性把UNIX市场整体做大(从而降低独立软件开发者的进入壁垒,并减少客户的拥有成本)。这不太可能会发生在Linux身上,原因很简单,所有发行商都不得不在同一个公用开源代码库上操作。他们中的任何一个都不可能在事实上保持差异化,因为许可证(Linux代码的有效成长得益于此)要求他们将代码与其他各方共享。任何发行商一旦开发出一个新功能,所有竞争者都可以免费克隆它。

Red Hat唯一能出售的是品牌、服务和支持,人们则自愿为此付费,这样就不会使掠夺性垄断有太大的可能。

(4)成本分摊

成本分摊做竞争武器前面谈到的Apache,是一个在开源项目中通过成本分摊实现质量更好和成本更低的基础架构开发的例子。对于想要和微软及其IIS服务器竞争的软件及系统供应商,Apache项目都可以是一个竞争武器。因为任何单个的Web Server供应商,想抗争微软所拥有的巨量“战争基金”(war chest)以及桌面市场上的垄断能力,都是艰难甚至不可能的。而Apache项目使得每个参与者能够以低得多的成本,提供一个不但在技术上优于IIS而且能让客户放心使用的拥有大部分市场份额的Web Server产品。

(5)除上面几条,还有什么情况下建议开源?
  • 该软件对客户的业务非常关键。
  • 该软件创建或运转一个公共计算或通信基础架构。
  • 关键方法(或能实现同等功能的方法)属于公共知识。

后两条的例子:

Internet的戏剧性成长,在很大程度上要归功于没人拥有TCP/IP标准,也就是说,没有特权能够控制Internet的核心协议。

一个很好的例证是,到20世纪90年代中期,那些试图使用封闭协议(如DECNET、XNS、IPX等)占领市场的尝试,在历经15年的努力后,无一例外的都失败了,数据网络架构最终纷纷采用了TCP/IP。

2、闭源不赚钱?

闭源的不足顶多是不能通过秘密比特赚钱。

即程序的销售价值是它作为一个可买卖商品的价值。(按照经济学家的专业说法,销售价值是最终产品价值,使用价值是中间产品价值。)

但换句话说,软件很大程度上是一个服务行业,虽然长期以来都毫无根据地被错认为是制造行业。

在从闭源转向开源的过程中,受到威胁的仅仅是销售价值,而非使用价值。

资助开源开发(并从中获利!)的市场机制仍然在快速发展之中。

软件开源会不会让程序员无以谋生?不太可能,目前看来,开源软件产业非但没有使工作职位减少,反而创造了更多的工作职位。 如果程序写出来比不写出来会有净经济收益,那程序员就会得到报酬,而不论程序写出来后是否免费。此外,不论写出多少“免费”软件,永远存在更多新的和定制化的应用需求。对此我在Open Source网站(http://www.open-source.org)上有更多的论述。

3、未来,开源 or 闭源?

我们可以做出如下的大胆预言:基础架构(互联网、Web、操作系统、跨越竞争者界限的低层通信软件)将会几乎全部开源,并由用户联盟和盈利性发布/服务机构(如Redhat所扮演的角色)共同维护

应用,则非常倾向于继续封闭。当一个未公开算法或技术的使用价值足够高(且软件不稳定带来的相关成本足够低、供应商垄断带来的相关风险足可容忍)时,用户会继续为此类闭源软件付费。这种情况最有可能发生在自成一体的垂直市场应用中(其网络效应也较弱)。前面提到的锯木软件就是一例,1999年最热门和最有前景的生物识别软件则是另一例。中间件(像数据库、开发工具或可定制的应用协议栈顶端)将处于开闭源混杂的状态,这类软件走向闭源还是开源,似乎更取决于软件失效的代价,代价越高,其走向开放的市场压力就越大。

应用会倾向于落入中间件之列,因为技术不断标准化,而服务也逐步市场化(比如,在SQL与引擎前端解耦后,数控库就成了中间件)。当中间件市场化后,他们就倾向于落入开源基础架构之列——正如我们现在所经历的操作系统变革。

这段非常精辟。

五、黑客的反击


1、从 自由软件 到 开放源码

(1)自由软件

起源自 自由软件基金会(FSF),上面提到过,这里不赘述了。

(2)开源

对网景来说,他们并不太关心浏览器相关的收入(这永远是其收入的很小一部分),他们更关心如何给更具价值的服务器业务营造一个安全的空间。如果微软的IE浏览器主宰了市场,微软将会扭曲开放标准的Web协议,将其带入专有化路径,进而使得只有微软服务器才能提供Web服务。关于如何对抗微软,网景内部有着激烈的争论。其中一个提议是把网景浏览器开源。

1998年2月3日,在位于山景城的VA Research(现在的VA Linux System)办公室中举行的一次会议上,“开放源码”一词由开源运动的首批参与者们发明出来,并随之成立了后来被命名为“开放源码促进会”(Open Source Initiative)的组织。回顾过去,可以很清楚看到,“自由软件”这个术语在过去多年里给我们的活动带来了严重的危害,部分原因是“自由”一词在英语中有两个截然不同的含义,一个是指免费,一个是指不受限制。Richard Stallman(自由软件基金会的创始人)一直在捍卫“自由”这个词,尽管他常对人们说“Think free speech,not free beer”,但这个词的模糊性还是产生了严重问题,尤其是大多数自由软件目前都免费的情况下。

我们面临的一个威胁是:微软或其他大供应商可能会采取“拥抱并拓展”(embrace and extend)策略破坏“Open Source”一词,使它失去我们要传达的理念。所以Bruce Perens和我一开始就决定把这一术语注册成认证标识并把它和“开源定义”(Open Source Definition,也即Debian Free Software Guidelines的拷贝)绑定。这样我们可以利用法律诉讼的威慑力吓跑那些可能的滥用者。事情发展的结局是,美国专利商标局不同意为这样一个描述性短语发放专利商标。一年后我们不得不放弃正式注册“Open Source”的努力,

自由软件峰会之后所做的宣传使得主流媒体开始了解开源,并且让人们知道并不只是网景才接受开源的概念,开源现象的影响力已经超过了任何一个互联网社区局外人的认识。开源程序远远不再是处于边缘地带的挑战者,它们已经成为提供互联网基础架构各关键元素的市场领导者。Apache是Web Server的领导者,有着超过50%的市场份额(现在已增长超过60%),Perl则是新兴网络应用的主要编程语言,Sendmail传输了所有互联网邮件的80%,而无所不在的域名系统(它使我们可以用www.yahoo.com这种网址而不是拗口难记的IP地址)则几乎完全依靠名为BIND的开源程序。

(3)开放源码定义

1997年,“Debian自由软件准则”提炼了这些共同要素,并形成了开放源码定义(OSD,参见http://www.opensource.org)。

(4)题外话

从一开始我就明白一件事,那就是媒体完全不喜欢抽象的东西,如果没有名人站在他们面前说个什么观点,他们就不会报道它。所有东西都必须有故事、有戏剧性、有冲突、有亮点,否则的话,大多数记者宁愿去睡觉——即使他们不这样,编辑也会。

这本书并不是详尽展开这套理论的地方,想象一下“最高水平的挑逗”,聪明的读者就可以推测出很多。事实上,我会在采访中兴致盎然地谈论起我对枪支、无政府主义以及巫术的兴趣,同时尽可能让我看起来体体面面、充满童心并且拥有典型美国式的阳光心态。诀窍在于,语出惊人但却传达出让人放心的诚实和单纯。(注意:若想成功使用本诀窍,你必须真的是那样,如果其中任何一点做不到,推荐你不要使用,否则极有可能让你原形毕露。)

3、开源的积极响应

5月7日,我们迎来了网景之后的第一次真正突破,Corel公司发布了基于Linux的Netwinder网络计算机。

数据库方面加入Linux阵营比我预期早了3个月,

在Oracle和Informix宣布支持Linux后,其他ISV也纷纷开始宣布支持Linux。这样,即便Mozilla失败了我们也能继续下去。

此事直接导致美林证券邀请我和其选择的主要投资人团体就软件业现状和开源前景进行了交谈。华尔街,终于开始正视我们了。

Linux的开源对手们并没有获得任何引人注目的成就,专有UNIX系统仍在不断失去市场份额;到年中时,事实上只有Linux和NT系统仍在实际获取财富500强的市场份额,而到深秋时,Linux获取市场份额的增速更快了(并且抢走NT的市场份额要多于其他UNIX的)。

这些几乎都是无法预测的。但有一个问题值得思量:Linux社区能否给整个系统提供一个终端用户友好的GUI界面? 1999年本书第一版问世时,我预测2000年末/2001年初最有可能的情景是Linux有效控制了服务器、数据中心、ISP以及互联网,而微软仍然保持对桌面的控制。

今后的发展取决于GNOME、KDE或其他一些基于Linux的GUI(以及基于它构建或重构的应用程序)能否好到足以挑战微软的主场地位。

问题主要出在人机工程学设计和界面心理学上,黑客在这些方面从来就很弱

六、后记:软件之外


1、开源如何影响我们的当代观念

是的,开源的成功确实引发了人们对命令控制系统(command-and-control system)、不透明性、集中式管理(centralization)以及某类知识产权的怀疑,不得不说,在如何对待个体之间、机构之间以及个体与机构之间的关系上,它向世人建议了一种广义上的自由主义观念(或至少是与自由主义相协调的)。

2、是否所有领域都值得开源?

举个比较恰当的例子,音乐以及多数书籍不同于软件,它们通常不需要除错和维护,同行评审的效用会因此降低很多,选择开源的理性动机也会几近消失。我不想因开源在其他领域的可能失败而削弱开源在软件上一定会赢的说服力。

七、附录A:如何成为一名黑客


1、模仿黑客大师

最有效的方法是模仿大师的思维模式——不仅在理智上,还要在情感上

(1)这个世界充满了迷人的问题等待人们去解决
(2)不要解决一个问题两次

他包含两个方面:

  • 创造性头脑是无比珍贵的有限资源,它们不应浪费在重新发明轮子这种事上,尤其是还有这么多迷人的新问题在那里等着的时候。
  • 其他黑客的思考时间是很宝贵的——它是如此宝贵,以至于共享信息、解决问题并将解决办法馈赠给其他黑客几乎就是你的道德义务。
(3)无聊和乏味是有害的

希望尽可能将那些无趣的事情自动化,这不仅是为自己,也是为其他人


注意:态度不能代替能力。要想成为黑客,你必须养成这些态度。但只凭态度并不会让你成为黑客,就像只凭态度不会让你成为冠军运动员或摇滚明星一样。要成为一名黑客,你需要智慧、实践、投入和努力。

2、黑客的基本技能

(1)学习如何编程

① 编程语言

你需要学会以一种独立于任何语言的一般方式来思考编程问题

如果你想进入真正的编程领域,则必须学习C,这是UNIX的核心语言。C++和C的关系很密切;如果你懂其中一个,学另一个并不会太难。不过,这两种语言都不是好的入门语言。

其实,最好把这五种语言(Python、Java、C/C++、Perl和LISP)都学了。它们不只是最重要的黑客语言,还代表了截然不同的编程方法,每一种都会让你受益匪浅。

不要学Visual Basic,它尤其糟糕。仅从它是微软的专有语言这一点就足可以抛弃它了,而且和其他各种Basic语言一样,它的设计也很差,这会让你养成一些坏的编程习惯

一般而言,任何语言,若是不能得到至少Linux或某种BSD的支持,以及/或者不能得到至少三家厂商的操作系统的支持,都不值得想当黑客的你学习。

你可以从书本上学到语言特征,但那只是皮毛,想要获得将知识转化为技能的思维模式,只能通过实践和跟随大师。做法就是读代码和写代码。学习编程就像学习如何写好自然语言。最好的方式是阅读大师们写的东西,然后写你自己的东西,


② OS

选择用于学习的机器时,比较重要的一点是留心其硬件是否与Linux兼容。

找一个开源UNIX,学习使用和运行它。

我被黑了。你能帮我防御攻击吗?不能。到目前为止,问这个问题的都是使用Windows的用户。你不可能有效保护Windows使其免受攻击,它的代码和架构有太多缺陷,保护Windows就像是用漏勺从漏水的船上向外舀水。唯一可靠的防护方法就是转向Linux或其他真正安全的操作系统。


③ 更多

学习如何使用WWW和写HTML。

(2)培养声誉

像大多数不涉及金钱的文化一样,黑客文化靠声誉运转。

具体而言,黑客文化是人类学家所称的礼物文化。你之所以获得地位和荣誉,不是通过支配别人,不是通过美貌,也不是通过拥有别人想要的东西,而更多是通过给出。特别是给出你的时间、给出你的创造力、给出体现你技能的成果。

  • 写开源软件。
  • 协助测试和调试开源软件。
  • 发布有用的信息。

    技术性FAQ的维护人员甚至会得到和开源作者一样的尊敬。

  • 帮助做一些基础工作。

    管理邮件列表,主持新闻组,维护大型软件库,提出RFC和其他技术标准等等。

  • 服务黑客文化自身。

    写一本关于“如何成为黑客”的精准的入门教程。

3、书呆子与黑客

并不是只有书呆子(nerd)才能成为黑客,虽然这的确有帮助,而且有很多黑客确实是书呆子

因为这个原因,很多黑客都接受了“书呆子”这个标签,甚至会引以为荣地使用“怪人”(geek)这个更刺耳的称呼——

主流社会如今对“技术呆”(techno-nerd)也友善多了,甚至有越来越多人认为黑客往往是高质量恋人和配偶的人选。

4、黑客精神

黑客精神并不局限在软件文化中。人们会把黑客态度用在其他事情上,比如电子或音乐。事实上,对任何科学和艺术,在其最高水平的活动中都可以发现黑客精神。软件黑客若是识别出其他领域的同道中人,也会称他们为“黑客”。

还有另一种黑客精神,即自由是好事。黑客天生是反权威的。

posted @ 2020-04-18 17:33  小蒋不素小蒋  阅读(901)  评论(0编辑  收藏  举报

ICP证:沪ICP备20014317号