云网牛站
所在位置:首页 > Linux新闻 > 开源软件简史

开源软件简史

2018-06-06 20:35:58作者:柴米油盐计划稿源:Linuxstory

本文为你整理开源软件简史,供你参考。

 

Unix 的诞生

实际上,在计算机出现的最初年代,由于能够使用计算机的都是软件开发者或研究人员,软件提供它们的源代码是天经地义的事。将软件以源代码形式提供给用户,软件问题可以由用户们(同时也是软件开发者、计算机科研人员)自己修改解决,这样不仅能缓解计算机企业的售后服务压力,特定硬件平台上的用户们还可以对自己的软件进行修改来满足一些特定的需求。使用相同硬件的计算机科研人员或爱好者会组成特定的小团体,共享技术心得和自己编写、修改的程序。

1969年11月,美国国防部高级研究计划管理局( Advanced Research Projects Agency )开始建立一个命名为 ARPAnet 的网络,通过专门的接口信号处理机( IMP )和专门的通信线路,把美国的几个军事及研究用电脑主机联接起来,其4个结点分布在洛杉矶的加利福尼亚州大学洛杉矶分校、加州大学圣巴巴拉分校、斯坦福大学、犹他州大学四所大学的4台大型计算机。起初是为了便于这些学校之间互相共享资源而开发的。作为 Internet 的鼻祖,虽然 ARPAnet 的设计目的是使研究人员在合作一个项目时可以共享代码和信息,但是它也成为了对开放源代码可行性的一个展示。

1965年时,美国电话电报公司( AT&T )下属的贝尔实验室加入一项由通用电气和麻省理工学院合作的计划,这项野心勃勃的计划旨在建立一套多使用者、多任务、多层次的 MULTICS 操作系统,用于取代当时通用的只支持30台终端访问主机的分时操作系统( Compatible Time-Sharing System )。但到了1969年,由于 MULTICS 计划制定的目标太多太大,项目距离完成遥遥无期,实际拿出的产品也不能叫人满意,该项目最终被喊停。

1969年的夏天,贝尔实验室的研究员 Ken Thompson 和 Dennis Ritchie 吸取了之前的教训,采取了“保持简单”的策略,一起用汇编语言在 DEC PDP-7 机器上写出了一个新的多任务操作系统,这就是 Unix 。说起这个名称, MULTICS 其实是“ Multiplexed Information and Computing Service ”的缩写,原本计划能同时支持1000用户的系统,最后只能支持到2位用户,于是贝尔实验室的人们就开玩笑地称他们的系统其实是:“ UNiplexed Information and Computing Service “,缩写为” UNICS “,后来,大家取其谐音,就称其为” UNIX “了。

Unix 的第一版是完全用汇编语言编写的,虽然运行起来效率非常高,但这也意味着它无法直接在非 PDP-7 的机器上运行,以至于次年 Ken 所在的研究小组申请到了一台性能更加强大的 PDP-11/20 时,他们不得不把整个操作系统重写一遍以完成移植。

Unix 最初只在贝尔实验室内部流转,因为大家并不喜欢 DEC 机器自带的操作系统,所以实验室内越来越多的人换上了 Unix 。渐渐的, Ken 还收到了外部的人索要Unix的磁盘拷贝寄来的邮件,由于数量不多, Ken 也一并寄给了他们。不过,随着越来越多的人想要在不同的机器上使用这套系统,他们意识到有必要用高级语言来重写这套系统。最初,他们在 Unix 第二版中使用的是 B 语言,这是 Ken 以剑桥大学的 BCPL 语言为基础设计的一种简便易用的语言。但由于其在进行系统编程时依旧不够强大,所以 Dennis 对其进行改造形成了一种新的语言,他取了 BCPL 的第二个字母作为这种语言的名字,这就是今日影响力巨大的 C 语言。随着1973年 C 语言的完成,两人迫不及待地投入到用 C 语言重写 Unix 的工作中,不久第三版的 Unix 便诞生了。用 C 语言编写的 Unix 代码简洁紧凑、易读、易修改、可移植,从此 Unix 操作系统的修改、移植变得相当便利,为 Unix 日后的普及打下了坚实的基础。而在当时那个为了实现最高运算效率而完全用汇编语言编写操作系统的时代, Ken 和 Dennis 此举是极具创新和革命意义的,他们清楚地意识到需要在效率和效用之间取得平衡。用汇编写的 Unix 会更快和更小,但用 C 语言写的系统变得如此的易于修改、理解和移植,所以他们认为牺牲速度和内存是值得的。

1974年, Ken 和 Dennis 在7月的《 The Communications of the ACM 》上发表了一篇“T he UNIX Time Sharing System ”的文章向外界介绍 Unix ,引起了学术界的广泛关注,向其索取源码的请求更是源源不断。于是乎,Unix 第五版就以“仅用于教育目的”的协议提供给各大学作为教学之用,费用也只是象征性地收取了制作磁盘和手册的成本。由于其近乎免费和可获得的源码, Unix 很快成为当时操作系统课程中的范例,各大学和公司也开始对 Unix 进行了各种各样的改进和扩展, Unix 逐渐风行大街小巷。

 

致电脑爱好者的公开信

Ken 和 Dennis 的研究小组仍在积极地投入 Unix 的开发当中,他们的小组被称为“ Research ”(内部称为“1127”),与此同时,他们避免对外作出提供支持的承诺。这是因为 AT&T 受制于《反托拉斯法》的规定,无法进入电话、电报以外的行业,这也是它允许人们免费获得 Unix 源代码的重要原因。相应的,它不向用户提供软件技术支持和售后服务。于是人们便有了相互支持和共享错误信息的动机。但当时并没有互联网,这种共享往往通过学者间的游学和研究人员的交流会的形式完成,人们通过磁盘/软盘等形式分享改进过的源代码,这便是早期以物理形式存在的社区。

70年代,随着软件规模与复杂程度的提高,以及“福特主义”的兴起,商业软件开始了分工化的进程,软件工程内部分成了负责设计软件的功能与结构的设计员以及负责具体实现软件功能的编码员。这种由一个人或少数人负责总体设计和监督完成项目的模式由于和中世纪的大教堂建造非常相似,因而被称为大教堂模式。与此同时,计算机用户的平民化,和出于保护自家技术、确保公司盈利能力的目的,软件产品开始走向闭源,即只提供可运行的软件程序而不包括其源代码。对于两者的理解, Eric Raymond 用了一个有趣的比喻:“源代码就像菜谱,而可运行软件则是依照菜谱烹调出来的菜品,拥有菜谱的人可以轻易地烹调出同样的美味,而吃过菜品的人却不能够反推出其菜谱。”也就是说,闭源将使得用户无法知道软件实现的原理,通过修改代码以满足自己特别需求的愿望也无法实现。在这方面,微软称得上是一个先锋。

1975年,微软公司成立,他们推出的第一个产品 Basic 编程软件深受人们的喜爱,几乎成为每台电脑上必备的软件。由一群计算机爱好者和发烧友组成的“家用计算机俱乐部”是当时最著名的社区之一,俱乐部有一个不成文的规定,会员可以从俱乐部带走软件的磁盘,只要下次会议时带回两份拷贝给其他会员就行了。这是当时人们习以为常的软件传播方式,微软的 Basic 程序就这样被安装在了许多俱乐部成员的电脑上,而实际上只有原始的拷贝是从微软那里付了钱买来的。不久,盖茨便写了一封“致电脑爱好者的公开信”,其措辞简单明了,直接指责这种行为称“你们大多数人都是在剽窃软件”,接着他从触犯知识产权和抑制创新的角度阐述“谁能够承担得起没有收入的工作?什么样的爱好者可以让3个人长年累月无偿地投入编程工作中,找出所有的错误,编制产品手册并进行发布呢?” 私有软件和开源软件从此成了势不两立的仇家。

 

