开源软件与中国信息产业,本文主要内容关键词为:开源论文,中国信息产业论文,软件论文,此文献不代表本站观点,内容供学术参考,文章仅供参考阅读下载。
1998年信息技术(information technology,IT )行业最热门话题就是“开源软件”(open source software)运动。开源软件成了一系列事件背后的共同特征:网景(Netscape)公司公开了其浏览器的源代码,Linux开始迅速获得市场份额,Java语言也向开源软件转移。
开源软件的一个最重要的特点就是公开程序的源代码,但公开程序源代码并不是新鲜事物。早在计算机工业的发展初期,在程序员之间共享程序源代码就是很平常的事情,只是在出现个人计算机后,以盖茨(B.Gates)80年代初发表那封公开信为分界线, 此后专有商业软件的源代码便秘而不宣。
早在80年代初期,几乎是盖茨发表公开信的同时,就有人意识到垄断程序源代码将带来一系列问题,其中最有名的当数斯托尔曼(RichardStallman)。他认为,对专有商业软件源码的垄断实际上剥夺了程序员的自由。他强烈抨击了专有商业软件的经营理念,认为它与社会公众道德和进步方向背道而驰。可贵的是,斯托尔曼不仅仅是说说而已,而是将他的思想付诸实践,以实际行动来唤起更多人的觉醒。为此,他组建了自由软件基金会(free software foundation,FSF),发起了 GNU(GNU's Not Unix)工程,即研制、开发和推广自由软件的工程。在过去近20年中,GNU工程在编辑器、编译器、 操作系统等领域取得了非凡的成就。
开源软件与专有商业软件的竞争使计算机软件业正在发生深刻的变革。随着因特网的普及,这一竞争有加剧的趋势。有趣的是,因特网的成功本身就与开源软件有非常大的关系。开源软件构成了因特网的基础:Sendmail为因特网上80%的电子邮件提供投递服务,50%以上的万维网站点采用Apache作为其服务器,BIND完成了所有的域名和IP地址之间的转换,Perl 语言成为编写万维网通用网关接口(common
gateway interface,CGI)程序的首选语言。Sendmail、Apache、BIND 以及Perl等,都是地地道道的开源软件。
大背景与大思路
与欧美发达的IT业相比,中国IT业还很落后,在基础性的核心硬件(如CPU芯片)和核心软件(如操作系统)等方面, 中国几乎还是一片空白。对这些问题的认识,思想上不尽统一,还有争论。笔者认为,由于缺乏大思路,缺乏长远眼光,才使中国的IT业缺乏前瞻性,以致在基础性的核心硬件和软件上处处受制于人。
科学发展史上有许多先例可以充分说明掌握大思路和大背景的重要性。20世纪初物理学中相对论的诞生就是一个生动的例子。在爱因斯坦之前,已有许多学者具有了一些相对论的思想,如洛伦兹、庞加莱和希尔伯特等。他们在不同的场合提出过一些具有相对论思想的观点,发表过一些具有相对论思想的文章。庞加莱是百科全书式的学者,希尔伯特是当时数学界的泰斗,但他们都没有像爱因斯坦那样如此明确地阐明相对论的思想。
爱因斯坦当时只不过是专利局一位默默无闻的小职员,他使用到的数学工具没有超出微积分的范畴,但是,爱因斯坦具有极高的哲学修养,他在哲学方面的超人悟性弥补了其数学技巧的不足(这个不足只是与前面所述及的那些学者相比而言的)。尽管后来有闵可夫斯基这样的数学家用其他更高级的数学工具更加完美地表达了相对论思想,但仍可以说,爱因斯坦对相对论的哲学认识要远远领先于同时代的其他学者。
不同时期的事件往往具有惊人的相似性,不同领域的事件往往也具有惊人的相似性。 托瓦尔兹(Linus Torvalds )90年代初开发成功的Linux操作系统,在短短的几年时间里,就能够和微软(Microsoft)公司开发的Windows NT展开面对面的竞争,这多少也说明了大思路的重要性。托瓦尔兹动手编写Linux内核时,他还是芬兰的一名大学生, 但他是一个有大思想、大思路的人,他对当时的形势有清醒的认识,并且确定了现实可行的设计原则。通过因特网,在近千名技术人员的帮助下,Linux经过几年的飞速发展,终于脱胎换骨, 成了今天最具传奇色彩的操作系统之一。
设计计算机操作系统,毫无疑问都需要有自己的系统理论。可喜的是,中国在系统理论领域的研究水平早在70年代中期就已经达到了世界先进水平,并逐渐取得了领先地位。中国学者吴学谋创建的泛系理论就提供了一整套兼顾普适性、确切性与可操作性的系统方法论。国内的开发人员如果能认真研究泛系理论,并形成自己的大思路,那么在较短的时间内在软件产业取得突破性的进展是完全可能的。
一旦先进的理论武装了头脑,那么在处理具体的技术问题时,就可以很快形成自己的实现方案。开源软件公开了程序的源代码,因此通过解读开源软件,可以掌握原来开发人员的设计思路和具体的实现方法,迅速弥补中国软件设计人员在许多领域的空白,使中国的软件有可能在较短时间内赶超世界先进水平。
笔者认为,要赶超世界先进水平,应该首先澄清模糊的观念,统一认识,在此基础上,才能得到革命性的新思维、大思路。
什么是开源软件
软件的发行和使用,受软件许可证的限制和保护。为了准确理解开源软件,应该首先弄清开源软件许可证的内涵。开源软件许可证由雷蒙(Eric Raymond)发布,该许可证定义的开源软件不仅要求开放程序源代码,而且还包含如下几点主要要求。
自由再发行
即不能限制任何团体销售或赠送开源软件,不能对这样的销售收取许可证费用或其他费用。
派生程序
开源软件的许可证必须允许更改或派生程序,必须允许这些程序按与初始软件相同的许可证发行。
无人员或团体歧视、无领域歧视
开源软件的许可证不能限制任何个人或团体使用,也不能限制各专门领域的人员使用该软件。
许可证实例
GNU的通用公共许可(general public license,GPL)、Free BSD、X Consortiun 和 Artistic 等许可证都是符合开源软件定义的软件许可证。MPL也是如此。
为了正确理解开源软件,还应该澄清一些误解。
误解之一:开源软件没有软件许可证
实际上,正如上面看到的,开源软件是有软件许可证的,而且它的各项条款清楚地界定了其软件许可证的内涵与外延。中国现行的软件保护法规对开源软件不提供任何保护,连登记注册也不予受理,这在法律上形成了一个漏洞。这一漏洞的后果现在一时还难以看出,但是将来如果以开源软件为基础进行二次开发得到派生程序时,就有可能出现一些严重的问题。
误解之二:开源软件是免费的软件
开源软件跟软件的价格之间没有任何关系。开源软件只是规定软件发行人不能向他人索取软件的许可证费用,但是任何人都可以公开销售开源软件。
实际上,不可能每一个用户都是计算机专家,用户在使用软件时总会遇到这样那样的问题,因此技术支持是非常重要的。技术支持作为一种服务是地地道道的商品。从这个角度讲,开源软件并不排斥市场经济规律,因此可以容许社会上出现大量的公司和从业人员为开源软件提供技术支持服务,这对在全社会大力推广应用信息技术是大有裨益的。
误解之三:开源软件等于自由软件
开源软件与自由软件在历史上确实有一些渊源,但是开源软件并不能与自由软件完全划上等号。自由软件是以GPL定义的软件, 而开源软件不仅含有GPL定义的自由软件,还含有以BSD、MPL 等许可证形式定义的软件。
中国信息业的根本性问题
笔者认为,除了在发展战略上缺乏统一认识以及大思路之外,中国信息产业中的根本问题在于没有自己的开放平台,既缺乏自己的开放硬件平台,也没有自己的开放软件平台。
硬件平台
很多人认为美国的芯片价格便宜、性能又好,芯片生产线投资额巨大,中国造不起,因此中国不需要自己造芯片,也不宜由中国自己造芯片。笔者认为,这种观点是完全错误的,而且非常危险。英特尔(Intel)公司已经明确表示,在PⅢ芯片中设计了产品序列号码,那么软件公司完全有可能在其操作系统和应用软件中以产品序列号码设置软件锁、甚至逻辑炸弹。如果在银行、金融、证券、电力、邮电、军事等部门使用了这样的软硬件,那么有关国计民生的“神经系统”实际上都掌握在少数几个人或者少数几家公司的手中,一旦国际形势突然变化,后果就不堪设想了。
基于这种考虑,中国一定要自己造芯片。这个“造”,含有设计和生产两个基本部分,缺一不可。由于经济实力和技术能力的限制,现在中国可能一时还造不出像P Ⅲ这种高档芯片, 但是完全有能力造出像80386、80486这样的中低档芯片。如果真正需要高档芯片,那么可以将问题转化为由软件在多个中低档的硬件平台上去实现,使慢的“兔子”赛过快的“狼”。
软件平台
计算机软件平台,特别是操作系统,在软件产业中属于最底层的东西。如果一直采用外国公司编写的操作系统或者软件平台而自己没有产品,实际上将这一广阔的市场供手交给了外国。如果国外产品先进的话,这也未尝不可,糟糕的是国外公司总是首先根据自己国家的需求开发产品,开发成功之后,才开始考虑国际化的问题。因此中国不能指望外国公司为中国人单独开发开放的平台。如果不在操作系统这一层次解决中文信息处理的问题,那么今后中文信息处理将始终不得不依靠应用程序的修补来实现,由此不可避免地会产生各种应用程序之间编码和代码兼容性的问题。沿着这条路走下去,是不可能得到完美的解决方案的,以前的实践已经多次证明了这一点。
怎样看待开源软件
笔者认为,正确看待并利用开源软件,能为中国解决缺乏软件平台的问题提供巨大的帮助。要编写一个好的平台(特别是操作系统),工程非常浩大,一步到位可能很难,因此要灵活应用泛系理论中的“遗憾原则”,采取分步前进的办法,“容悖容憾速次优”(注:这句话是指“容许矛盾存在,容许遗憾存在,追求速度,希望得到较好(但不是最好)的结果”。这是遗憾原则通俗的表达形式。)。首先在现有的开放源码的操作系统上搞出一个可以用的操作系统,它的功能可能不很强大,但是可以解决日常应用的大部分问题,然后进一步优化它的性能。
国外以往的实践表明这是一种成功的战略。Linux 系统就是这样发展起来的。刚开始,托瓦尔兹只是在Minix的基础上编写了内核, 并且采用了GNU的C编译器和Bash外壳程序。有了这样一个系统雏形后,他和其他因特网上的开发人员协同工作,才逐步使Linux 系统成为一个成熟的操作系统。
实际上,不仅Linux系统是这样,连Microsoft走的也是这样一条道路,也是从最初简单的MS-DOS逐步发展完善,才一步步推出Windows 3.X、Windows 9X和Windows NT等等。
所以,这两个系统的开发都不自觉地运用了遗憾原则,并灵活地运用了“容悖容憾速次优”方法论。不同的是, 在开发模式上Microsoft采用了“大教堂式”封闭开发模式,而Linux 则在因特网的基础上采用了“大集市式”的开放开发模式(雷蒙曾经写过一篇题为“大教堂与大集市”的文章,精彩地评论了这两种模式之间的差异,有兴趣的读者可以查阅:http:\www.tuxedo.org/~esr/writings)。
怎样在中国开展开源软件运动
在中国开展开源软件运动可能与很多因素相关,笔者认为最关键的有以下几点。
政府的作用
政府应该对开展开源软件运动给予大力支持,包括产业政策的扶持、风险投资市场机制的培育等。由于软件产业是“智力密集”和“劳动密集”的双密集行业,因此政府在税收、管理方面应该考虑解除约束开源软件发展的条条框框,鼓励个人的创造性和积极性,使开源软件运动能有一个宽松的外部发展环境。在这方面,印度的先进经验值得借鉴。
科研领域
科研领域一直是开展开源软件运动的大本营。 由于开源软件在性能和开发费用等方面的优势,应用开源软件取得巨大成功的例子不胜枚举。Linux的内核很小,可以作为嵌入式操作系统使用。以Linux为基础开发的嵌入式应用系统已经应用到航天飞机上。
教育领域
教育领域应该是推广应用开源软件的前沿阵地。目前要解决的主要问题,是尽快在高等学校中开设相关课程,将开源软件的设计思想和工具直接纳入教学计划和教学大纲。有条件的学校还应该直接系统地引进国外的先进计算机专业的教材,进行一步到位的教材改革。在这一方面,中央广播电视大学已经走在了许多高等院校的前面,他们已经根据自己的特点,系统地引进了美国奥莱理(O'Reilly)公司的UNIX操作系统、Perl语言程序设计等方面的大批著作作为教材,并且纳入到教学计划中,这对全国高等院校的计算机专业的改革会产生推动作用。
技术支持服务
目前的网络硬件和软件已能为许多公司和个人承受,而且市场上具有大量的公司和个人需要接入网络。但是要保持网络的正常运行,则需要有大量的系统管理、网络管理、万维网页面设计、网络数据库的建设与维护等方面的技术人员。目前市场上这类人才奇缺。《Linux 期刊》(Linux Journal)这样的专业刊物上经常介绍大量的技术支持公司, 可以想象,这一市场需求将创造出许多商业增长点。