写点什么

开源软件运动|网景公司|大教堂与集市

用户头像
开源青年
关注
发布于: 2021 年 04 月 05 日


1998 年 1 月 23 日,美国网景公司做了一个决定,宣布将会开放下一代网景通讯家套件的所有源代码。网景通讯家套件后面就是 Mozilia 项目,下文均使用 Mozilla 指代该开源项目。

平地起惊雷。

网景公司为什么开源 Mozilla ?

开源软件运动是什么?

开源软件运动和自由软件的区别是什么?

相信看完本篇文章,你就会明白。

另起炉灶

受网景开放浏览器源代码的启发。1998 年 2 月 3 日,在加利福尼亚帕洛阿尔托召开的战略会议上。布鲁斯·斐伦斯、埃里克·雷蒙德、蒂姆·奥莱利、拉里·奥古斯丁在内的自由软件运动的成员,还有刚刚宣布开源的网景公司,在讨论如何让自由软件运动更受商业欢迎,希望能够扩大自由软件的覆盖范围,动员更多的人员加入。

布鲁斯·斐伦斯及埃里克·雷蒙德这两位“天降猛男”可是不得了。

布鲁斯·斐伦斯定义了开源软件是什么,开源软件定义就是他写的。


埃里克·雷蒙德的《大教堂与集市》是开源软件宣言,网景公司就是受到了这本书的影响,在网景宣布开源 Mozilla 之后,他经常出入网景公司,希望 Mozilla 能够顺利的开源。稍后会详细介绍他。


两位“天降猛男”成立了 Open Source Initiative ,中文为开放源码促进会,简写为 OSI 。

他们认为自由软件运动缺乏市场营销活动,自由软件运动的目的不仅仅是为了市场份额,更重要的目的是宣传自由软件思想,这是开源运动兴起的第一个原因。

第二个原因是自由软件这个词教育成本很高。在雷蒙德的个人博客中,他对于自由软件的缺点有了很详细的记录:

“它有两个问题。首先,这令人困惑;‘自由’一词非常模糊,自由软件基金会必须不断努力的宣传。‘免费’是‘不收钱’的意思吗?还是说‘任何人都可以自由修改’,还是其他什么?其次,这个词让许多公司类型感到紧张。”

这点对于初期寻找投资的红帽公司的影响尤为显著,当跟投资人说:“我们的商业模式是销售免费(free)软件”的时候,投资人的表情无不透露出大大的疑惑。

他们在讨论如何创立一个新的品牌,来引导这场运动。最后克里斯汀·彼得森提出了 “open source”这个词,受到了大家的一致好评,中文翻译就是“开源软件”,开源软件这个词在这次会议上被首次创造出来。

在这次会议不久,1998 年 2 月 5 日,埃里克·雷蒙德和硅谷的一些 Linux 用户集思广益,最后确定这个词语,并且要求以前使用自由软件的地方,都要改成开源软件。

开源软件

开源模型

开源文化

Debian 开源指南

……

1998 年 2 月底,在雷蒙德和布鲁斯的倡议下,成立了 Open Source Initiative,缩写为 OSI,中文翻译为开放源代码促进会。他成立的目的有以下几个:

  1. 宣传开源软件思想,提高人们对开源软件的认识。

  2. 建立开源软件和各社区沟通的桥梁。

  3. 定义开源,防止开源思想和精神被滥用。

雷蒙德担任 OSI 的第一任主席,直到 2005 年退休。

一场轰轰烈烈的开源运动正式开始了。

网景:第一个将商业产品开源的公司

1997 年 5 月 21 日,雷蒙德在 Linux Kongress 上发表《大教堂与集市》这本书。

1998 年 1 月 22 日,受《大教堂与集市》书中描写的软件开发模式影响,网景公司正式宣布开源其网景通讯家套件开源,项目名称为 Mozilla。以此来对抗被微软的 IE 浏览器不断出蚕食的浏览器市场。


网景这家公司当时的问题在于,当时网景的产品需要微软的技术支持才能够正常运行。网景通讯家运行在 Windows 上,这是必不可少的一个部分。但是后面,微软根据其微软网络计划,发布了 IE 浏览器。

