OpenSolaris的精神本质
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的版权信息。
图 1 UNIX族操作系统历史演化简图
正是在各种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也是如此。