5W1H聊開源之Who——誰“發明”了開源?
本篇目錄
本系列文章就以5W1H體系來講一講開源的那些事。這一次,講講開源的Who——誰“發明”了開源以及開源的起源。
微軟的一封信
自上世紀第一台計算機問世以來,計算機産業是以硬件爲主的商業模式,即硬件銷售爲主要收入來源,附帶的軟件並不收費且附有源代碼,便于專業人員調試和修改。雖然現在都將軟件著作權視爲司空見慣,但當時的法律並不能給予這一新生事物充足的保護。後來,隨著個人電腦的普及,人們對軟件的需求擴大,出現了一批專門開發通用軟件的公司,這樣的軟件公司需要對軟件收費來獲取利潤。但軟件收費與提供源代碼顯然是矛盾的,因爲只要仍然提供源代碼,就無法阻止用戶或者競爭對手複制或改寫軟件代碼。
1976年2月3日, Bill Gates发表了著名的《Open Letter to Hobbyists》(致电脑业余爱好者的一封公开信),在这封公开信中,Bill Gates明确提出软件应该具有“CopyRight”(版权)。这封公开信奠定了软件産品“CopyRight”的理论基础,也促使私有软件成为软件产业发展的主流。“Copy Right”理念的提出,必然导致源代码被彻底被封闭起来。
客观地讲,Bill Gates的“Copy Right”理念以及私有软件的兴起,对于推动软件产业的兴旺功不可没。但是,Microsoft等私有软件厂商对于软件市场的垄断,引发了用户和广大软件开发者的强烈不满,兴起了反对私有软件理念的运动,開源軟件就是这种运动的重要组成部分。首先兴起的私有软件运动,是自由軟件運動(Free Software Movement),它是開源軟件运动的先河。
自由軟件運動
一些人对于软件从免费转向收费并且不再提供源代码这一现象感到不适应或不满,其中最著名的就是发起了自由軟件運動的Richard Stallman。70年代的Richard在MIT的AI(人工智能)实验室做程序员。施乐的打印机不再提供源代码,Richard无法像以前通过修改代码来解决打印机故障;Richard向商业公司提供了LISP编译器的公共代码,但该公司拒绝分享扩充和改进后的代码。这两件事促使Richard辞职,投入到自由軟件運動中。1983年,Richard 开始倡导自由軟件運動。1985年,Stallman等人创建了自由软件基金会(Free Software Foundation,简称FSF)。Stallman提出了与“Copy Right”理念针锋相对的“Copy Left”(许可复制权)理念,其表现形式是GPL,即公共许可证(General Pubic License)。自由软件应该是具有如下4大自由的软件:
- 出于任何目的運行該軟件的自由;
- 有研究該軟件如何運行並加以改進使之更符合自己需要的自由;
- 有重新發布以幫助鄰裏的自由;
- 有改善程序,公布改進方案(以及通常的修訂版)以推動整個社區利益的自由。
时间来到1991年,自由软件基金会已经开发了GNU操作系统的大部分组件(例如编译器、编辑器、用户界面等),但是仍然未完成作为操作系统核心的内核,即GNU Hurd。
完成操作系统内核的任务是在一个21岁的芬兰大学生Linus Torvalds的带领下完成的。出于个人兴趣和测试目的,Linus于1991年9月编写了0.01版的Linux内核,而该版内核甚至还无法运行。不过1个月后他就写出了0.02版,该版本已可以运行各种GNU组件了(所以Linux也常被称为GNU Linux)。在0.02版后,来自世界各地的程序员们加入到了Linux内核的开发中,使其迅速完善。在1992年2月释放0.12版时,Linus将Linux内核的许可证改为GPL许可证第二版,并一直保持至今。1994年3月,1.00版Linux内核开发完成。
正是 Linux 的出现,使得自由軟件運動有了自己可以与 Microsoft 的 Windows 相抗衡的操作系统。自由軟件運動初战告捷。但是,自由軟件運動关于自由的追求,毕竟和现实的商业氛围格格不入,带有着过于理想化的色彩。这种反商业的信条,让一些本来也反对私有软件的人士对自由软件敬而远之。正是在这种背景下,一部分原有自由軟件運動人士,开始尝试将理想的自由软件与现实的商业氛围进行某种衔接。
開源軟件
1998 年2月,Richard Stallman、Eric Raymond等人在美国加州成立了一个名为开源促进会(Open Source Initiative,简称 OSI)的组织,旨在推广開源軟件。为了减少意识形态上的沟壑,以及「自由(Free)」一词造成免费软件的误解。OSI 组织决定从「自由软件」中去掉了「自由」一词,使用「開源軟件」(Open Source Software)作为共通名称,并创建了自己的开放源码的定义,以及自己的一套许可证。根据开源促进会的标准,開源軟件可以使用非著佐权(copyleft)性质的宽松(permissive)许可证,允许该许可证下的代码的衍生代码闭源。用一句话概括,開源軟件就是源代码开放且可以自由复制的软件。開源軟件运动的理念更倾向于解决实际问题,既抓住了私有软件的痛点,又实现了与商业的融合。

