我国是全球IT产业发展的后起者,我们肩负为我国IT产业生存、发展和提升而博弈的历史重任。走自主创新之路,将是这场博弈胜出的关键。
集成电路和软件是IT产业的两个支柱。近年来国内围绕这两个支柱产业的创新历程为:在集成电路方面,国内自主开发了中低端通用微处理器(CPU)、芯片集成系统(SOC)和数字讯号处理器(DSP)等芯片,当然这些芯片的集成度较低,大约比国际高水平还差一个数量级。如龙芯II号相当于奔腾IV中档,其集成度约为107个晶体管,而国际水平为108个晶体管。但毕竟我们从无到有,完成了上述一系列芯片开发创新的全过程,即完成了科研创新、设计创新,以及工具创新、工艺创新和工程创新全过程。必须指出,工程创新的难度比科研创新的难度要大得多,有人预测工艺创新难度约为设计创新难度的10倍。
国内软件创新工作现状
系统软件是最基础、最核心、创新难度也最大的软件,可将它作为软件创新的代表。系统软件一般为操作系统、数据库、编译器和工具、编程环境、中间件等,其中操作系统又在系统软件中处于龙头地位。
中国要自主开发操作系统或系统软件,难度很大,必须走开源软件创新之路,从开源软件创新中找机遇突破;而要进行开源软件的创新必须实行体制创新。
目前国内虽然推出了几款Linux操作系统发行版,但自主创新的技术含量不高,总体上还处于学习模仿阶段,缺乏深层次的研发能力。在先导的社区开发创新(即“集体开发”、“合作创新”)阶段,国内个别人虽然曾向国际开源社区递交了诸如“Linux虚拟服务器(LVS)”、“入侵检测系统(IDS)”等修改的软件包,但作为社会或企业的志愿者向国际开源社区的贡献还属凤毛麟角;而在后续的企业开发创新阶段,国内企业一般尚未能把握好工程化实现技术,工程经验很少。中国开源系统软件应该从模仿走向创新,在“合作创新”基础上扩大“自主创新”。
两种共生技术
人们常常陷于一个思维误区:“开源软件是由全球志愿者集体开发的,遵循开源许可协议,其全部源代码是开放的,任何人均可自由获得”,而“全部源代码的开放也表示其全部技术是公开的。”他们不明白,开源软件不能再停留在其早期“自由的理想王国”里,仅供“黑客”、“玩家”们当“玩艺”;开源软件要取得持续发展,必须探索并形成自己的商业模式,惟有具备商业模式的开源软件才是成熟的,才能处理好如下矛盾,即:既不违反开源许可协议,公开全部源代码;又能不公开自己的专有技术,保守自己的商业秘密。事实上,具有商业模式的开源软件,其技术创新并不完全表现于具有自由开放特点的科研创新和设计创新之中,即并不完全表现于开放的源代码之中,它还表现在具有技术不公开特点的工艺创新和工程创新之中,即表现在与源代码无关的工程化实现技术之中。这就是说,开源软件的全部技术是由以开放源代码所表征的公开化技术,与不公开的工程化技术两部分组成;并由这两部分技术组成开源软件的共生技术。所谓工程化技术是一种实现技术、优化技术、隐性技术,主要表现为技术诀窍(Know-How)或熟练技巧(Skill)、工程经验、系统底层技术的把握等隐性知识方面,它主要关注于:改善操作稳定性,优化计算效率,增强灵活扩展性,提高产品质量,催化产品成熟度。
双重创新模式
与一般企业的私权软件创新模式不同,开源软件首先采用由志愿者进行“集体开发”、“合作创新”的新模式,这种创新模式实行“源代码开放”、“技术公开”;但是仅靠这种模式还不足以开发出开源软件的全部共生技术,也不足以向市场推出优质高效、操作稳定、技术更趋成熟、竞争力更强的开源软件产品。实际上,开源软件针对开发工程化技术,还需要另一种“自主开发”、“自主创新”、“具有自主知识产权”的创新模式来跟进和补充。开源软件的双重创新模式,即“集体开发”、“合作创新”与“自主开发”、“自主创新”两种模式是互补的、互相衔接的、不可分割的;也可看作开源软件开发创新过程的两个阶段。
近年来国内企业开发并向市场推出一批开源软件产品,取得了长足进步;但某些企业还沿袭旧的封闭的开发模式和机制,他们在“社区版”上进行剪裁、移植或者进行简单修改,属于自主开发创新的成果还不多,基本上还处于学习、模仿阶段。国人在开源软件“集体开发”、“合作创新”活动中,向社区提交自己修改、创新的源程序代码行尚属凤毛麟角,对开源社区抢占算法方面的贡献还很微小,有人认为,国人尚未进入这个开发创新模式的核心圈。
两种开发机制
为了加快中国开源软件的发展,需要建立开源社区,形成社区开发和企业开发两种互相支持、互为补充的开发机制。
在开源社区,具有“集体开发”、“合作创新”、“技术公开”特征的创新体系,偏重于科研创新和设计创新,它是建立在自由开放的互联网平台上的,很多创意通常自下而上来自底层的全球志愿者;社区负责对志愿者提交的软件包,进一步作“选包、打包、集成、测试”循环的创新活动并实施资源管理。在社区创新体系之外,还需一个后续的企业创新体系与之互为补充,企业创新体系偏重于工艺创新和工程创新,具有“自主开发”、“自主创新”、“技术不公开”的特征,它是建立在企业内部开发部门或企业局域网平台上的,其创新的任务是向市场推出满足用户需求的产品,计划通常自上而下,开发者是企业专业技术队伍。他们在利用开源社区创新成果的基础上,重点做工程化、产品化、系统化、完善化、稳定性和性能优化的创新工作。在开源系统软件领域内,工程创新的难度比科研创新的难度大很多。
产品平台和生态系统
对于开源软件,孤立地开发或推出一个产品(发行版)是不够的,必须形成围绕该产品平台的生态系统,即要把大量软件(特别是应用软件)移植到这个产品平台上来;该产品要能预装到一些必要的硬件体系结构中去;要能与众多外围设备匹配衔接。而移植、预装、匹配是需要做大量测试、修改以及再开发工作的,涉及成百上千个企业协同工作,需耗费大量人力、物力、财力和时间。为做到这一点,首先必须开发出在全球能进入“主流”的产品,否则要吸引全球广大企业、社区的支持,共同来营造一个生态系统是不可能的。当然在营造生态系统过程中,不能用纯技术观点来看待这个问题,在争取广大企业、社区支持时,特别要争取拥有丰富资源和影响力的跨国公司的支持,为此我们要做好协调工作。
(作者系中国开源软件推进联盟主席)