BSD ( Berkeley Software Distribution )

同年, Ken Thompson 获得了带薪休假一年的机会,他选择到加州大学伯克利分校访学,与他一起的,是他随身携带的最新的 Unix 第六版的源码磁盘。伯克利的 Computer & Science Research Group ( CSRG,就是在大学里对计算机有兴趣的同学、教授,一起捣鼓计算机的一群人)成员对于 Ken 的到来欢欣鼓舞,早在 Unix 发布之时 Bob Fabry 教授便为伯克利争取到了一份拷贝并在校园内招募到了一批有兴趣研究和改进这一系统的人,其中一名学生 Bill Joy 的表现尤为突出,他可以算是小组的领导人之一。 Ken 到了伯克利之后也没有闲着,他当时在开发一个可以工作在 Unix 上的 Pascal 解释器, CSRG 的人们加入其中,他们共同改进 Unix 的代码,添加新的功能。

1977年,其他大学的人们也开始对伯克利的软件感兴趣, Bill Joy 便开始着手编译他们自己的操作系统,正如早期的 Unix 一样,期间他们陆续有收到一些外界的代码改进和反馈,这些也一并被包含其中,待到下一个版本中一起发布。到了1978年3月完工时他们将捆绑了自家软件的改进过的第六版 Unix 以 1BSD ( 1st Berkeley Software Distribution )的名称对外发布。 1BSD 中包含了他们改进过的 Pascal 解释器,还包括了一些新的设备驱动程序,对核心的修改,ex 文字编辑器,和一个比 V6 的 Shell 更好用的 Pascal Shell ,适配的平台为 PDP-11。1BSD 一共分发出了30份左右的拷贝。

2BSD 于1979年5月时发布,适配平台依然是 PDP-11 ,这个版本除了一些软件的更新之外,最大的变化应该是 vi 编辑器的加入,这一编辑器是今日依旧非常流行的 vim 编辑器的前身。同年,伯克利购置了一台 DEC 最新款 VAX 机器,为了充分发挥这台机器的性能,小组成员们继续埋头工作,于年底前发布了 3BSD ,这一版本提供了 VAX 机器的接口以及虚拟内存的功能,从这一版本开始 BSD 一直使用 VAX 接口。 4BSD 于1980年底发布,添加了 Job-Control 功能,允许用户挂起进程。次年发布了 4.1BSD ,这一版本原本应该是称为 5BSD 的,但 AT&T 担心会与自家的 Unix System V 产生混淆,所以改称。 4.1BSD 没有大的软件升级,不过其面对的是 VAX 机器自带的系统 VMS 在性能上表现出的优势,于是这一版本可以说花费了很大的力气进行系统层面的性能校正。 4.2BSD 带来了较大的功能更新,这也使这一版本的开发周期延长到了2年,到1983年8月才正式发布。新版本添加了完全由伯克利开发的 TCP/IP 协议栈,快速文件系统(将磁盘的扇区由 512B 增加到 4KB ),以及对 NFS 文件系统的支持。BSD最大的贡献大概要数 TCP/IP 了,在 Windows NT 中也依靠 BSD 的代码来实现。

1982年 CSRG 小组迎来变故,小组的核心成员 Bill Joy 选择离开伯克利并创立了 Sun 微系统公司,他将之前自己领导开发的 BSD 继续发展成为 SunOS 操作系统(后来的 Solaris ),与德州仪器合作设计了 Sparc 微处理器,在90年代依靠出售其高性能、平价的 Sparc 系列工作站狠狠赚了一笔, Sun 的股价也一度超过 IBM 。

1984年美国司法部依据《反托拉斯法》起诉美国电话电报公司构成垄断,联邦法院判决将其分拆成一个专营长途电话业务的新 AT&T 公司和7个本地电话公司,之前对其进入计算机行业的限制也因此同时被取消。正如大家所预见到的, AT&T 没有放过 Unix 这块大肥肉的商业价值,不久之后 Unix 便不再提供源代码,转而收取高达2~20万美元的授权费。

再说说这几年间 Unix 的发展。1979年的 Unix 7 是最后一个广泛发布的研究型 Unix 版本,之后 Unix 的许可证开始禁止大学使用 Unix 的源码,包括在授课中学习,80年代相继发布的 8、9、10 版本只授权给了很少的几家大学。1981年, AT&T 基于版本7开发了 Unix System Ⅲ 的第一个版本,这是一个仅供出售的商业版本,不过其依然提供源代码。同时,为了解决市场上混乱的 Unix 版本情况, AT&T 综合其他大学和公司的各种 Unix 和软件,开发了商业版 Unix System V Release 1 并于1983年发布,这一版本开始不再提供源代码。以 System V 命名的 Unix 在80年代陆续又发布了几个版本的更新,在当时具有强大的影响力, IBM 的 AIX 和 HP 的 HP-UX 等 Unix 变种皆是基于 System V 开发。

回到伯克利, 4.3BSD 于1986年6月发布,常规更新。由于此时各个版本的 BSD 都含有 Unix 代码,虽然 BSD 可以免费获取到,但作为衍生的产品,要使用 BSD 却不得不向 AT&T 支付高昂的授权费。于是一个分支项目便应运而生,项目利用 BSD 自行开发、公布在网络上的那部分代码开发了一个新的版本,于1989年6月公布,取名 Networking Release 1 ( Net/1 )。由于 Net/1 去掉了私有部分的 Unix 代码,它并不是一个完整的操作系统而更像是一个软件包。当然,人们并不会轻易放弃, Net/2 的计划很快被提上日程,这次的目标是把所有私有 Unix 代码重写以形成一个完整的操作系统。时间一晃就是两年,1991年6月 Net/2 发布,尽管完全重写的目标是基本上实现了,不过这次依然不完整,由于 Unix 内核部分的6个文件编写难度太大,小组的成员最后决定将缺少这6个文件的版本公布,希望外界能有大神级的开发者帮助他们补齐为一个完整的系统。

过了半年多时间, Bill Jolitz 夫妇合作完成了缺失的6个文件,并将其源码公布于网上给人下载,取名为 386BSD 。 Jolitz 曾参与过 BSD 早期版本的开发,而他们的代码也正如其名字一样,是为兼容当时流行的 Intel 80386 机器开发的。后来 Jolitz 作为联合创始人加入了 BSDi ( Berkeley Software Design Inc ),继续改进这部分的代码, BSDi 是由原 CSRG 的几名成员成立的一家公司,他们把补齐文件之后以 BSD/386 (后改称 BSD/OS )命名的系统以市场可以接受的价格( $995 )出售,取得了不错的销售成绩。

BSDi 以大幅低于 System V 的价格销售,甚至在广告中使用了“ 1-800-ITS-Unix ”这样带挑衅意味的客服电话,这对 Unix 的销量来说是一个很大的威胁,看不过眼的 AT&T 不久便将对方告上了法庭,时间是1992年,理由是其销售的系统中含有私有的 Unix 代码,随后伯克利的师生也被卷入这场诉讼当中。依据原告的申请,法院签署了禁止令, Net/2 及其派生的版本都被禁止在市面上传播,期间由于法院的调查, BSD 的大部分开发工作也被搁置。这场官司旷日持久,闹得人心惶惶,学生和教师以及校委员会被要求出庭作证, Net/2 的全部代码作为证据必须接受原告和法庭的仔细审核以确保其中如伯克利所说的已不包含有 Unix 的私有代码。期间, AT&T 将 Unix 版权出售给了 Novell ,接手的 Novell 不打算继续扯皮,遂与伯克利达成了和解。这桩官司最终在1994年1月结案,根据调解协议, Net/2 的18000个文件中有3个文件需要删除,另有68个文件需要添加 Unix 的版权声明,协议中还要求,原告不得针对使用或开发 4.4BSD 的任何人及组织提起进一步的诉讼。

