Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

2.13 尾声:网景拥抱集市

意识到自己正在参与创造历史,这是一种奇妙的感觉……

在 1998 年 1 月 22 日,距离我初次发表《大教堂与集市》约 7 个月,网景通信公司对外宣布,计划开放旗下网景通信家(Netscape Communicator)的源代码(公告原文参见:http://www.netscape.com/newsref/pr/newsrelease558.html)。在官方发布这则消息前,我对此毫不知情。

消息发布后不久,网景执行副总裁、首席技术官埃里克・哈恩(Eric Hahn)给我发来一封邮件,内容如下:“我谨代表网景全体同仁,首先向你致谢,是你的理念引领我们走到今天这一步。你的思考与文字,是我们做出开源决策最核心的思想源泉。”

The following week I flew out to Silicon Valley at Netscape’s invitation for a day-long strategy conference (on 4 February 1998) with some of their top executives and technical people. We designed Netscape’s source-release strategy and license together.

一周之后,我受网景邀约飞往硅谷,出席 1998 年 2 月 4 日为期一天的战略研讨会,参会者包含公司一众高管与核心技术负责人。我们一同敲定了网景源代码开放方案,并共同起草配套开源许可证。

几天后,我写下这样一段文字:

网景即将在商业领域开展一场面向集市开发模式的大规模真实落地试验。开源文化此刻正面临一道难关:如果网景这次推进失败,那开源理念将彻底失去公信力,商界或许整整十年都不会再涉足开源。

但换个角度看,这同样是千载难逢的良机。华尔街及各界市场对此举的初步反馈偏向谨慎乐观。我们也迎来了自证价值的机会。如果网景借开源重新夺回可观的市场份额,一场迟到已久的软件行业变革或将就此拉开序幕。

接下来这一年,注定充满借鉴意义,也很有看点。

事实也的确印证了这点。我在 2000 年年中落笔此文时,这个后来被命名为 Mozilla 的项目,只能算是一次不完全成功的尝试。它达成了网景最初的核心目标:打破微软对浏览器市场的垄断格局,同时也交出了几项亮眼的成果,其中最有代表性的就是新一代 Gecko 渲染引擎的问世。

但它并没有像 Mozilla 初代发起人预想的那样,吸引到海量外部开发者参与共建。问题似乎在于,Mozilla 发行版在很长一段时间里,违背了集市模式的一条核心准则:没有提供能让潜在贡献者一键运行、直观看到运行效果的成品。(项目开源一年多之内,任何人想要从源码编译 Mozilla,都必须取得专有 Motif 图形库的商用授权。)

站在外部视角看,最致命的短板在于:项目启动长达两年半,Mozilla 团队始终未能推出一款可投入商用的稳定浏览器。1999 年,一位项目核心成员杰米·扎温斯基(Jamie Zawinski)选择离职,他公开痛陈内部管理混乱、错失大量机遇,这件事在业内掀起了不小的波澜a。他说得一针见血:“开源并不是灵丹妙药。”

这话不假。时至 2000 年 11 月,Mozilla 的长期发展前景已经远比杰米递交辞职信那会儿明朗:近几周的 nightly 版本b,终于跨过关键的门槛,达到可供商用的稳定水准。但杰米的观点无可辩驳:如果一个既有项目本身目标模糊、有大量的面条代码(spaghetti code)c,或是深陷软件工程各类陈年顽疾,仅仅开放源代码并不能力挽狂澜。Mozilla 恰好同时提供了两面参照范本,清晰地展示了开源何以成事,又何以落败。

与此同时,开源理念在其他领域遍地开花,收获了大批拥护者。自从网景开放源码之后,业界对开源开发模式的关注度呈爆炸式增长;这股浪潮与 Linux 操作系统的持续兴盛相辅相成、彼此助推。当年由 Mozilla 掀起的开源风潮,至今仍在加速蔓延。

译者注

a. 杰米·扎温斯基在离职时发表了一封著名的公开信,详细剖析了 Mozilla 项目的问题,如感兴趣可以查阅。

b. nightly 版本(nightly release):即每日构建版本,经常与 stable 版本(稳定版本)、beta 版本相提并论,三者当中 nightly 版本更新频率最高、功能最新、稳定性最低(未经过 beta 测试),主要的目标用户为开发者、测试人员、技术爱好者,或需要验证新特性的用户。

c. 面条代码(spaghetti code):软件工程名词,指冗长、大量嵌套、控制结构复杂、混乱且难以理解的代码,因代码像一团意大利面条那样杂乱无章而得名。