网景通讯家和 IE 浏览器谁是亲儿子,大家应该门清儿。

网景的产品要根据 Windows 的产品策略做调整,在 IE 发布之后,这种调整意味着网景不断流失的市场份额。

说起来容易做起来难,Mozilla 的开源之路困难重重。

林纳斯说:“对于那些以公司自身资源为起点建立和维护开源运动的,对外开放是绕不过去的大问题。公开源代码,嘴上说起来简单,但往往都会陷入一种二元社群结构:公司内部的’我们’和公司外的’他们’”。

大量的决定如果只是在公司内部的咖啡桌上达成一致,而不是对外公开,外部人员就算有天大的想法往往会被否定。

这说的就是网景。

在项目刚开源不久,网景公司内部的“我们”和公司外部“他们”就对立起来了。

公司内部有一些反对阵营声称,他们不会接受外部人员的那些小补丁。

开源不是将代码开放就不管了,重点是管理和运营社区。而网景恰恰是前者,他们只开放了一大堆源代码,真正参与到代码构建中的也只有网景的人。

而且这些源代码相当老旧,难以维护。被开放出来的源代码几乎都被废弃了。

开源等于重写。

开了一个寂寞。

而且更大的问题是,网景仅仅将开发版本的源代码公开了出来,但是在公开源码的过程中,这个版本就已经出了很多问题,开发版本的 Bug 很多。

此外,在开源许可证方面,网景通讯家使用的不是 GPL 授权。他们魔改了 GNU GPL ,如果你想更改了网景通讯家的源码,你需要使用魔改后的 NPL (Netscape Public License)许可,如果你要为网景通讯家新增程序,你需要使用的是 MozPL(Mozilla Public License)。

最后,网景通讯家的代码并不全部属于网景公司,例如 Java 部分就是 Sun 公司授权给他们用的。

结果可想而知,网景公司在开源初期不但没有把项目做大,反而引来了很多负面新闻。

直到公司内部的一次会议的消极决定传出来,才让网景公司痛定思痛,狠心将项目相关的源代码开放。

整个项目终于变得有活力了。

虽然开源之初困难重重,但是还是有好消息的。在网景开源不到 24 小时的时间里,一个自称“Mozilla 秘密小组(Mozilla Crypto Group)”的澳大利亚团队就创建了一个加密模块。

由于当时的美国的进出口限制,加密算法无法出口。非美国的地区无法使用美国的加密技术。这个小组把这个问题解决了。

还是由于美国进出口限制,这个小组的代码一旦进了美国,就无法出口了。

作为 Mozilla 项目开源之初最伟大的一次尝试,这些代码并没有办法合入 Mozilla。

当时最出名的两个项目是 Linux 和 Mozilla,这两个项目代表当时开源圈子的形象,所以在网景开源的一年时间里,谁都不想对网景做出任何负面的评价。担心会给开源理念留下坏名声。

雷蒙德在听说网景准备开放源 Mozilla 后,在给网景写的一封信中,也写了对于网景此举的担忧。

“我非常不希望这些不良后果发生,因为如果网景的尝试受到挫败,对于我所由衷信仰的自由软件文化,会有极端负面的影响。自由软件模式会落得极不受信赖,使得未来类似的尝试将难如登天。”

关于网景通讯家这套软件,如果往深挖的话,你会发现网景通讯家是基于一款开源的浏览器项目开发的,项目名称叫做 NCSA Mosaic, 该项目源码现在你还可以在 Github 上看到。原本这个项目是伊利诺伊大学厄巴纳香槟分校的国家超级电脑应用中心(NCSA)开发,这个是美国的一个国家项目。所以着实有点讽刺。

NCSA Mosaic Github 地址:https://github.com/alandipert/ncsa-mosaic


大教堂与集市

埃里克雷蒙德 1957 年 12 月 4 日出生于美国马萨诸塞州的波士顿。

1976 年开始接触黑客文化。

他是 20 世纪 80 年代 GNU 最早的一批贡献者之一,还记得 GNU Emacs 吗?这个项目最初也是雷蒙德的建议斯托曼开发的。

1997 年以后,雷蒙被广泛公认为是开源运动的主要领导者之一。

他是开源运动的主要理论家。

