现在,世界上的每一家公司都在使用开放源代码软件。微软——一度是开放源代码最大的敌人——现在也成了开源的热心支持者。即使是Windows现在也使用了开放源代码技术来构建。如果你曾经用过谷歌(Google)进行过搜索,从亚马逊(Amazon)上买过一本书,在网飞(Netflix)上看过一部电影,或者是在脸书(Facebook)上看过你的朋友的假期照片,你就是一名开放源代码用户了。对于一种技术来说,在2月3日迎来自己的20岁生日很不错。
从第一台电脑出现开始,免费软件就已经出现了,但是自由软件和开放源代码的理念则要新得多。在上个世纪七十和八十年代,很多公司通过制造专有软件获得的利润而崛起。在新生的个人电脑世界里,甚至没有人知道免费软件。但是,在Unix和ITS系统主导的互联网上,情况可就完全不一样了。
在七十年代后期,理查德.斯托曼(Richard M. Stallman)——他也被称为RMS,是麻省理工学院(MIT)的一名程序员,他根据一台打印机的源代码创建了一个免费的打印机实用程序。但随后一台新的激光打印机进了校园,他发现他不能再获得源代码了,所以他不能重新创建这个实用程序。愤怒的理查德.斯托曼(RMS)创造了“自由软件(Free Software)”的概念。 理查德.斯托曼(RMS)的目标是创建一个自由的操作系统——Hurd。在1983年9月,为了做到这一点,他宣布创建GNU项目(GNU代表GNU的非Unix——一个递归的缩写)。到1984年1月,他正在全职投入到这个项目之中。为了帮助建立它,他创建了所有自由软件/开放源代码编译器系统的鼻祖GCC和其他一些操作系统实用程序。在1985年年初,他发表了“GNU宣言”,这是自由软件运动的创始章程,并推出了自由软件基金会(Free Software Foundation ,FSF)。
在好几年里,一切进行得都非常顺利,但理查德.斯托曼(RMS)不可避免地会与专有软件公司有磕磕碰碰。Unipress公司把代码的一个变体拿到了他的EMACS编程编辑器中,并把它变成了一个专有程序。理查德.斯托曼(RMS)一直不希望这种情况再次出现,所以他在1989年创建了GNU通用公共许可证(GPL)。这是首个版权许可证。它让用户有权使用、复制、分发和修改程序的源代码。但是,如果你更改了源代码并将其分发给其他人,你就必须共享修改后的代码。虽然有一些免费许可证出现得更早——例如上个世纪九十年代的四分之一BSD许可证——但是GPL却引发了自由软件、开放源代码的革命。 1997年,埃里克.雷蒙德(Eric S. Raymond)发表了他的重要文章《大教堂和集市(The Cathedral and the Bazaar)》。在这篇文章中,他展示了使用GCC——Linux内核的自由软件开发方式的好处,并以他自己的Fetchmail项目的经验作为例子。这篇文章不仅仅是展示了自由软件的好处。他描述的编程原则为敏捷开发和DevOps带来了方向。二十一世纪的编程很大程度上要归功于雷蒙德(Raymond)。
像所有的革命一样,自由软件的支持者们迅速分裂了成了不同阵营。一方面,正如Glyptodon的开放源代码专家和战略顾问约翰.马克.沃尔克(John Mark Walker)最近所写道的:“自由软件是一种社会运动,不含有一丝一毫的商业利益 ——它存在于宗教和哲学领域。自由软件是一种秉持着非常高的道德准则的生活方式。”
另一方面,有很多人想把“自由软件”带到商业上来。他们后来成了“开放源代码”的创始人。他们的口号是,“自由即为自由”和“言论自由,而啤酒并不免费”,这些说法让大多数人对这些事情对软件的真正意义感到困惑。
Netscape网络浏览器源代码的发布引发了自由软件领导者和专家于1998年2月3日在加利福尼亚州帕洛阿尔托举行的战略会议。在那里,埃里克.雷蒙德(Eric S. Raymond)、迈克尔. 蒂曼(Michael Tiemann)、托德.安德森(Todd Anderson)、乔恩“疯狗”霍尔(Jon“maddog”Hall)、拉里.奥古斯丁(Larry Augustin)、萨姆.奥克曼(Sam Ockman)和克里斯汀.彼得森(Christine Peterson)迈出了开放源代码的第一步。
彼得森(Peterson)创建了“开放源代码这个术语”。她记得:
- “开放源代码软件”这个术语的引入是为了使这个领域的尝试对于新手和企业变得更容易理解做出的慎重决定,这被认为是扩展到更广泛的用户群所必需的。早期的主打品牌“自由软件”的问题不在于它的政治内涵,而在于对于新手来说——它似乎把注意力放在价格上,这让人分心。需要一个专注于源代码关键问题的术语,并且要确保它不会让刚接触这个概念的人感到困惑。在合适的时间出现并满足所有这些要求的第一个术语被迅速采用:开放源代码。
为了帮助澄清什么是开放源代码,雷蒙德(Raymond)和布鲁斯.佩伦斯(Bruce Perens)创建了开放源代码促进会(Open Source Initiative ,OSI)。其目的曾经是,而且现在也仍然是定义什么是真正的开放源代码软件许可证,而什么不是。
斯托曼(Stallman)被开放源代码激怒了。他写道:
这两个术语描述的软件方法/类别几乎是完全一样的,但是它们背后的观点所代表的价值观示截然不同的。开放源代码是一种开发方法,而自由软件是一种社会运动。对于自由软件运动,自由软件是一个道德上的必要条件,从根本上尊重了用户的自由。相比之下,开放源代码的哲学只考虑如何使软件“更好”——只是从注重实际意义上的“更好”。它表示,非自由软件是解决手头实际问题的比较差的解决方案。大多数关于“开放源代码”的讨论都不关注正确与错误,只关注流行与成功。
他认为开放源代码是对商业的卑躬屈膝,并且将关注的焦点从个人自由转移到能够自由访问代码上。二十年过去了,他仍然对此很生气。斯托曼(Stallman)在最近给我的电子邮件中表示,“将我或者我的工作或者自由软件和‘开放源代码’这个术语联系在一起是一种常见的错误。那是拒绝自由软件运动哲学的人在1998年使用的口号。”
将哲学上的冲突放在一边,开放源代码确实已经成了实用软件开发的典范。开放源代码客户关系管理(CRM)软件即服务(SaaS)供应商SugarCRM的首席执行官拉里.奥古斯丁(Larry Augustin)是首批在商业软件业务中使用开放源代码的探路者之一。奥古斯丁(Augustin)展示了成功的企业可以建立在开放源代码软件的基础上。
其他公司很快接受了这种模式。除了Canonical、Red Hat和SUSE之类的Linux公司之外,IBM和Oracle等技术公司也接纳了它。这反过来又造成了开放源代码在商业上的成功。最近,一些你永远也想不到会是开放源代码公司的企业也加入进来,例如沃尔玛(Wal-Mart)和威瑞森(Verizon)这样的公司,现在也依靠开放源代码程序,并拥有自己的开放源代码项目。 正如Linux基金会(The Linux Foundation)的理事吉姆.策姆林(Jim Zemlin)在2014年所观察到的:
一种新的商业模式已经出现,在这种商业模式中,各大公司正在跨行业联手共享开发资源,并建立共同的开放源代码代码库,以便他们能够在其基础上让他们自己的产品和服务实现差异化。
今天,霍尔(Hall)回首往事,表示:“我认为‘闭源’是昙花一现”。雷蒙德(Raymond)对开放源代码的成功并不感到惊讶。雷蒙德(Raymond)在接受电子邮件采访时表示:“哦,是啊,已经有20年了——这不是什么大不了的事情,因为很久以前,我们赢了我们需要赢的大部分战斗,就像在1998年以后的第一个十年里那样。”
“从那以后,”他继续说,“我们一直主要处理成功的问题,而不是失败的问题。以及一些全新类别的问题,例如没有升级路径的物联网设备——如果你不能为软件打补丁,那么打开它也没多少帮助。”
换句话说,他总结说:“对胜利的奖赏往往是另外一系列的战斗。”
这些是开放源代码即将取胜的战役。红帽(Red Hat)的首席执行官兼总裁吉姆.惠特赫斯特(Jim Whitehurst)告诉我:
开放源代码的未来是光明的。我们正处于新一轮创新浪潮的风口浪尖,因为物联网将信息与实物分离开来。在未来十年里,我们将看到整个行业都将基于开放源代码的理念,如信息共享和联合创新成为主流。我们将看到每个部门都会受到这样的影响,从医疗、教育和政府等非营利组织到意识到共享信息将带来更好结果的全球公司。开放和参与式创新将成为世界各地生产力提高的关键因素。
其他人则认为开放源代码已经不仅仅是一种软件开发方法了。红帽(Red Hat)的新兴技术实践高级总监尼克.霍普曼(Nick Hopman)表示:
开放源代码不仅仅是开发和曝光技术的过程。开放源代码是推动社会各个方面变化的催化剂——政府、政策、医疗诊断、流程再造,你还可以继续列举下去——并且可以利用通过开放源代码软件开发经验完善的开放原则发展推动变革和创新的社区。展望未来,开放源代码将继续推动技术创新,但我更兴奋地是看到它如何以我们尚未考虑到的方式改变世界。
确实。开放源代码已经迎来了自己的二十岁生日,但是它的影响力——不仅仅是在软件和业务方面——还会持续好几十年。