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模式得以发展的必要条件,但我认为它还不足以成为充分条件。