软件是IT产业的重要支柱之一。国内软件发展的突出问题是软件的创新路线问题。我们以系统软件的创新来作分析,系统软件是最基础、最核心、创新难度也最大的软件,系统软件一般指操作系统、数据库、中间件和软件的开发工具、编译器、编程环境等,其中操作系统又在系统软件中处于龙头地位。
开发一个大型操作系统,难度很大。我们以微软开发的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文件系统的软件模块。我们这里强调的是“重视社区开发”、“重在参与”、“需要更多的国人参与”、“从中积累工程经验、增长才干”。
|