既然官司打完了,大家又可以回去各干各的活儿了。6月份, 4.4BSD 发布,这次分为完全包含伯克利代码并可自由分发使用的 4.4BSD-Lite (不完整),和包含 Unix 代码并需要取得授权才可使用的 4.4BSD-Encumbered 两个版本。1995年的 4.4BSD-Lite Release 2 是最后一个由伯克利开发的BSD版本,随着 CSRG 小组的解散, BSD 的开发也开始走出这座校园,到更广阔的天地里去。

在这之后,基于 386BSD 逐渐形成了三个“主流”的 BSD 分支: FreeBSD 是最受欢迎的 BSD ,针对高性能和易用性,它为 x86和 x64 架构的处理器提供了最好的支持。 NetBSD 被设计成可以运行在几乎任何计算架构上,具备高度的可移植性。 OpenBSD 则是为最大化安全性设计的,这不仅仅体现在它宣称的功能,在实践中也确实如此,它是为银行、金融等重要机构的关键系统设计的。由于使用 4.4BSD-Lite 可以避免法律纠纷,这些分支版本后来也将他们的代码更新到了 4.4BSD-Lite。

至此, BSD 的故事暂告一段落。

 

Minix

因为 AT&T 的政策改变,在 Unix 7 推出之后,新的使用条款不再允许在大学中使用 Unix 源代码。阿姆斯特丹自由大学计算机科学系的 Andrew S. Tanenbaum 教授为了能在课堂上教授学生操作系统运作的实务细节,决定在不查看任何 AT&T 的源代码情况下,自行开发与 Unix 兼容的操作系统,他取 Mini-Unix 之意,将之命名为 Minix 。 Minix 1.0 的全部代码一共约12,000行,随他的《操作系统:设计与实现》一书一起发布于1987年,置于附录中作为范例,随后也发行了一些包含源码的磁盘。彼时的 Minix 凭借低廉的价格和简易的操作在大学中大行其道。

Minix 的系统要求在当时来说非常简单,只要三片磁盘就可以启动。系统在设计之初是为了在 IBM PC 和 IBM PC/AT 兼容电脑上执行的,1.5版也有移植到 Motorola 68000 系列 CPU 、 ARM 和 Sparc 机器上,2.0版则以 x86 架构为主。早期版本皆以教学为目的,需要收取很少的费用,2000年换用 BSD 授权后可以免费获取。

最新的版本为 Minix 3 ,发布于2005年的 ACM 操作系统大会上,依旧作为《操作系统:设计与实现》第三版的范例,只不过其设计目标发生了改变,摘自其官网:“ Minix 3 是一个免费、开源的,旨在实现高可靠性、灵活性及安全性的操作系统。” 但是由于其开放源代码的特性,它依然非常适合用于课堂教学中让学生们了解操作系统是如何运作的。

 

POSIX

POSIX 是 Richard Stallman 应 IEEE 的要求而提议的一个易于记忆的名称,全称是 Portable Operating System Interface (可移植操作系统接口),而 X 表明其是 Unix API 的传承。 POSIX 标准定义了操作系统应该为应用程序提供的接口标准,是 IEEE 为要在各种 Unix 操作系统上运行的软件而定义的一系列 API 标准的总称,其正式称呼为 IEEE 1003 ,而国际标准名称为 ISO/IEC 9945 。 POSIX 的标准化工作始于1985年左右。

POSIX 标准意在获得源代码级别的软件可移植性。换句话说,为一个 POSIX 兼容的操作系统编写的代码,应该可以在任何其它的 POSIX 兼容操作系统(即使是来自另一个厂商)上编译执行。 POSIX 并不局限于 Unix ,许多其它的操作系统也支持,例如 Linux 、 FreeBSD 、 DEC OpenVMS 等, Windows NT 不支持。

 

GNU/Linux

Richard Stallman 回忆起他80年代在麻省理工学院人工智能实验室工作时的日子,“那时我们实验室的一台施乐牌 Dover 打印机有卡纸的问题,我希望通过改进它的驱动程序来解决这个问题,但是施乐公司拒绝提供源代码。”这使他非常的火大,类似的事情多了以后,他对软件知识产权变得异常反感,他觉得是时候做出一些改变了。 Stallman 推崇自由的黑客文化,极度痛恨私有软件的封闭性,也因此在1983年,他辞去了自己的工作,以“重现软件界合作互助的团结精神”之名,在 net.unix-wizards 新闻组发表了著名的 GNU 宣言,轰轰烈烈的自由软件运动就此拉开了帷幕。

当然,像卡纸这种问题只是小事,开源运动真正的导火索依旧和 AT&T 与 Unix 的商业化脱不了干系。自其收取高达上万美元的授权费以后,除非是大公司和企业,否则对于许多常年工作在 Unix 系统上的编程人员来说,这个价格根本无法承受。 AT&T 的这种商业态度,让当时许多的 Unix 的爱好者和软件开发者们感到相当的痛心疾首,他们认为商业化的种种限制并不利于创新的发展,相反还能导致产品出现诸多的问题。于是当 Stallman 发表了 GNU ( GNU is Not Unix )宣言,号召大家一起来创建自己的开源的 Unix 的替代系统和软件时,人们纷纷响应号召加入到他的工作中。

 

GNU 宣言

1985 年10月 Stallman 又创立了自由软件基金会( Free Software Foundation )来为 GNU 计划提供技术、法律以及资金支持。初期由于人手不足,FSF获得的捐款等主要被用来雇佣职业程序员帮助编写自由软件,目前由于基金会拥有大多数 GNU 项目的版权,其主要工作已经转移到处理自由软件的法律问题上。同时,考虑到放弃软件版权后一些商业公司和个人可能通过修改开源代码并将修改后的代码闭源进行营利而不给社区提供任何回馈的情况,他提出了“著佐权”( Copyleft )的概念,即利用现有的版权体系来维护开源软件的自由性。为此,他使用法律术语起草了一份通用公共许可证( General Public License ,GPL ),与强调个人所有、限制他人任意修改和传播的著作权( Copyright )不同,在 GPL 协议下虽然作者依然享有版权,但作者许可用户对代码进行复制、修改、传播和销售获利,前提是这样做的人必须保持原有的版权信息并公布修改后的全部源代码,以保证思想能够一直自由传递。也就是说,如果用户的软件使用了以 GPL 协议发布的软件的任何一部分,那么该软件就继承了 GPL 协议,必须随应用程序一起发布源代码以回馈社区,这一条款也因此被称为“病毒条款”。

1991年,经过了6年的努力, GNU 项目需要的许多工具软件( Gcc 、 Bash 、 Emacs )已经基本完成,其中不少软件已经具备了工业级的水准,这时人们开始考虑为这个项目画上点睛一笔:开发操作系统的内核 GNU Hurd 。但由其采用了先进的微内核设计,导致项目复杂性大大增加,消息传递机制也使得除错变得异常困难,因此内核项目 GNU Hurd 迟迟未能完工,可以说“万事具备,只欠内核”。