他是开源软件思想的传教士。著有《大教堂与集市》一书。


这本书被认为是开源运动的独立宣言。

它清晰、透彻和准确的描述了开源运动的理论与实际应用,对开源软件运动的成功和 Linux 操作系统的广泛采用起到了至关重要的作用。

理查德斯托曼和林纳斯托瓦兹虽然都坚持源码开放,但是两者在软件开发模式上却大不相同。

斯托曼采用的是封闭开发,GNU Emacs 就是这样开发出来的。

在 Emacs 最终版发布之前,所有的代码仅有斯托曼和其开发团队能够看到。开发、测试、发布的过程均由专业团队操作。普通的开发者只能等待项目完成后的源代码。

GNU Emacs 的这种软件开发模式就是“大教堂”模式。

那时的人们认为,像操作系统这样的复杂的软件,都必须在一个小而紧凑的组织范围内,通过精心的协作才能够完成。这种模式现在仍然存在于大多数的商业软件的开发模式中。GNU 工程使用这种模式构建了宏伟的软件殿堂。

大教堂式的软件开发模式又拜 Unix 所赐,斯托曼那一代深受 Unix 的开发模式影响。

当时 Unix 推崇 “小工具”、“快速原型法”、“演化式编程”。

  • 小工具:程序应该只关注一个目标,并尽可能把它做好。做一件事,做好它。在 Unix 的世界里,echo 命令其实就是一个工具,有小工具就会有大工具,像 sort 和 diff 命令就是大工具。

  • 快速原型法:先做一个可以包含全部功能的最小可行版本,来验证功能是否符合预期。如果这个最下可行版本 OK,在考虑不断丰富和完善该程序,否则直接放弃。

  • 演化史编程:根据当前业务需要保留程序的功能,应用的过程中不断迭代,业务变化时扩展、重构、重写。

林纳斯就不一样了,在编写完 Linux 0.01 版本后,注意版本号 0.01。

当时的黑客在版本号方面有一些不成文的规定,如果觉得这些版本可以拿的出手,就将它的版本号定为 1.0,如果觉得程序还“欠火候”,那么就将它设定为 0.01 。

虽然 0.01 版本还是一个“欠火候”的版本,但是还是林纳斯跑到了 Minix 的新闻组上发了一封邮件,原文如下:


“使用 Minix 系统的朋友们,大家好,我正在编写一个(免费的)能用在 386(486)AT 机上的操作系统(纯粹个人爱好,不像是 GNU 那种大型的专业系统)。打从四月份起,我就开始酝酿这个系统了,现在他它应该快到火候了。因为我的操作系统和 Minix 系统有点雷同(特别是文件系统的物理排列方式,主要是因为它实用),所以我希望能够得到一些你们的反馈意见。在使用 Minix 的过程中,你们有什么满意或者不满意的地方,都欢迎来信提出。”

“我已经移植了 BASH 程序(1.08 版)和 GCC 编译器(1.40 版),似乎一切正常。也就是说接下来的几个月我会做出一些实用的东西,所以我想知道,大多数人在系统特性方面有何需求。什么意见都行,不过我不可能保证每一项意见都能够实现:-)”

——林纳斯


后面的事情你也都知道了。由于“林纳斯比较懒散”而且“喜欢授权给别人”,Linux 的功能很多是未曾谋面的开发者贡献出来的。

“多发布”和“早发布”成为了林纳斯发布 Linux 的策略,让大家都可以尽快的体验到系统的新特性。然后在接下来的几天内从数以百计的使用者那里获得反馈。然后在开发过程中引入使用者的反馈的特性。

MIUI 觉得很赞。

林纳斯开发 Linux 的这种软件开发模式就是集市模式。

《大教堂与集市》对集市模式的哲学思想做了详细的描述,相信下面的摘抄的一部分话会触动到你:

  1. 好的软件作品,往往源自开发者的个人需要。需求是发明之友。

  2. 优秀的程序员知道写什么,卓越的程序员知道改写(重写)什么。

  3. 当你对一个程序不再感兴趣的时候,你最后的责任就是把它交给一个可以胜任的接棒者。

  4. 如果想让代码质量快速提升并且有效排错,那就把你的用户当成开发者对待。

  5. 早发布、常发布。

  6. 只要眼睛多,bug 容易捉。

  7. ……

