对国产操作系统发展的一些思考
跟行业内的朋友交流,对国产操作系统的开发和推广,有一些个人的观点,分享出来,欢迎朋友们批评和讨论。
以下是我个人的一些思考,基于个人对行业的粗浅理解,以及个人在推动物联网操作系统时遇到的问题的总结。观点不一定准确,有的甚至有些偏激,目的在于交流碰撞,“抛砖引玉”,以形成更好的思路,把我国的基础软件事业做得更好。
物联网是一个绝好的机会点
个人PC电脑,智能手机,已经形成稳固的垄断局面,并形成了相对完善的产业链和生态系统,按照Gartner的Hype Cycle技术曲线,个人电脑和智能手机已进入稳定成熟的产品化应用阶段,切入的成本会非常高,而且成功的概率非常低,因此不建议发展该领域的操作系统,而是采取研究和微创新的原则,把现有的成熟操作系统(Windows,Linux,Android等)理解透,具备内核级的定制能力。同时结合具体应用,在某一个核心点上进行加强,比如安全和可靠性等。
而物联网则属新兴行业,其特征尚不明朗,存在巨大的机会。纵观系统软件的发展历史,可以看出任何一款成功的操作系统,必然是在一个硬件(或应用)转折点上发展起来。最初的大型计算机,促成了UNIX的发展壮大,而以文件服务器为核心的局域网时代,则促成了NetWare的发展和壮大。再后来到了个人计算机时代,强调简便易用和图形处理,于是Windows发展起来了。接下来就是移动互联网及处理器技术大发展,智能手机具备了基础的应用环境,于是iOS和Android发展壮大了。所有这些机会,中国都没有抓住。这与当时的经济水平和国内整体软件水平也有关系。
现在到了物联网这个转折点上,历史又给中国的系统软件事业创造了一个千载难逢的机会。首先,物联网所具备的特征(硬件碎片化,本地交互协同,智能硬件具备自学习能力等),传统操作系统无法满足。就连Linux的创始人Linus也承认,Linux无法适应物联网这种碎片化的应用环境,需要寻找另外的替代方案。其次,我国的经济已经发展到足以支撑在基础软件领域大有作为的水平,整体行业的认知,国内的消费和应用,都为操作系统提供了坚实的应用环境。最后,经过十几年的学习,实践和积累,中国已经具备了很高水平的基础软开发和理解能力,尤其是操作系统,在技术上已没有太多的门槛。如果能够有效地整合起包括民间和国家层面的开源力量,必然能够开发出非常优秀的操作系统。
在这样一个“天时,地利,人和”具备的机会点上,如果我们能够抓住,那么很可能会做出“两弹一星”,“中国航天”,“电信高铁”等一样的水平,为中国民族的复兴做出可以铭记的贡献。
坚持自主创新,自主开发,代码开源
操作系统本身就是一堆程序,本身的价值不大。但是它却凝聚了对行业的理解和沉淀。因此,要开发自主操作系统,必须对操作系统应用的行业,要有一个深切深入的理解,或者对行业未来的准确判断。把对行业的理解和判断,以代码的形式表现出来,沉淀到操作系统当中。这样逐步积累,修订,完善,改进,最终就会达到质变的临界点。
而要做到这一步,唯一的手段就是创新。通过与行业进行广泛深入的交流,综合,提炼,抽象,形成共性的观点,架构,算法。然后把这些东西固化为代码,就形成了具备灵魂的操作系统。这就是创新。只有在这些创新成果的支撑下,操作系统之间才能形成差异化和竞争力,才会逐渐的凝聚上下游的合作伙伴,最终形成一个生态链。
而这部分基于创新的开发工作,是无现有成果可以借鉴的,而且这部分开发工作,也是占操作系统开发比重最大的部分。
对于成熟模块的开发,比如内核,关键的硬件驱动程序,文件系统,GUI等,个人的观点是尽量不要借用开源实现,而是自行从头开发。主要有下列考虑因素:
1. 虽然这些模块的功能相似性非常大,但是在迎合一些关键需求的时候,还是会表现出巨大差异。如果借用开源实现,很可能会出现与应用无法调和的矛盾;
2. 尤其是内核,当前行业已经形成了一种印象,只要是借用成熟内核(比如Linux),就不是自主开发的,哪怕自主开发的代码大大超过了内核本身。相反,如果自主开发一个内核,在此基础上,移植业界已有的外围模块的实现,哪怕内核代码占比微不足道,也会被认为是自主开发。因此,自主开发内核,尽量借用已有外围实现,是一种可行的策略;
3. 基础模块的开发成本和难度都不会太大。一个功能完善的内核,其代码量不会超过100万行。这样的工作量,对大多数有志于操作系统开发的单位或公司,都是可以接受的。
当前开源文化已深入人心,通过开源,可以充分调动大量的开源力量投入进来,一起完善和优化操作系统。虽然真正能够贡献核心代码的支援力量非常少(按照我个人的统计,大约200:1),但是大量的使用者和测试者,可以帮助快速发现问题,帮助产品快速完善成熟。
内部可以保留一份非开源版本,在安全上进行深入优化,迎合一些对安全需求苛刻的应用场合。
产业链的构筑非常关键,但是也没有想象的那么难
广泛的产业链支持是操作系统成功的关键,包括应用程序层面的产业链,以及硬件支持方面的产业链。对于个人计算机操作系统,以及智能手机操作系统,应用产业链是核心,其重要性远远大于硬件产业链。但是对物联网这种应用场景,主要瞄准的是机器与机器之间的交互,机器与人之间的交互需求大大降低,因此应用层面的产业链反而不是非常关键,但是硬件产业链却非常重要。
要得到产业链的支持,尤其是硬件厂商的支持,根据我个人的经验,开发的工作量不是很大。譬如一个网卡厂商,为一个新的OS适配一个驱动程序,一个熟练的工程师,一个星期基本可以搞定。这点成本是微乎其微的。
但最大的门槛,还是“认同”。如果自主研发的操作系统具备核心价值,这种核心价值能够得到认同,那么自然就会有越来越多的厂商靠拢过来,逐渐就会形成一个产业链。因此,归根结底,操作系统成功的要素,仍然是“选中应用场景,做出核心价值”。