同样是在这一年,在跨越半个地球的芬兰首都赫尔辛基大学,一位大二的计算机学生 Linus Torvalds 满心欢喜地把自己新买的386计算机抱回了宿舍,386计算机自带的操作系统是 MS-DOS , Linus 并不喜欢,于是他安装了当时流行的 Minix 。虽然用上了他熟悉的 Unix 环境,但 Minix 作为一个教学用的系统设计还是有些保守,许多功能不能满足他的需求,而商业版的 Unix 则贵得离谱,考虑到自己以后要和计算机打一辈子的交道,最终他决定自己动手开发一个操作系统。说干就干,他在 Minix 用户组中发布消息,有人就给他寄来了厚厚几卷的 POSIX 标准手册,同时还从学校的网站上找到了 SunOS 服务器的用户手册,这个手册中有一个可以凑合着用的系统调用的基础版本,另外,运行在他机器上的 Minix 和 Tanenbaum 的著作《操作系统:设计与实现》也是他重要的参考资料和灵感来源。关于这本书, Linus 如视珍宝,在一次有机会去荷兰时他还专门跑到教授所在的阿姆斯特丹自由大学去找本人签名,只可惜偶像当时不在。项目开始于美好的暑假伊始的7月份,这期间他穿着破旧的睡袍没日没夜地奋战在电脑前,敲打着键盘编写一个又一个的程序模块,饿了就弄点咖啡和汉堡、披萨或者玉米煎饼,困了就往旁边的床上一躺休息,他哪儿也不去,几乎分不清白天和黑夜。终于在暑假完结时的9月17日,他拿出了一个基本可以工作的 0.01 版本,学校的一名助教在看到他项目的消息之后还主动为他提供了 FTP 服务器供他上传他的操作系统给别人下载。当然,最初版本非常粗糙,如其本人所说“一个学生的作品”,但通过这时已经开始普及的互联网,这一项目立即吸引来了许多程序员的关注。令 Linus 没想到的是,原本只是做着好玩、计划发布稳定版本后就撒手不管的作品,却收到来自世界各地的人们通过细细的网线向他本人反馈的各式各样的错误报告( Bug ),提出的修改意见,甚至有人将修复好漏洞或增加了新功能的代码直接发送给他。“这里没有建造大教堂的安静和虔诚, Linux 社区更像一个充满不同议程和方法的嘈杂的大集市, Linux 归档站点来者不拒,任何人的作品都接收。” Eric 生动地描述道。

后来,在一次失误的操作中,他将电脑中原本的 Minix 系统分区破坏掉了,他便干脆完全放弃 Minix ,将所有的日常工作都转移到 Linux上 ,这时他开始考虑把 Linux 项目继续发展下去了。于是在许多人的协同工作下,他又陆续发布了0.02和0.03版本,到 0.11 版本( 1991.12.8 )是基本可以正常运行的内核版本,到0.13 版本 Linus 直接改称 0.95 ( 1992.3.8 ),他的意思是这个系统已经完成了95%了,让大家不要觉得离1.0版还很遥远。随后系统陆续添加了 TCP/IP 网络支持和虚拟文件系统 VFS 等特性,功能越来越完善,一直到 0.99 ( 1992.12.13 )进入最终的攻坚调试期,版本也从 0.99 1a 一直滚动更新到 0.99 15z ,历经无数次调试修正,可见其精益求精的工匠精神。最后,1.0版本 ( 1994.3.14 )终于发布,此时的 Linux 已是羽翼渐丰,当人们将 GNU 项目的软件与 Linux 内核结合起来时,一个伟大的操作系统 GNU/Linux 诞生了。

Linus 回忆起当年这段经历时认为,当时如果有自由的基于386的 Unix-like 操作系统,或者能提早知道 BSD 没有法律纠纷,他可能就不会费那个心思创造 Linux 了。实际上,386BSD 0.0 版本在 Linus 开始他的项目前的几个月就发布了,然而他并不知道这个项目的存在,而其他主流版本如 4.3BSD 则不支持当时市场上最流行的386架构,同时 BSD 的最后判决悬而未决,这桩官司也大大拖慢了 BSD 的开发进程。另一方面, GNU 项目出品了不少精品软件,例如 Gcc、Emacs 等,而这些软件也需要不少开发人员进行维护工作,由此大大减少了留下来从事 Hurd 内核项目开发的核心人员,其自身的复杂性也是开发周期漫长的重要原因。正是当时的这些机缘巧合,使得没有法律风险、开发敏捷的 Linux 吸引到一大批用户的支持,最终后来居上。

“有些人生来就具有统率百万人的领袖风范;另一些人则是为写出颠覆世界的软件而生。唯一一个能同时做到这两者的人,就是 Torvalds 。”美国《时代》周刊对“ Linux 之父” Linus Torvalds 给出了极高的评价。甚至,在《时代》周刊根据读者投票评选出的二十世纪100位最重要人物中, Linus 居然排到了第15位,而从20世纪的最后几年就开始霸占全球首富称号的盖茨不过才是第17位。 — Linus 自传《乐者为王》 

《人月神话》一书曾提出著名的“ Brooks 定律”:给一个延期的项目增加程序员,完成的工作量会直线上升,出错率会呈几何级增长,导致项目进一步延期。出现这种现象的原因是,随着人数的增加,管理的成本也会增加,团队成员因为沟通不足导致项目出错的可能也会成倍增加。但这一定律在开源模式下并不适用。 Linux 作为开源社区工作模式最典型的代表,它的成功离不开互联网的应用,互联网的快速与便捷使得沟通成本大幅降低,通过互联网的公共邮件列表和新闻组,所有的问题和意见都得到公开的讨论和表达,每个人都可以自由地表达自己的想法,因此而不存在沟通不足的情况。与此同时,“ Linus 法则”(眼球足够多的话,所有 Bug 将无处可藏)及数目众多的志愿者们则有效地减少了重大错误产生的可能。当 Linux 拥有成千上万不计报酬地开发团队时,其效率必定远远高于一些公司的开发小组或者大学的研究团队,这样的行动所产生的力量是个人和公司无法匹敌的。可以说,如果没有廉价的互联网,社区模式将无法实现。

任何人都可以自由地选择自己想要参加的那部分工作,不存在任何强制性的分工,任何人也可以随时离开,这些也是大公司内所没有的。大公司里的软件开发人员太过经常地在那些他们既不需要也不喜欢的程序上消磨时日、换取工资,开源社区的成功,则通过提供硬性证据显示从互联网上招募自我选择的志愿者要比管理整栋楼的“身在曹营心在汉”的人们要便宜和有效得多。 — Eric Ryamond 《大教堂与集市》 

 

微内核与单内核之争

在没有 Linux 讨论组之前, Linus 一般都是在 Minix 讨论组里发布有关 Linux 的信息和寻找对这个操作系统感兴趣的人,这种行为对 Minix 的作者 Tanenbaum 而言,无异于直接从他的讨论组挖走用户。他越想越不对劲,于是在1992年的新年还未完全过去之时,他在讨论组里发了一篇题为“ Linux 过时了”的帖子抨击 Linux ,批评其采用的是落后的单内核设计,是“向七十年代的大倒退”,而不是像 Minix 一般采用先进的微内核设计。

虽然 Linus 平时是一个谦逊平和的人,但当别人对他的辛勤劳动的成果指指点点时,尽管对方是他的偶像,他还是忍不住要站出来说几句。当天晚上他就洋洋洒洒地回复了上千字来反驳对方的观点,强调了利用单内核实现 Linux 的高效性,并且认为“ Minix 本身没有实用性”。

简单的讲,单内核( Monolithic kernel )是将内核从整体上作为一个大进程来实现,整个操作系统是一个运行在核心态的单独的 a.out 二进制文件,所有的内核服务都在一个地址空间运行,相互之间直接调用函数,简单高效。微内核( Micro kernel )则将功能划分成一组独立的进程,进程间通过 IPC 消息传递机制进行通信,模块化程度高,优点是一个服务崩溃不会对另外一个服务造成影响,稳定性高,但也由此增加了代码交互的冗余与效率的损耗。在设计哲学上,学院派的微内核符合目前流行的模块化设计的思想,从美学角度看也更胜一筹,但理论上的优势实现起来却有其困难, Hurd 的难产就是一个例证,现实之中多采用折衷的混合内核方式吸取两种模式的优点, Windows 和 OS X 就是这么干的。

 