但是全书中完全看不到“开源”这个词,因为该书出版的时候,“开源”这个词还没有被创造出来。

上面说了, 1998 年 2 月 3 日才开源这个词儿。

在埃里克雷蒙德的个人博客上有该书的最新版本,关注开源公众号并回复“大教堂与集市”即可获得网页链接。

理查德斯托曼:我们和搞开源的不是一回事儿

开源软件运动脱胎于自由软件运动,作为自由软件之父,理查德斯托曼并不是支持开源运动,并且和开源运动划清界限。

根据埃里克雷蒙德的描述,当斯托曼听到要使用“开源”这个词的时候,他认为这群人在冒险,因为“开源”这个词儿不纯粹。

理查德认为:“自由软件”和“开源”基本上指的是同一范围的程序。然而,出于不同的价值观,他们对这些程序的看法大相径庭。自由软件运动为用户的计算自由而战斗;这是一个为自由和公正而战的运动。相反,开源理念重视的是实用优势而不是原则利害。我们因此不赞同开源运动,也不使用开源这个词。”

你给解释解释这两者有什么不同。

从斯托曼的话中可以看出,两者在哲学层面的是不同的。

什么是自由软件?自由是人本来应该拥有的一种权利。自由使用软件是人的一种政治权利,这些自由的权利和言论自由一样,必须拥有,不可缺少。

自由软件一定是开源软件。

什么是开源软件?主张实用主义,什么叫做实用主义?能够受到商业认可、获得商业成功就是实用主义。构建性能可靠、强大的软件,满足企业需求就是实用主义。软件就是用来解决企业问题的。用户可以看源码吗?当然可以,但是一些商业机密的代码也可以是不开源的。

举几个部分开源的例子。

远一点的例子,例如上面提到的 Mozilla 项目。

近一点的例子,例如 Kubernetes Borg 引擎,在开源之初就被谷歌当作商业秘密隐藏起来。当推特的工程师推出精心打造出属于自己的 Borg 引擎,命名为 Mesos 。谷歌也是审时度势推出了一款功能类似 Borg 引擎而已。

开源软件不一定是自由软件。

从自由软件和开源软件的差异,我们可以发现:

理查德斯托曼是一个理想主义者。

“我一想觉得理想主义者很有意思,但就是有点沉闷,有时候还挺骇人的”林纳斯托瓦兹说。

来看一下我们现在的这个世界吧,开源软件正在吞噬世界,自由软件运动还在进行中。

或许理查德斯托曼和埃里克雷蒙德还会持续争论下去。

但是作为开源软件和自由软件的受益者,我们应该铭记这段历史。

我们有自由仰望星空的权利,也有脚踏实地建设这个美丽新世界的义务。

从这个角度出发,一个软件是自由的、还是开源的,或许并不是那么重要。

站在巨人的肩膀上

  • https://zh.wikipedia.org/wiki/埃里克·雷蒙

  • https://zh.wikipedia.org/wiki/網景通訊家

  • Goodbye, "free software"; hello, "open source" http://www.catb.org/~esr/open-source.html

  • OSI 的历史| 开源计划 https://opensource.org/history

  • 写在开源运动 20 周年 - 知乎 https://zhuanlan.zhihu.com/p/88726195

  • 为什么开源错失了自由软件的重点 - GNU 工程 - 自由软件基金会(FSF) https://www.gnu.org/philosophy/open-source-misses-the-point.zh-cn.html

  • How I coined the term 'open source' | Opensource.com https://opensource.com/article/18/2/coining-term-open-source-software

  • https://zh.wikipedia.org/wiki/开放源代码促进会

  • https://www.redhat.com/zh/topics/open-source/what-is-open-source

  • https://zh.wikipedia.org/wiki/Unix 哲学

发布于: 2021 年 04 月 05 日阅读数: 112
用户头像

开源青年

关注

还未添加个人签名 2021.02.07 加入

没有什么比「关注」一下更能鼓励我了。转载事宜联系 VX:SoftCorePro

评论

发布
暂无评论
开源软件运动|网景公司|大教堂与集市