开发一个大型操作系统,难度很大。我们以微软开发的Windows-Vista及其新版的Office为例,微软投入了9000多个开发设计人员;投入80-90亿美元开发资金(有人估计,围绕与Vista的配套,微软及其合作伙伴投入的开发资金约为其2倍,即160-180亿美元),如此,Vista及其新版Office的开发资金总计约为240-270亿美元;开发工作历时6年。微软于去年7月份推出Windows Vista Beta 1测试版,今年5月23日推出了Vista Beta 2测试版,并计划于2007年1月向全世界发布Vista正式的产品版。应该说Vista的开发,对微软历年来推出的Windows版本有一定的继承性,微软为了开发、提升新的性能,也为了防止别人“兼容”仿制,不惜重写了近60%的源代码。微软在开发、测试Vista过程中,曾发现27628个程序缺陷(Bug),虽然不断进行改正(或是打补丁),但至今(截止7月5日)尚有5700个程序缺陷未获解决。比尔•盖茨本人对明年1月能否准时(不再拖期)正式发布Vista产品版也没有信心。
Windows操作系统是一种私有的商业软件,从技术上看,不可否认它是一部伟大的作品(或一种知名品牌的产品),但如果按照Windows-Vista如上的开发条件,无论从财力、人力、时间的投入上看,目前中国是不具备自主开发大型操作系统条件的。
为了开发自主创新的操作系统,只有另辟蹊径,走开源软件创新之路,以便充分利用开源的软件资源,在巨人的肩膀上继续攀登,才有出头之日。
目前国内企业虽然推出了几款Linux操作系统产品的发行版,作为开发这种产品的起步,其成绩当然要加以肯定,个别版本也较突出,但总的来说,自主创新的技术含量不高,还处于学习、模仿阶段,缺乏深层次的研发能力,一些企业或组织还多少染上浮躁、炒作的毛病。关于国内研发的“某某”操作系统,有人认为它违反了自由/开源软件许可协议,属于作假、侵权行为,它把本来从伯克利(BSD)移植来的大量源代码资源宣称是“自主开发”的成果,起码也未按FreeBSD许可协议对资源的来源作出公开声明;对其真正自主开发的东西所占比重多少,在评估上也有争议,至少关于工程化实现技术的自主开发较少触及。一些企业主要是做下载国际开源社区公开的源代码,作简单的代码迁移,比较深入的也不过利用多次测试、纠错的成果,打补丁作一些相应的改进;面对两个“BSP”未能进行深入开发。一个BSP,即“主板支持包系统(Board Support Packages)”,意思是指:当把一个操作系统移植到一个新的硬件平台上时进行的(驱动)软件(及源代码)的开发工作,国内一些企业尚未触及,另一个BSP,即“大量同步平行计算技术(Bulx-Synchronous Parallel)”,国人虽然开发了“服务器集群的并行虚拟网络服务系统”,并已由国际开源社区登记,但我们的企业尚未在自己开发的Linux操作系统中采用;至于目前在国外开源操作系统中当作技术潮流而开发的“IT虚拟机技术”(Fedora、OpenSuSE等社区已开始使用),国内企业更未触及。在开源软件的内核开发方面,国内企业一般只是简单地移植“官方内核(Official Linux Kernel)”,并未根据自已的使用条件和应用领域,对围绕官方内核的“上载模块”进一步作度身定制、重新编译,以便开发一个增加许多新特性,并更稳定、更高效的内核出来。国外知名的Linux企业(如RedHat、Novell等),在其发布版中公布的内核源代码与官方的内核源代码之间,存在约3-5%的偏差(他们并不是简单移植,而涉及到他们在最短期间内在很多不同来源的补丁中选择的最佳补丁),这是为了他们消除产品缺陷,进一步优化产品性能的目的。官方内核监护人Andrew Morton跟我说,对这种偏差的“度”的把握,主要是依靠工程经验。相对而言,国内企业在开发中,往往忽视工程化实现技术,尚缺乏把握偏差“度”的能力,因而并无偏差设计的举措。国内一些人尚未弄明白:开源软件开放式的开发机制不同于传统产品(包括传统私有软件)封闭式的开发机制。开源软件的开发过程是:首先建立开源社区(目前在国内自建开源社区尚缺一些必要条件,只能先利用好国际开源社区的机制),由开源社区组织全球“志愿者”(或企业、测试基地等组织的“Linux/OSS技术小组/中心”)进行“集体开发,合作创新”,并将与产品全面性能相映射的全部源代码实行公开、开放。这是开源软件开发过程中的先导的社区开发过程。国人或国内企业只有持续参与社区开发的过程,才能深入了解整个开源软件(产品)的全部隐性技术,即设计思想、设计原理、体系结构、顶层设计(全局概念)和工程经验等;了解“志愿者”递交并为社区录用的“软件包”在整个“开源操作系统树(Linux Tree)”中的位置、历史变迁和影响,了解各软件模块间的协同、耦合、调用的关系,以及它们的配置效应;并从中增长自己的经验和才干。这种亲身参与和从此积累的工程经验,是在以后完成后续的企业开发过程中所必不可少的。目前我们为国际社区所选中的“抢占性(Preemption)”的“代码行”(或“软件包”)的人数,或为国际社区登记加入“开源操作系统树(Linux Tree)”的“代码行”(或“软件包”)的人数还很少,可喜之点,近年呈逐步上升的趋势,如“Linux虚拟服务器(LVS)”、“灰狐社区”的“Jfox应用服务器”、“智能通用输入法”等已为国际社区注册登记;特别要指出的是:国人对ext3文件系统改写的部分代码,对USB串行总线改写的部分代码,以及“Linux虚拟服务器(LVS)”等开发项目已进入了“开源内核(Linux Kernel)社区”。目前关于在最大的国际社区Source Forge开发平台上立项并主持有影响力的系统级项目的人,国人也已实现了“零的突破”,而且多起来了,国人关于“Windows驱动软件模块”在Sourge Forge上的立项,已引起全球广泛的关注,这个项目是能在Windows环境中读写Linux ext3文件系统的软件模块。我们这里强调的是“重视社区开发”、“重在参与”、“需要更多的国人参与”、“从中积累工程经验、增长才干”。
如果开发过程停留在社区开发阶段,这时的社区发布版虽然已可展示产品的全面性能,但操作尚不稳定,计算效率也未优化,灵活扩展性不够,质量有待提高,产品成熟度也待催化。为了开发出稳定、优化、成熟的产品,必须紧跟着一个后继的企业开发过程,这样才能形成完整的开发过程。在“社区开发”基础上的“企业开发”,主要开发“工程化实现技术”,是具有“自主开发、自主创新”性质的。当然其中也含有“核心技术”。我们要再次强调,只有广泛持续参与社区开发过程并从中积累经验、增长才干,才有可能在企业开发(即工程化实现技术开发)中取得成功。对于这一点也是很多人不明白的。Ubuntu社区的创始人Mark Shuttleworth曾给我写信,Ubuntu的桌面或服务器Linux发布版(产品),虽然源代码是全部开放的(与源代码相应的核心技术自然也是公开的),但它还含有不开放的核心技术,并可以进行技术转让。其所谓“可转让的核心技术”,主要就是体现在“工程化实现技术”中。
我过去就曾多次指出,自由/开源软件的全部技术是由全部开放的源代码所表征的公开性技术和不公开的工程化实现技术(或专有技术、隐性技术、工程经验、测试技术和商业秘密)所构成的共生技术。共生技术的两部分都含有核心技术,一部分是公开的,集体开发、合作创新的;另一部分是不公开的,可进行自主开发,自主创新的。
国外一些Linux企业对其某些自动编译工具,自动缺陷显示工具,在CD盘上软件模块自动集成环境,以及某些自动测试工具,一般也是不开放的。
孤立地推出Linux操作系统(产品)还是不够的,它必须要与IHVs、ISVs、SIs配套、集成,形成生态系统,即在相互连接的界面上要实行兼容、互操作,为最终用户提供共同的技术支持,为此必须让这些配套厂商对Linux操作系统进行严格的“质量认证”(测试工作),从认证测试中发现问题,进一步修改完善设计,这是改进产品性能,提高产品质量必不可少的条件(顺便指出,测试技术是开源产品开发设计的重要手段)。目前,一些国内的Linux厂商正在与国内外有关配套商协同展开这方面工作,但工作展开面还远远不够。
另外,开源软件的产品性能还存在一个不断改进、完善,不断深化、升级的动态过程,因此要持续不断进行“社区开发”与“企业开发”两个相互衔接、互相补充、不断循环的开发过程,要在开发设计的不同阶段开展各种测试(专项测试、开发测试、编译测试、二进制回归测试、社区版测试、产品版测试、用户质量认证和应用测试)和纠错工作,以及不断按生态系统进行集成测试和纠错工作。以便改进、完善、提升开源软件的开发设计。
一些外来的Linux操作系统(产品发布版),由于对中文环境的二次开发不足,在国内本地市场上的适用性也遇到一些问题。
提高国内开源软件开发设计水平,要从大学生的教育培训抓起。近年来,国内已有上百所大学开设了Linux/OSS课程,这是可喜的现象。我看关键是要培养学生的“动手能力”,初步积累“工程经验”。斯坦福大学的做法值得我们借鉴:他们选择一个最小化的Linux操作系统(约100K左右),辅导学生开发设计(一个学期能出成果),目标是要放在PC机上能跑,(而不是在仿真/模拟器上跑)。
总之,自由/开源软件是一种低成本(由于全部源代码开放,构成整个软件的“程序”,以及“文档”,通常是可以免费的)、高透明(可增加用户信任度)的软件;是鼓励全球志愿者广泛参与开发的软件;在自由/开源软件中,存在着公开与不公开的共生技术,存在着“社区开发”和“企业开发”衔接互补的两种机制,具有“集体开发、合作创新”和“自主开发、自主创新”共存的特点。我们要澄清一些概念,理清思路,抓住机遇,明确创新路线,发展开源软件,并推动我国系统软件的自主开发创新。
(作者系中国开源软件推进联盟主席)
作者:陆首群出处:天极网
--------------------next---------------------