商业模式

GNU/Linux 和自由软件运动的重要转折点之一,就是基于这些软件和哲学的商业市场的诞生。很多人忍不住问,如果软件的源代码都可以无偿获得,那么程序员该如何挣钱养家呢?需要注意的是,即使在包含源代码的情况下,软件也更像高级饭店里一道菜肴的复杂烹饪方法,而不是航空公司的机票。在市场经济中,如果无限制地免费提供航空公司的机票,那么航空公司将会破产。相反, Alice Waters 出版自己拿手菜的食谱,却不会减少排队在她的 Chez Panisse 餐厅外等候用餐的人数。实际上, Stallman 在最初的 GNU 宣言里列出了几种可行的营利模式,例如:以光盘或磁盘的形式销售自由软件包拷贝;自由发布软件,但可以提供捐款的途径给使用满意的客户;提供手把手的安装、培训和指导服务;针对厂商新机器架构的软件移植;软件的定制化等。

Michael Tiemann ,1989年11月创立了 Cygnus Solution ,这是第一家专门服务于自由软件的商业公司,他的想法是通过为自由软件提供咨询和服务来赚钱。用户在拥有源代码的情况下可以自行维护软件,但如果他们对代码一窍不通,或者公司里需要批量的维护工作,这时就可以交给他们的公司来做。自由软件由于其开放的源代码,其优势之一就是你可以在一个自由的市场上选择各种技术服务与支持,不同的服务提供商之间存在价格与质量的竞争,使用过一个服务商后觉得不满意可以随时寻找其他替代。闭源软件由于只有其开发商拥有源代码,因此也只有开发商自家能够提供技术支持,没有竞争就没有动力,这也是微软的售后服务(还记得蓝屏的话)如此糟糕的原因。

另一种主流的营利方式是推出 Linux 发行版( Linux Distribution )。由于 Linux 实际是一个操作系统的核心( Kernel )而不是一个完整的操作系统,它缺少正常使用中许多必要的软件,而 Linux 发行版则是将 Linux kernel 、GNU 软件包、工具集和文档、桌面环境等打包在一起的一个完整操作系统。第一个 Linux 发行版是1992年 Peter MacDonald 的 Softlanding Linux System ( SLS ),不过这个 SLS 是集一人而非社区之力的成果,所以它使用起来很多 Bug ,大家想要改进它,这也催生了后来的 Debian 、 Slackware 发行版。中国的第一个 Linux 发行版红旗 Linux 于1999年8月发行。目前 Linux 发行版可以分为由公司维护的版本如 Red Hat ( Red Hat ), openSUSE ( SUSE )和 Ubuntu ( Canonical Ltd. ),以及由社区维护的版本如 Debian , Arch Linux , Mandriva 。大部分的 Linux 发行版都可以免费下载,但在下载页面上一般会有一个“如果你喜欢,请捐助我们”的选项,另外,付费的公司维护版本还可以获得定制化、技术支持等服务。

Linux 发行版由于其友好的用户界面以及集成了便捷的软件包管理软件,大大提高了 Linux 的易用性,使得普通用户上手 Linux 的成本也大幅降低,为推广开源的理念和推动 Linux 的普及立下了汗马功劳。

 

Tux

1996年 Linux 发展到第5个年头,已经在全世界范围内得到广泛的传播和应用,在出现了投机分子抢先注册 Linux 商标这样的事件之后,Linus 也觉得是时候给 Linux 弄一个商标/Logo之类的东西了。

然而,这件事确实让他伤痛了脑筋,毕竟他每天打交道的是一行行的代码,对于图形这些他一窍不通,在一次 TED 的演讲中他甚至表示“如果我流落到一座荒岛上,逃离的唯一条件是设计出一个漂亮的 GUI (图形用户界面),那么我情愿死在那上面”,由此可见一斑。关键时刻,他的妻子 Tove 给了他一点小小的建议:“你那么喜欢企鹅,为什么不用企鹅来作标识呢?”这时,他想起自己一次去澳大利亚旅游时,曾经在动物园里被一只漂亮的小企鹅咬了一口。虽然被它咬过,但他还是很喜欢企鹅,于是他打定主意就选企鹅作为 Logo 了。

随后,他在 Linux 开发组的邮件列表讨论中描述了他心中的想法:“不要太胖,而且应该是坐着的姿势,想象一下装满豆子的袋子。”征集的消息放出后,世界各地陆续举办了一些 Linux 图标设计大赛,最终来自德州 A&M 大学计算机系的 Larry Ewing 的作品被选中作为 Linux 的 Logo 和吉祥物,他的作品同样出自于开源的图形软件—— GIMP 。

关于这一图标的命名 Tux,有两种说法。一是 James Hughes 在邮件列表中提议的:“让我们来给它起个名字, Torvalds’ UniX –> TUX !”另一说是, Tux 是 Tuxedo (晚礼服)的缩写,因为这只企鹅看起来就像穿着一件黑色的晚礼服。

 

自由软件与开源软件

1998年2月3日, Todd Anderson , Foresight Institute 的 Christine Peterson , Linux International 的 John “Maddog” Hall 和 Larry Augustin ,硅谷 Linux 用户组的 Sam Ockman , Michael Tiemann 和资深黑客 Eric Raymond 等人聚集到位于山景城的 VA Linux 办公室开会,商议如何趁网景公司开放其浏览器软件 Navigator 源代码的大好时机,将自由软件有助于业务的核心理念推广出去。与会者都同意自由( Free )软件这一词存在问题,除去 Free 带给普通人的免费( Free )、质量低劣的印象,“自由”一词本身带有哲学和道德层次的意味,这意味着选择开源也就与利润无缘,而实际上并非如此,这些都不利于推动这一运动的进一步发展。经过几番头脑风暴, Christine Peterson 提出的“开源”( Open-Source )一词被确定下来,它表达的意思很简单,即开放源代码,而不涉及到商业模式的选择。

Linus Torvalds 的首肯当然至关重要,对于 Linux 的商业化, Linus 是一个实用派,他认为只要对 Linux 的传播发展有利,在增加收入的同时又能让自己体会到技术与知识的快乐就够了。会议过后不久 Linus 便发来信息表示对这一词的认可,这个新词便很快流传开来。随后是 O’Reilly 出版社同意出版一本 Open Source 文集,这就是1999年初的 Open Sources : Voices from the Open Source Revolution ,中文版《开源软件:开源革命之声》于 1999年底出版( Open Source 一词也首次被此书的译者洪峰译为“开源”)。不到一周的时间内, Linux Journal 杂志就有人撰文介绍,影响巨大的 Eric Raymond 也写了一篇文章向社区介绍并呼吁使用这个新词。随后, OSI( Open Source Initiative )也建立起来。

作为实用派的反面——理想派的代表,自由软件之父 Richard Stallman 对开源的态度是容忍的,他也是那本开源文集的作者之一。当然,随着开源渐渐开始取代自由软件, Stallman 便不再掺和其中,而是将更多的精力花在了给各大媒体写信上,纠正他们在文章中将开源软件与自己以及 Linux 等自由软件的主要功劳混为一谈,不厌其烦地阐述自由软件和开源软件的理念之间的不同。

虽然对于一般开发人员和用户而言,开源软件与自由软件基本上没有什么值得注意的区别,它们所指代的软件集合也基本相同。很多媒体和组织也习惯用 FOSS 或者 FLOSS 这样的和稀泥术语将两者并称。( L 指 Libre ,代替 Free 以避免歧义)比较 FSF 和 OSI 的协议列表,也并无太多不同。但是,用 Stallman 的话来说,开源软件对其最为重视的自由理念有意无意地进行了一定程度的弱化。

