1. 引言
自从 2004 年 6 月 Sun 微系统公司正式宣布要将其旗舰操作系统软件 Solaris 开放源码之后,计算机行业内外对此的反应可以说是众说纷纭。
作为 Sun 公司的基础性和重要的软件产品,为什么要将 Solaris 开放源码? OpenSolaris 的方式究竟如何? OpenSolaris 的优势,面临的机遇和挑战又是什么?它同其他的开放源码操作系统( GNU/Linux 和 FreeBSD 等)将会是什么关系?它会对 Sun 公司带来什么样的影响?开放源码的 Solaris 对整个计算机软件行业的意义是什么?
通过本文的介绍和分析,笔者希望能够对读者理解开放源码软件有所启示。
1.1. UNIX 与 GNU/Linux 的历史变迁
Solaris 实际上是一种 UNIX 操作系统的变体,而 GNU/Linux 是一种类 UNIX 、或者说是与 UNIX 兼容的操作系统。
UNIX 来源于 1969 年美国 AT&T 公司 Bell 实验室的研究项目,在其初期阶段实际上就是研究领域中开放和共享的智力成果。很多大学和研究机构能够相当容易地得到 UNIX 的源代码和二进制代码,这样他们就可以自由地对其进行分析和改进,相互交流意见和成果,由此促进了 UNIX 的迅速发展。在此期间,美国加州大学伯克利分校( UC Berkeley )在 AT&T 公司之外对 UNIX 起到了相当程度上的主导作用,所以当时的 UNIX 分为两大流派, AT&T 的 System V 和 UC Berkeley 的 BSD 系列。而各个研究机构和公司在此基础上纷纷发布自己的 UNIX 版本,到 1990 年代初期的极盛时达到了 100 多种,这其中的 UNIX 厂商基本上都封闭了 UNIX 的源代码。 Sun 公司早期的 SunOS 操作系统就是来源于 BSD 系统。为了希望主要的 UNIX 版本能够统一起来, Sun 公司在 1989 年与 AT&T 联合发布了 System VR4 ,但是遭到了 IBM 、 DEC 、 HP 等公司的反对。 1992 年, Sun 公司在参考了 System V 的基础上发布了 Solaris 2.0 ,将原先 BSD 系列的 SunOS 系统升级为 Solaris 1 。 Solaris 1.x 系列发展到 1994 年的 Solaris 1.1.2 ( SunOS 4.1.4 )就退出了历史舞台,而 Solaris 2.x 发展成为今天的 Solaris 10 。
从 1989 年起,为了避免 AT&T 越来越高的源代码许可费用, BSD 系统开始逐步重写 AT&T 拥有版权的代码。到 1991 年,几乎所有来源于 System V 的代码都被重写了。由于商业利益的因素,由 AT&T 公司分离出来独立商业运营的 UNIX 系统实验室( USL )在 1991 年起诉了 UC Berkeley 和销售 BSD 系统的 BSDI 公司,声称他们侵犯了 USL 的软件著作权。 1992 年 UC Berkeley 对 USL 发起了反诉,称其在 System V 中没有充分尊重 BSD 代码的署名权。后来 Novell 公司在 1993 年从 AT&T 手中收购了 USL ,并宣称将会尽快结束这场官司。在经过旷日持久的谈判之后, USL 作出了某些关键让步,于 1994 年初达成协议: BSD 系统将删除三个源代码文件,对其他一些文件进行细微修改,在大约 70 个文件中加入 USL 的版权信息。
正是在各种 UNIX 版本纷至沓来和 USL 起诉 UC Berkeley 官司的同时,封闭的 Windows 系统获得了迅速的发展。为了实现 UNIX 的统一和标准化,电气和电子工程师协会( IEEE )于 1990 年开发了可移植操作系统接口( POSIX )标准( Std. 1003.1-1990 ),并被国际标准化组织( ISO )所接受,命名为 ISO/IEC 9945-1:1990 。 1993 年,主要的 UNIX 厂商发起成立了公共开放系统环境( COSE )组织。同年, Novell 公司将 UNIX 商标捐赠给了 X/Open 组织(现在的 Open Group )。在 COSE 组织和各 UNIX 厂商的共同努力下, 1995 年 X/Open 通过了 UNIX 95 标准和 CDE 标准。同年, Novell 公司将 UNIX 版权卖给了 SCO 公司。
由于 UNIX 厂商从 1980 年代起开始逐渐封闭了源代码,大学和研究机构的科研人员再也无法使用共享的源代码进行研究。麻省理工学院的研究人员 Richard Stallman 不满于这种限制用户自由使用软件的行为,为了完成一个与 UNIX 兼容的自由软件操作系统,于 1984 年启动了 GNU 项目,发布了通用公共许可证( GPL ),并在 1985 年发起成立了自由软件基金会( FSF )。 GPL 的目的是通过利用著作权法,但反其道而行之,以达到与通常相反的目的:将使软件私有化的手段转变成了保持软件自由的手段。自由软件强调的是用户运行、拷贝、研究、改进软件的自由,而不是价格。
GNU 项目得到了计算机用户和黑客们的广泛支持和资助,因此迅速发展起来。到 1990 年, GNU 操作系统几乎已经完成,唯一欠缺的就是操作系统内核,而来源于卡内基梅隆大学 Mach 内核的 HURD 没有能够迅速地稳定运行起来。幸运的是,芬兰大学生 Linus Torvalds 于 1991 年开发了一个与 UNIX 兼容的源代码开放的 Linux 内核。由于获得了广泛而热情的协助, Linux 内核迅速地发展起来。 1992 年, Linux 内核与 GNU 系统组合而成了完整的自由操作系统 GNU/Linux 。
由于自由软件坚持软件自由的理念,反对封闭硬件规格说明、专有软件库和软件专利,提倡自由文档,广大的计算机厂商和企业用户并不十分接纳它。到 1998 年时向新用户传播自由软件的观念变得更加困难。因此, 1998 年 自由软件社区中的一部分领袖宣布了“开放源码”软件的概念,将焦点从自由信息社会的思想原则转向了开放软件源代码的操作方式。这是一个根本的、分水岭性质 的转变。从此自由软件社区分裂为理想和现实的两个分支,而开放源码软件立即获得了计算机厂商和企业用户的广泛支持,迅猛发展起来。现在, GNU/Linux 系统已经成为全球服务器市场中的第二大操作系统。
由于在 1999-2002 年间 SGI 和 IBM 对 GNU/Linux 系统、尤其是其内核做出了颇多贡献,使其迅速地扩展到服务器领域。也正是由于这个原因,收购了 SCO 公司 UNIX 业务的 GNU/Linux 公司 Caldera 于 2002 年宣布改名回 SCO ,并于 2003 年向 IBM 和全球 GNU/Linux 用户提起诉讼,声称 IBM 向 GNU/Linux 导入了它拥有的 UNIX 知识产权。这项诉讼至今仍然没有定论。
然而在经过了 1990 年代后半期互联网泡沫之后的经济衰退,随着 UNIX 市场的迅速收缩, Solaris 的份额也在不断下滑。相对于封闭代码的操作系统,用户更希望能够使用廉价机器,自由地更改源代码,通过定制化来提高软件的运行效率,降低运行成本。 Solaris 一直没有向普通用户开放源代码,而 Solaris x86 版本更曾经一度停止开发。现在 Solaris 即将开放源码的根本原因正是为了满足用户变化的需求。
1.2. OpenSolaris 的优势
Solaris 最初发布于 1991 年,现在它已成为头号 UNIX 操作系统。几乎所有全球财富 1000 强的企业都运行 Solaris ,它的用户早已遍布世界各地。 1,000 多家独立软件开发商( ISV )提供了 12,000 多种应用程序,这样庞大的支持体系使 Solaris 可以部署在从数据中心到桌面系统的各种环境之中。而且在相当长的时间里, Solaris 可以免费自由下载,许多大学和研究机构还依据 Sun 提供的学术许可项目获得了 Solaris 的源代码进行研究,因此对它是相当熟悉的。 Solaris 具有人数众多的爱好者和开发者社区,并建有 Solaris 上的自由软件下载站点 sunfreeware.com ,基于 Solaris 开发开放源码软件的 Blastwave.org 社区也早已成立。为了避免将来可能的知识产权纠纷, Sun 公司于 2003 年在达成的一项协议中向 SCO 支付了 930 万美元,以获得了足够的权利来 OpenSolaris 。
Solaris 在工业界和大型用户中由其技术优势具有良好的口碑。它功能完备,应用历史悠久,具有经验证的高安全性、高稳定性、高可伸缩性。 Sun 公司的领先技术与创新精神也是业界有目共睹的。在最新推出的 Solaris 10 中体现了更多的技术创新,例如:
-
动态跟踪( Dtrace ):使开发人员迅速解决性能问题和故障,使之在几毫秒或几分钟内得到诊断。
-
系统分区( Solaris Containers ): Solaris 10 是唯一的提供多软件分区的操作系统,在一例操作系统上可以有 8,000 多个系统分区,使系统利用率达到 80% 。
-
进程权限管理( Process Rights Management ):来自广泛用于政府安全领域的 Trusted Solaris 。它采用更细小的特权管理模式,保证应用上的任何疏忽不致暴露或导致大面积的系统瘫痪。
-
预兆性自愈技术( Predictive Self Healing ):自动诊断、隔离及修复许多硬件故障和应用程序错误,可极大地减少系统意外中断时间。
-
Linux 应用环境( Linux Application Environment ): Solaris 10 将是唯一的可以同时运行 Solaris 和本地 Linux 二进制代码的操作系统,且无需对应用做任何修改。
-
Zettabyte 文件系统( ZFS ):拥有当前 64 位文件系统容量的 1.6 千亿亿倍,所以 ZFS 是业界唯一的实际上没有存储容量限制的文件系统。 ZFS 可以减少管理开销达 80% ,并以 99.99999999999999999% 的错误检测与修正率提供了可证明的数据完整性。
-
密码架构( Cryptographic Framework ):基于业界 PKCS #11 标准,提高了性能,并可集中管理密码操作。
-
更新连接( Sun Update Connection ):这是一个允许用户对系统进行分析并在几乎任何地点都能获取最新信息的更新服务。
-
AMD64 优化: Solaris 10 针对 AMD Opteron 64 位处理器进行了优化,提供的性能远远高于以往低成本的架构,同时继续提供 32 位和 64 位环境间的二进制兼容性。
-
兼容性保证: Sun 提供 Solaris 应用保证书,担保针对以往版本的 Solaris 所编写的应用程序可运行在 Solaris 10 上。其向后兼容性一直扩展到 Solaris 2.6 ,这一保证书覆盖了前 7 年发布的 Solaris 操作系统的各个版本。
Solaris 10 是迄今为止 Sun 发布的速度最快的操作系统,它使 SPARC 和 x86 系统上 Web 服务器的性能比 Solaris 9 快了 40% 以上。
1.3. OpenSolaris 面对的机遇和挑战
然而, OpenSolaris 需要面对的并不完全是技术问题。
-
开发流程的变化
首当其冲的是 Solaris 开发流程的变化。作为 Sun 公司内部最庞大的软件开发项目, SunOS 到 Solaris 的开发在 20 多年的积淀中形成了一整套相当完备的工作流程规范。然而 OpenSolaris 所提出的挑战并不与其完全匹配。
作为开放源码软件,整个开发过程需要比以往更加透明,需要建立适当的机制和充足的资源来敏捷地响应合作伙伴和用户的咨询和支持需求。更重要的,会有开放源码社区的开发者加入到 OpenSolaris 的开发过程中来。会有更多的开发、测试、维护、文档化、支持、咨询服务等工作转移到 OpenSolaris 社区去,也会有支持、咨询、协调、管理等工作进入 Solaris 的原有技术团队。协调与平衡外部社区成员和内部员工的工作,需要一个心理角色认定的变化。工程师不能够再只关注于技术问题,同时也要关注公众、社区、客户和合作伙伴。
这是一个工作流程公开化的过程,也是企业文化开放化的过程。为了响应这种需求, Sun 公司已经于 2004 年建立了员工的 Blog 网站( blogs.sun.com ),鼓励职员加强与外界的沟通。 Sun 公司总裁 Jonathan Schwartz 也在上面建立了自己的 Blog ,并且受到了媒体的广泛关注。
-
商业模式的变化
OpenSolaris 这样的核心软件产品,更重要的是会导致商业模式的变化。作为专有软件产品的 Solaris ,本身就是知识产权的价值体现。所以销售 Solaris ,也就是销售知识产权产品。即使是免费发布 Solaris ,它的商业模式依然是通过 Solaris 的连带效应来带动其他产品的销售。所以本质上仍然是以技术创新为中心、产品驱动的商业运营模式。
而将 Solaris 开放源码,这个变化本身就是响应客户需求的结果。因为客户在经济状况不好时会想要通过压缩成本来获取收益,这其中的一个重要途径就是提高现有 IT 系统的运行效益,减少新置系统,或者提高新增系统的投资收益率。而开放源码软件能够使用户定制系统,从而达到提高收益的目的。
OpenSolaris 的 转变过程,实际上是向以客户为中心、需求驱动型的商业模式转变。在这样的运营模式下,注意的焦点将放在如何满足客户需求、解决客户面临的问题、为客户提供 最高的价值方面。从通过单纯销售产品获取利润的方式,向为客户提供维护与支持服务、提供解决方案并进行实施的方式转移。
-
许可证与软件专利问题
为了能够以恰当的许可方式发布 OpenSolaris , Sun 公司经过反复研究,借鉴 Mozilla 公共许可证( MPL ),设计了普通开发与发布许可证( CDDL ),并提交给了开放源码软件的认证机构--开放源码促进会( OSI ),于 2005 年 1 月讨论通过。
CDDL 实际上是一个许可证模板,其中不包含任何发行者的特定信息,在满足开放源码软件许可证的要求下,充分尊重原始作者和贡献者的知识产权,以期获得广泛的使用。著名自由软件 cdrecord 的作者 Jörg Schilling 就在 2005 年 2 月将它最新版的 star (与 tar 完全兼容的高速归档软件)以 CDDL 许可证发布,而 star 之前的版本都是以 GPL 许可证发布的。
CDDL 与 GPL 互不兼容,其主要原因在于 CDDL 中包含了尊重专利权的条款,而 GPL 对此没有定义。 GPL 还反对 CDDL 中使用“知识产权”这样的字眼。但是并非所有的自由软件或开放源码软件的许可证都兼容 GPL 。
根据 GNU 项目中的信息,有很多著名的自由软件是以不兼容 GPL 的许可证发行的,比如: OpenSSL 许可证、 Apache 软件许可证、 xinetd 许可证、 IBM 公共许可证( IBM 研究机构常用它来发布软件,但是其专利条款不兼容 GPL )、 Eclipse 公共许可证、 LaTeX 项目公共许可证、 Mozilla 公共许可证、 Interbase 公共许可证、 Jabber 开放源码许可证、 PHP 许可证、 Apple 公共源码许可证(用来发布 Darwin )。
图
2
自由和非自由软件分类图
而大家很熟悉的
Qmail
和
PINE
实际上根本不是开放源码软件,它们都禁止其他人修改版本的发行。
事实上,与 GPL 许可证兼容并不是软件在 GNU/Linux 系统上运行的必要条件。 GPL 的有效范围只是以 GPL 方式发布的软件、修改版、衍生软件或者它们的一部分。对于并非 GPL 软件的衍生软件来说,即使在 GNU/Linux 或其他以 GPL 方式发布的操作系统上运行也并不违反 GPL 。
比如 Linux 内核的某些模块就不是以 GPL 方式发布的, Linus Torvalds 认为其原因在于那些模块本来是为其它操作系统设计开发的,而只不过是移植到了 Linux 内核上罢了。在 GNU/Linux 系统的用户空间中运行的应用程序也不是 Linux 内核的衍生作品,所以也不在 GPL 的覆盖范围之内。正因为此,众多大型专有的商用数据库系统才有可能合法地移植到 GNU/Linux 操作系统上来运行。
CDDL 与 GPL 不兼容,其实是说不可以将以两种许可证方式发布的源代码或其衍生代码直接混合起来编译,形成新的软件产品,而并不阻碍这两种软件相互链接,同时运行。除此之外,以不兼容许可证发行的软件间还可以通过共享知识来启发灵感,同样会有很大帮助。
自由软件哲学在本质上是反对知识产权私有化的。 GPL 许可证采取的方式,实质上是在知识产权(准确地说是著作权或版权)的框架内,将软件著作权与软件的贡献者和使用者共享。
自 由软件基金会和开放源码社区也普遍反对软件专利权。他们认为软件专利会成为大公司扼杀中小公司创新力的手段,阻碍软件行业的发展。而现状是美国早已经接受 了软件专利的申请,而欧盟议会即将对欧盟执行委员会通过的软件专利法案进行表决。中国现在执行的专利法也不排斥软件专利权。
笔者个人认为:正如著作权 / 版权保护一样,软件专利权保护也应该有度。软件著作权 / 版 权保护的是软件的具体表现形式,而无关其设计思想;软件专利权保护的是具有新颖性、创造性和实用性的思想活动。但是专利并不应该保护数学算法等科学发现, 而算法的具体代码实现实际上是在著作权保护的范畴之内。所以需要软件专利保护的思想方法实在是非常有限。如果要把本来属于著作权 / 版权保护范围内的软件代码纳入专利权保护范畴,的确会给软件行业的发展造成巨大的阻碍。知识产权保护应该以推动整个社会和行业发展为主要目标,在公众利益和知识产权所有人利益之间求得平衡。软件专利既不能泛滥成灾,但也不可废弛不用,应该适量有度。
Richard Stallman 也意识到了 1991 年发布的 GPL 第 2 版在软件专利问题上很模糊,他已经声明会在 GPL 第 3 版中对此进行增补。
为了减少软件专利的纠纷,促进开放源码软件的创新和发展, Sun 公司在 OpenSolaris 的同时也向开放源码社区开放了它相关的 1670 项专利,可以在 OpenSolaris 之外的开放源码软件项目中使用。
-
竞合( Coopetition )的精神本质
仔细观察 UNIX 族操作系统从诞生至今这 30 多年间的发展历史,就会发现这是一个竞争与合作的历史,也是分裂与融合的历史。
在 1970 年代和 1980 年代初期,由于源代码开放,各个 UNIX 流派之间相互学习与借鉴,不同公司和机构的版本之间技术融合地非常频繁,几乎每个发行版本之间都会融入不同来源的技术。这也是 UNIX 系统发展的鼎盛时期。
而 1980 年代末期往后,由于商业竞争和软件知识产权的纠纷,各大公司纷纷将其 UNIX 版本封闭了源代码,相互之间的技术交流大幅度减少;只有 BSD 系统在解决了与 USL 的诉讼之后依然在进行小范围的合作。封闭的 Windows 操作系统借此时机进行了长足发展。
也是在 1980 年代,自由软件基金会在社区成员的共同努力下开始 GNU 项目。通过与 Linux 内核的融合,终于完成了 GNU/Linux 的完整系统。这是自由软件信念的成功,也是开放式合作的成果。但是由于纯粹的自由软件精神与商业理念的严重冲突,此时 GNU/Linux 系统并没有进入主流商业领域。“开放源码软件”概念的提出解决了这个问题,开放源码软件与商业 UNIX 软件公司的合作极大地促进了它的发展。
由此可见,合作竞争(竞合, Coopetition )是 UNIX 类操作系统--开放系统的生存发展之道。只有以开放的心态,抛却成见与门第隔阂,求同存异,竞争且合作,勇于调整自己、拥抱变化,才能够迎接挑战,满足用户需求,才能够在不断变化的环境中生存和发展。
开放源码的 Solaris 与 GNU/Linux 系统竞争并合作的方式多种多样。把 OpenSolaris 的应用软件同 GNU/Linux 系统组合,或着把 sunfreeware.com 上提供的 GNU 软件与 OpenSolaris 的核心系统组合,都将形成 GNU/Linux 与 OpenSolaris 的混合系统。如果将 OpenSolaris 的编译器移植到 GNU/Linux 系统上,那将是编译器之间的竞争。著名的 GNU/Linux 社区 Gentoo 已经声明对制作 Gentoo/Solaris 很感兴趣;国内也可以基于 OpenSolaris 制作高稳定性和安全性的国产 Solaris ; OpenSolaris 也有可能会被移植到新的硬件平台上(实际上 1995-1996 年间 Sun 公司曾经发布过 PowerPC 版的 Solaris 2.5.x )。
随着 GNU/Linux 软件的支持越来越广,我们看到 UNIX 族操作系统在经历了分裂之后的再次融合。这种融合可能不是直接的代码合并,而是间接的相互影响。比如 IRIX 和 AIX 的一些功能就已经在 2000 年左右出现在 GNU/Linux 的内核中。
竞争和合作本就是相互依赖、又相互冲突的。如果只有竞争而没有合作,很可能会降低发展效率,象 UNIX 曾经的历史那样;但是如果只有合作而没有竞争,则会孳生垄断,同样会阻碍发展,正如我们今天所看到的。
1.4. 总结
软件自由是一个信仰,而开放源码是一种商业模式。
软件厂商之间既有竞争又有合作,才不会停滞不前,而不断推陈出新。这样对用户来说就会有多种选择,从而降低成本和风险,提高他们的投资收益。而用户的需求就是市场,就是企业的机会。只有在不断变化的环境中调整自身,满足用户需求,才会赢得市场,获得利润。
这就是企业参与开放源码软件的精神本质, OpenSolaris 也是如此。