看看 OSI 的首页是怎么自我介绍的:“开源是充分利用分布式同行评审和流程透明化的一种软件开发方式。开源有助于更好的质量,更高的可靠性、灵活性,更低的成本,避免掠夺性的厂商垄断。”其对开源软件的定义中则包含了“可自由再发行、程序必须包括源代码、允许衍生作品”等内容。 FSF 对自由软件的介绍与此截然不同:“自由软件关注的是自由,人们应该自由地以所有有益于社会的方式使用软件。” Stallman 从四个方面阐述了他对自由权的定义:可以为任何目的运行程序的自由权;研究程序运行原理并对其修改以满足自身需求的自由权;以免费或收费方式再发布软件拷贝的自由权;修改和改进程序,并将修订版再发布给公众,使其他人可以从中受益的自由权。

对两者之间理念上的不同,Stallman的文章总结得非常清楚:自由软件是一场社会运动,自由关乎道德,因为只有自由才能真正尊重用户的权利。而开源软件是一种软件开发方法,只有开源才能开发出优秀的软件。

 

开源运动

马克思的《共产党宣言》引领世界共产主义革命热潮的历史表明,任何一场革命或者运动都需要一个理论家,需要一份纲领性的文献,来带领革命走向最终的胜利。 Eric Raymond 于1997年5月27日所发表的《大教堂与市集》一文恰好就起到了这一画龙点睛的作用。文章以 Linux 的核心开发过程以及作者自己主持开发的开源软件 Fetchmail 为例,清晰、透彻地描述了开源软件开发模式的理论与实际应用,第一次以形象生动的比喻,将开源软件和商业私有软件区分开来。它在开源运动中的地位相当于基督教徒手中的《圣经》,是开源运动的独立宣言。另外,这一文章最大的成就是直接促成了随后网景公司采取的行动。

1998年是一个多事之秋。一月份的重大事件便是网景( Netscape )公司宣布开放其浏览器软件的源代码,这一事件的影响在于,它开了原本闭源的商业软件转向开源模式的先河,此后逐渐有其他软件开始效仿,例如, Sun 将 Star office 开源并建立 Open office 项目。十月, Eric Raymond 披露微软内部机密备忘录《万圣节文件》,这些文件将开源描述成一种“长期可靠”、“对微软的直接、短期收入和平台构成威胁”的开发过程,它承认“工业品质可以通过开源软件项目达成甚至超越”,其中还提出了微软应该如何对抗开源软件的建议,包括在公司内部引入开源的模式、高薪挖走开源核心人员等。

《万圣节文件》使微软的处境相当尴尬,因为这与微软过去的表态是自相矛盾的,比尔盖茨在公开场合一直表示“没把 Linux 放在眼里”,这相当于反手打了自己一巴掌。随后, Linux 迎来了自己的杀手锏级应用——开源 Web 服务器 Apache 。 Apache 基于当时最流行的 HTTP 服务器 NCSA HTTPd 1.3 的代码发展而来,它是第一个吸引人们热切想要使用 Linux 的应用。如 Linux , Apache 出众的稳定和高效,比其他竞争对手更可靠、更灵活、更具扩展性,迎合了网管的实际需求。同时,其具有很高的性价比,使用 Linux 加 Apache 建服务器同比用 Windows Server 和 IIS 能为企业省下不少的钱。很快,运行 Apache 的 Linux 机器在网络服务器市场所向披靡,捷报频传,目前已经有约60%的网站运行在 Apache 的机器上,击败了 Unix 和 Windows Server ,成了全球 ISP 平台的首选。

IBM 、英特尔、甲骨文等知名软件和硬件公司也纷纷采取行动支持开源:甲骨文的企业级数据库向 Linux 开放接口, IBM 与开源 Apache 服务器软件团队合作开发大型服务器应用平台 WebSphere ,戴尔开始提供预装 Linux 系统的个人计算机等……虽然得到了各方豪杰的支持,但 Linux 之父 Linus 认为,他们当时并没有被一片叫好的表象冲昏头脑,因为他们知道这些大公司与他们合作的一个重要原因其实是为了打压微软当时嚣张的气焰。

时间到了世纪之交的1999年,此时微软由于将 Windows 95 和 IE 浏览器捆绑销售,正如其前辈 AT&T 一般深陷反垄断官司当中,为了给自己洗白,他们的辩护词中甚至出现了“ Unix 和 Linux 都是微软 Windows 强而有力的竞争对手”这样的溢美之词,而这一年开源运动也达到了顶峰。两家 Linux 系统服务公司 Red Hat 和 VA Linux 在纽约证交所 IPO 上市,前者是全球最大的 Linux 服务提供商,后者则被视为第二个 Sun 。 VA 的股价从发行之初的30美元一路蹿升至接近300美元,翻了10倍,打破了华尔街首日涨幅记录,各大新闻媒体也纷纷以头条报道此事。街头上的日常闲聊,电台里的午间新闻,人们口中都在谈论着“开源”、“ Linux ”等词语,也正是从这时起,人们不再把“开源”作为一种遥不可及的科技术语,而是主动去了解这种新兴的事物。

可惜,好景不长。2000年的互联网经济泡沫破灭,给 Linux 的发展笼罩上了乌云。泡沫始于2000年3月10日,当日纳斯达克股指到达5000多点的峰值,随后开始走下坡大幅下跌。许多公司被严重地高估市值,在股价崩盘时,由于其实际盈利有限,不得不走向破产。大多数网络公司也在把风投资金烧光之后停止交易,许多甚至从来没有盈利过。据统计,互联网经济泡沫在两年间抹去了互联网技术公司约5万亿美元的市值。

2001年6月19日,Red Hat 公布了其一季度的财报,次日股价跌至4.87美元每股。6月27日,由于连连亏损, VA Linux 宣布终止其下计算机硬件服务,次日股价亦跌至2.61美元每股,与其巅峰时期形成巨大反差。

另外,当时 Linux 上主流的两款桌面环境 KDE 和 Gnome 都是程序员风格的设计,界面简陋,一点也不用户友好。与之相比,微软内部有专门开发 UI 的专业美术团队,当微软推出实用、界面友好、漂亮的 XP 后,个人用户纷纷弃 Linux 而去,桌面版 Linux 业界也对此一度灰心失望。

 

微软与开源的攻守战

微软和开源社区的恩怨由来已久,最早可以追溯到家用计算机俱乐部的公开信那时,之后双方陆陆续续发生过几次擦枪走火的事件。

1999年2月15日是一个特殊的日子,它被开源软件者们称为“ Windows 退款日”。这一天几百名来自硅谷 Linux 用户组、 FreeBSD 社区的开源软件爱好者们高举横幅游行到旧金山湾区的微软办事处,要求微软为他们未使用的机器上的 Windows 操作系统退款。事情的起因源于一名澳大利亚的用户在新购置了一台电脑后仔细地阅读了几乎不会有人看的 Windows 操作系统用户协议,发现其中包含了“如果软件未被使用,你可以得到退款”的条款,于是他便带着他未使用的机器成功拿到了退款。与今天一样,当时微软的垄断地位已足以使它把 Windows 预装在其他厂商生产的每一台计算设备上,我们在购买它们的时候也间接地向微软支付了操作系统的授权费。开源社区的人们认为,预装的行为实际上剥夺了人们自由选择操作系统的权利,因为即使你购买电脑时就打算换上别的系统,你依然向微软支付了授权费。微软的代表早早准备好出来与他们交涉,当然没有取得很多进展,于是大家打算继续前进,直接上到他们的办公楼里,只不过害怕被乱搞一番的微软方面早已经把通往他们所在的九楼的楼梯通道和电梯都封闭起来了。尽管这一天结束之时,微软的工作人员并没有掏出支票簿兑现他们的退款,但他们的努力依然取得了一些成效——设备生产商开始提供未预装系统的计算机。

面对开源软件的汹汹来袭,微软开始了它的反击。2001年其推出了一项“共享源代码”计划,依据这项计划,独立开发者在开发系统级的软件时可以申请查看他们所需的源代码,政府和单位出于信息安全的考虑也可以要求审查源代码,而教育研究机构在进行科研时亦可以申请获得源代码的支持。在外界看来,这也许是微软向开源模式低头的表现,但微软内部依然是抗拒开源模式的,微软高管 Craig Mundie 在纽约大学商学院的一次演讲上提到:“共享源代码计划仅仅是吸收了开源模式的优点,例如提供有效反馈以及 Bug 修复、可定制等。实际上,(开源模式)要求开发者把他们辛勤工作产出的最具价值的结果无偿提供给人们,转而希望他们能通过提供一些诸如技术支持之类的其他东西来养活他们自己,这是对独立软件的持续发展的最大扼杀。” 虽然受到不少批评,但“共享源代码”计划时下依旧在运作着,其还推出过获得 OSI 认证的 Ms-PL 授权许可。

两年后,为了推广精简版的 Windows XP,比尔盖茨多次访华,同时与中国政府签署了“政府源代码备案计划协议”,盖茨还亲自向领导汇报。从微软的资料来看,政府源代码备案是一项全球性的计划,旨在让政府和其关联的备案单位通过可控的方式查看微软的源代码和相关的技术信息,使政府部门能对 Windows 的安全性做一个全面的评估,强化双方的合作。只不过,微软方面并没有对“可控的”一词做出进一步解释。

尽管微软多管齐下,出于降低成本和对安全问题的考虑,尤其是棱镜门事件曝光之后,多国政府也开始对开源软件给予支持。法国近年来一直在大力发展开源软件,曾向高校学生免费派发了 175000 份装有开源软件的 U 盘,并不断釆取优惠的措施扶持开源软件厂商。德国外交部将它的11000台电脑全部换成 GNU/Linux 和其它开源软件,这一举措使外交部相比其它部门大幅减少维护费用。美国纽约州立法院则修改当地税法,对开源软件开发者进行个人所得税补贴(减免20 %)。中国政府在《软件和信息技术服务业“十二五”发展规划》中亦提出要把开源软件作为扶持发展的对象。同时,中央采购中心在14年发函通知,禁止采购安装 Windows 8 的计算设备,中国邮政随后采购了上万套定制版的国产红旗 Linux 操作系统用于门店收银的电脑上,用于取代老旧的 Windows XP 。

2008年 Google 发布基于 Linux 内核的开源安卓系统,随着 HTC 推出第一台安卓智能手机,其开放的生态吸引了许许多多优秀的开发者,可定制性也成为许多厂商选择其的原因,市场的选择使安卓系统接二连三地打败了曾经流行的塞班、黑莓等对手,逐步成为最流行的操作系统,时至今日安卓已经拿下了智能手机操作系统份额的70%。而微软由于战略失误,在移动平台反应一直比别人满半拍,当全触屏智能手机已经成为市场主流时,才匆匆地推出了自家的 Windows Phone 操作系统。只是,由于应用稀少,功能不完善,WP 目前只在不到3%的智能手机上运行着。开源社区在这次竞争中大获全胜。

不过,微软在桌面系统领域的霸主地位却一直是无人能撼动的, Windows 操作系统在统计数据中一直占据着桌面系统90%以上的份额,而 Linux 只被2%左右的桌面用户所接受。2013年微软推出 Windows 8.1 系统更新,紧接着的是搭载了该系统的 Surface Pro 3 这款重新定义移动生产力的产品,同时微软还宣布取消小于9英寸屏幕的 Windows 平板的授权费,于是大量搭配英特尔低功耗处理器的 Windows 平板上市,也因为其相对低廉的价格和 Windows 平台多年累积的丰富应用给安卓平板和 iPad 造成有力的冲击。2015年7月,微软开始了为期一年的免费升级正版 Windows 10 的服务,抢占了更多市场份额。Linux 则在其他的领域发力:目前世界上97%的超级计算机跑在 Linux 上,包括天河二号、 IBM 蓝色基因等;60%的网站,包括 Google 、 Facebook 等最流行的网站选择 LAMP 组合的服务器;机器人、物联网、无线电。

开源软件在这些年的发展中一路高歌猛进,取得了不小的成就。但也不能因此而沾沾自喜,毕竟桌面系统这块兵家必争之地依然受到微软垄断阴霾的重重笼罩,而 Linux 系统给人的印象也依旧离不开“程序猿专用”、“命令行”、“复杂难用”等,在桌面版本上, Linux 依然还有很长的路要走。

 

微软拥抱开源

微软在2014年的云策略发布会上大胆喊出了“微软爱 Linux ”的口号,这在鲍尔默掌权微软的时代是难以想象的,在他口中“开源就是一个毒瘤,谁碰上了都要倒霉。”那么这对昔日的仇家如今怎么走向合作了呢?新任 CEO 纳德拉的上台及其提出的新的发展战略是一个关键的转折。

在盖茨、鲍尔默时代, Windows 被视为微软的业务核心,他们要做的就是如何让客户更多地购买他们的光盘和授权,而在他们的思维中互联网是次要的,IE浏览器糟糕的体验就一直被人吐槽。一晃二十多年过去了,微软赢得了桌面操作系统的胜利, Windows 操作系统依然运行在数以万计的 PC 设备上。但今天是一个移动互联网的时代, PC 市场正在不断地萎缩,与此同时,苹果和 Google 这样的竞争对手逐渐崛起,他们在互联网、移动互联网、云服务甚至物联网构筑起成熟的生态,而 Linux 则在服务器及超级计算等高精尖领域把微软打得落花流水。醒悟过来的微软亡羊补牢,可惜为时已晚,移动端的 WP 只取得3%的惨淡份额就是最好的证明。

也许是在互联网和移动计算时代输得太惨,纳德拉接替鲍尔默执掌微软后,微软的战略从模仿苹果的“设备和服务”变成了“平台和效率、移动优先云为先”。

原云服务部门的纳德拉,担任 CEO 之后的第一个举动,就是将微软云计算服务 Azure 之前的“ Windows ”字样果断取掉,在此之前 Azure 平台只能运行在自家的 Windows Server 操作系统上。在他看来,无处不在的“ Windows ”印记,是 PC 时代思维的遗留,在云计算和移动互联网时代,微软的云服务不应该在束缚在 Windows 的“高墙”之内。随后,微软陆陆续续地与相关公司开展合作,将 Debian Linux 、 Red Hat Linux 和 Ubuntu Linux 一批最先进的 Linux 发行版本带到 Azure 平台上。目前,在 Azure 云平台上已有50%以上的虚拟机运行着 Linux ,用他们的话来说,“识时务者为俊杰”,这些举动让有特殊需求和喜好的客户在选择产品时留有更大的余地,对提高微软自身的竞争力无疑是有帮助的。

实际上,早在2009年微软就曾向 Linux 内核贡献了超过两万行代码,这些代码大大增强了在 Windows Server 2008 Hyper-V 上运行 Linux 操作系统的虚拟机的性能,甚至让微软在一段时间内在 Linux 内核贡献数量榜单上排名第一。

除此之外,微软还在开源这条路上走得更远。微软为开源的开发者提供基于开源、免费的代码编辑器 Visual Studio Code ,支持主流的30几种编程语言,任何人可下载其源代码依个人喜好进行定制,并可在 Windows 、 Linux 与 Mac 环境上运行;微软也将Windows下广受开发者喜爱的应用框架.NET Framework的核心部分开源,称为.NET Core,支持 Windows、Linux与iOS不同的操作系统,既开源也跨平台,已经成为GitHub上最受欢迎的开源项目;在收购了Xamarin 后,微软宣布将这一移动跨平台开发技术免费开放给开发者使用,这将实现“一次开发,多平台部署”的美景,单一开发者就能够开发 iOS、Android 与 Windows Phone 的原生 App ,企业不再需要为一个 App 养着3个开发团队了;另外,微软具有核心竞争力的数据库产品也将推出 SQL Server For Linux 版本,尽管目前该产品依然处于测试阶段,是否收费也尚不清楚,但这对于推动服务器间建立持续一致的数据平台来说是利大于弊的;Ubuntu Bash on Windows 项目则将 Linux 上最重要的命令行组件带到了最新的 Windows 10 上,这意味着大量 Linux 上的开源开发工具可以直接运行在 Windows 上面了。

在跨平台上也可以看得出微软所投入的心血。 Office 原本是作为 Windows 的杀手锏之一,而在最近我们看到 iOS 版本 Office 推出,同时安卓版的 Office 也实现了免费。甚至,在 iPad Pro 的发布会上,微软的高管还应邀为对手站台,现场演示 iPad 版 Office 应用。 Cortana 智能语音助手, Outlook 邮箱,必应输入法也纷纷登陆了对手的平台上,使更多用户能在不同的平台上享受微软服务的一致体验。

2014年9月,微软预览体验项目( Insider Program )随着 Windows 10 的第一个技术预览版本一起面世,致力于为喜欢尝鲜的用户迭代推送包含最新功能、处于测试阶段的微软产品,并通过一个“反馈中心”的程序让用户提交他们的使用体验及错误报告。对于微软的转变,内部高管 Terry Myerson 表示:“这样做可以带来更开放的开发模式,社区中的每个人都可以参与其中,并通过提出建议、提交代码、修正错误、开发新功能等方式来提交反馈,我们认真听取这些反馈,并有可能采纳建议或合并代码到我们未来的产品中。”

纳德拉则说:“营收属于落后指标,而使用率才是领先指标。”在这一指标的引导下,微软大力拥抱开源,培养多元化的生态系统,从微软云 Azure 到 Windows ,从开发工具到数据库平台,这些举动表明其不再死守 Windows 不放而选择开放性。当然,这也给它带来了新的机遇。开源意味着它能够收到来自社区的反馈和改进,而跨平台则使其能够向更多的用户兜售其服务,以 Office 为例,其收费模式已经从传统的“一次购买,终生使用”,转向“包月、包年购买使用权”了,从长期看这无疑有益于推动其营收。

对于微软此番大胆秀恩爱的举动,开源社区的人有话要说。首先,这显示出开源的力量,开源社区一直引领网络服务平台最先进的技术,需要和想要使用 Linux 服务的付费客户占市场大多数,微软意识到如果他们不能提供 Linux 虚拟机,那些客户就会转而选择其他厂商。正如美国的一句俗语说的,“如果无法战胜你的敌人,那么就拥抱他吧”。说到底,微软还是那家商业至上的公司。这次的行动也引发了一些担忧:“ .NET Framework 确实是一个优秀的框架,在跨平台、开源模式的加持下将帮助其更加完善,因而吸引越来越多的开发者使用它。但是,开源社区的一个很明显的问题是,很多项目都活不长,开发者在丢出最初几个版本后就弃坑的项目比比皆是。 .NET 的广泛采用可能意味着与之竞争的开源项目会走向消亡,最终迫使我们都跟着微软的指挥棒转。”从这个方面来看,微软的开源对于开源社区来讲也许不是什么好消息。

从目前来看,开源因其开放和协作而逐渐登上历史的舞台,微软也正顺应着潮流开发更多的开源软件。在开源软件的影响下,还出现了以 Ardunio 为代表的开源硬件、配方开源的饮料、开源设计、开源政府、开源医药、开源艺术、开源教育等等运动,未来究竟会是个什么样子还很难说,但以微软为代表的闭源软件目前还有着强大的生命力,人们喜欢闭源软件漂亮的 UI 及其易用性,企业青睐集成化、统一的解决方案,开发者在使用着最新的开源 Docker、Hadoop 等技术的同时,依然依赖着闭源的 Xcode、Slack 等,而开源也还存在着不够平易近人的问题。或许未来人人都会编程时,开源就真的成为了世界的唯一标准,不过读到这篇文章的人中估计也没有几个正打算去学编程的。所以说,开源和闭源其实没必要太过较真,双方各有其优点与不足,两者长期共存、互利共惠的局面还将持续下去。

现代企业需要充分拥抱两个世界。Google、Facebook 和 IBM 用他们自身做了一个成功的示范:他们证明利用开放源码也可以让你的午餐留在盘子中。

在2018年6月微软正式收购开发者社区GitHub,进一步和Linux开发者实现互利共赢的局面,当然更多人认为收购GitHub是为了全面对抗Google的GitLab,争夺开发者用户,完善自身的生态圈。

 

小补丁:

BSD 模式 vs. Linux 模式:虽然 BSD 也会与外界互动,但 BSD 不过多依赖外界的代码,大部分的工作依然由核心团队完成;而 Linux 则是真正的大规模协作,参与人员可达几千、几万人。

BSD 授权 vs. GPL 授权: BSD 授权模式允许被授权的用户以源代码或者二进制的形式发布修改过的或未修改过的代码,也可以利用其营利,并且也不需要将代码回馈给社区,唯一要求是在源代码文件中原封不动的保留 Berkely 的版权声明,并且在含有以上代码的其他产品文档中声明其产品包括来自于加州大学和其他贡献者的代码。BSD 授权基于用户高度的自由,许多商业用户在选择开源软件时都首选 BSD 授权的软件,因为他们可以把这些代码集成到他们的闭源软件中。与之相比, GPL 的限制则多得多,使用 GPL 代码的软件也必须是开源的。

Unix 与 Unix-like (类 Unix ): The Open Group 在将 Unix 的商标收归旗下之后,为了解决市面上 Unix 和类 Unix 系统混杂的情况,基于 POSIX 标准制定了 Single Unix Specification (单一 Unix 规范),只有通过这一规范认证的系统才能使用 Unix 的商标。目前通过 Unix 认证的有: IBM 的 AIX 和 z/OS ,惠普的 HP-UX , Oracle 的 Solaris ,苹果的 OS X ,国内厂商浪潮的 K-UX 。除此之外的 Linux 、 FreeBSD 、 Minix 等在外观或功能上类似于 Unix 的系统皆可称为类 Unix 系统,需要注意的是,他们都不包含任何的 Unix 源代码。

Darwin / Mac OS X : 2001年发布的 Mac OS X 基于 Darwin 内核,而 Darwin 基于 FreeBSD 和 Mach 3 。与其他的 BSD 不同,虽然底层内核是开源代码,但 OS X 其他软件大部分是闭源的苹果代码, Aqua 图形用户界面是最突出和引人注目的项目。手机版的 iOS 亦是基于 Darwin 内核。苹果在 BSD 基础上开发了 Mac OS X 和 iOS,这样他们就不必写操作系统底层,就像 Google 在 Linux 基础上开发 Android 系统一样。

商业软件、开源软件、共享软件:商业软件一般是闭源的,但也有部分开源,收费会相对高一些。开源软件则如其名字,开放源代码。共享软件则指虽然不收费,但是也不公开源代码的软件。

 

相关主题

Linux新手大礼包:学习Linux你必须知道的那些事儿

精选文章
热门文章