铁流
很多人都对国产操作系统“恨铁不成钢”,但开发一个成功的国产操作系统,真没有想象中容易。
一直以来,国产操作系统都是网络上某些人攻击和非议的对象,力图用这个领域的例子来证明,中国科学技术水平和工程应用水平低下。
比如,最常用的一个例子是,虽然在军事、科研等特殊领域,国内不乏自己的操作系统,但在通用操作系统上,不要说寻常百姓的家用电脑,即使是很多党政机关和企事业单位,依旧在使用微软的Windows操作系统。
开发一个中国自己的通用操作系统,为什么这么难?到底难在哪里?
整体来看,开发国产操作系统,要面对的是9座大山。
一、工作量巨大
最能直观体现这一巨大工作量的指标,是代码的行数。
举例来说,微软的Windows XP系统有4000万行代码,Windows Vista和Windows 7 则达到了5000万行;
开源系统Linux这边,3.6版本的Linux内核代码有1590万行,而Linux的发行版Debian系统代码行数更是多达恐怖的6500万行。这还是经过软件厂商反复精简的结果。
几千万行代码的工作量是个什么概念?举个参照系吧,很多人在用的金山办公软件WPS代码行数约150万行,而金山软件公司重写这个百万代码级别的WPS,用了3年时间。
操作系统代码行数并非越多越好,而是在保障相同功能的情况下,代码越精简越好,像塞班系统代码行数突破3500万行,却因代码臃肿,对代码的维护性和扩展性造成了负面影响。
所以,写完代码后,如何反复精简代码,保证系统功能的最优化,又是一个巨大的费时费力的工作。
二、深厚积累和持续迭代演进
开发操作系统最难的工作就是做一个自己的内核,而系统内核分成很多模块,每个模块的划分、协调都是非常复杂的工作,技术门槛比较高,需要有非常深厚的技术积累。
现在我们耳熟能详的操作系统,都是几十年技术积累和站在巨人肩膀上的产物,而非凭空冒出来的。
举例来说,手机上用的最多的安卓系统是基于Linux的二次开发,苹果iOS系统是基于FreeBSD/Unix的二次开发,Linux和iOS追根溯源则都是Unix。
当然,开发操作系统在技术上也并非绝对高不可攀,相对于和军用关系密切的地理信息系统软件及一些图形处理软件,门槛还是略低一些,有一定数据结构知识和硬件知识就可以胜任,并不需要复杂的数学推导和运算。
但即便如此,操作系统的开发周期仍然很长,而且是一个迭代演进的过程。
微软在1985年推出Windows1.0后,经过Windows2.0、Windows3.0、Windows3.1、Windows NT、Windows95、Windows98、Windows2000等操作系统演进迭代,才于2001年推出一代经典的操作系统Windows XP。
Linux、FreeBSD也是以Unix为基础,经过几十年的开发和更新,才发展到现今的水平,而谷歌和苹果以Linux、FreeBSD为基础,他们的操作系统也是一代代发展的。
因此,在缺课太多,差距过大的情况下,需要的是循序渐进和厚积薄发,试图在短时间内实现赶超,妄图一口吃成胖子的科技大跃进,显然不可能。
三、国内软件产业既胖且虚
除了技术上的难题,开发国产操作系统还面临大量产业和行业性问题。比如中国软件产业整体大而不强的现实。
软件产业强大与否,并不是取决于该国程序员数量,更不取决于软件产业创造的GDP,而在于产业标准制定权以及是否拥有核心技术。
标准方面,国内软件业从教学到产业,基本上跟着西方的技术标准走,没有自己的一套技术标准。像程序员常用的编程语言、编译器、软件开发工具,基本上用的都是国外产品。
核心技术方面,以我们每天都用的手机和浏览器来说,国内各家公司推出了不少浏览器,但基本上是国外浏览器的“马甲”,所谓的国产浏览器都没有国人自己编写的浏览器内核。
手机操作系统也是如此,虽然很多国产手机都有诸如Emtion、nubia之类的系统,但这些还都是安卓操作系统的马甲,只能算是一个UI(系统界面)。
类似的例子还有很多,虽然中国软件产业和互联网企业创造了海量的GDP,演绎了一批造富神话,吸纳了大批就业岗位,但依附于西方技术标准、没有自己编程语言和软件开发工具、应用软件强而基础软件弱,已成为中国软件产业的内伤。
四、高端技术人才匮乏
“一流人才漂洋过海,二流人才北京上海”,虽然很多怀有理想的志士依旧留在国内做科研,但中国高端技术人才流失是不争的事实。
缺课太多,差距过大,国产操作系统妄图一口吃成胖子的科技大跃进显然不可能。
在高端技术人才大批量流失的同时,国内大学和公司的人才培养却不尽如人意。
标准制定上的缺失使中国软件业基本依附于西方的技术体系,国外巨头和中国各个大学堪称典范的“合作”关系下,大多数的学生只是在学习,如何在西方搭好的技术框架下做“填空题”。
此外,中国软件产业还有相当大一部分程序员在从事外包服务,简单地说就是国外程序员不愿意做的,认为是简单重复劳动的低端工作,大多数都是中国的程序员在做。
一些久经磨砺的资深程序员虽然技术精湛,但在国家和国内软件巨头没有标准制定的顶层设计情况下,单凭自己或小群体的力量无力制定标准,基本上是跟着国外技术体系走,国外出一个新技术、新标准,就一窝蜂去学。
至于构建自己的技术体系,这项技能基本沦为“屠龙之技”,大部分学校在教学上根本不重视,即使巧遇良师或自学成才,国内除军工企业、国防院校、科研院所之外,也很难有用武之地。
另外,国内软件业的行业环境也加剧了高端技术人才匮乏的状况。
国外程序员一般情况下,职业生涯只做一方面的技术,学习掌握该技术,下半辈子基本上就写程序了。
国内程序员因为企业经常跟着项目走,技能多而不精,而且不能写一辈子程序,大多向管理层转型。之后,就不再从事或者很少从事一线开发。
这些现状使国内软件产业很难培养出技术精湛的程序员,培养磨砺出来的资深程序员却转向管理层,进一步加剧了技术人才匮乏的现状。
五、操作系统人才捉襟见肘
软件产业整体的高端技术人才缺乏,再具体到操作系统领域,人力资源方面就更捉襟见肘了。
一般来说,国内操作系统公司的开发人员,大一些的有三、五百人,小的甚至不足百人。
体制内的科研院所、国防院校、军工企业中确实有很多人才,技术能力很强,但各自的科研任务负担都非常重,国防和信息安全任务已经把他们压得喘不过气来,根本没有多余的精力去解决民用方面的技术问题。
此外,有一部分体制内单位还存在人才流失问题。体制内很多人都是怀着理想和信念在奋斗,但理想信念不能当饭吃,赚取收入的时候“讲牺牲奉献”,养家糊口的时候“讲市场规律”,这让一般人无法长期坚守。随着年纪的增长,家庭、生活压力越来越大,很难抵御跳槽后收入翻倍的诱惑。
形成鲜明对比的是微软,一个公司就有将近10万员工,当年有Windows95、Windows98等系统的技术积累的情况下,依旧集中了5000余名程序员开发Windows XP。
Linux虽然不靠任何一个商业公司支持,但是由于目前已经被广泛应用和认可,不但已经得到全世界程序员共同维护,红帽公司、英特尔、IBM、甲骨文、微软等国际巨头也积极参与其中,同样具备很强的持续研发能力。
六、研发资金相对不足
在资金方面,一个成熟的操作系统的开发往往延续数年,比如微软在2014年的研发成本超过100亿美元,在开发Windows Vista所花费的研发费用更是超过了200亿美元。Linux内核开发根据人员投入的规模测算,也耗资数十亿美元。
而与Windows Vista、Fedora9大约处于同一历史时期的国产银河麒麟操作系统,其在内核方面的自主技术的比例算是比较高了,但研发经费也仅为4000万人民币,当时的汇率还是1美元等值8元人民币。
由国防科大领衔研制银河麒麟,经费尚且如此窘迫,国内其他小公司就可想而知了。
更糟糕的是,在与国外巨头人力和财力资源差距如同鸿沟的状况下,国内各家研发操作系统的公司还在各自为战,技术路线并不统一。
目前,国内有10多家做操作系统的公司,但每家公司各有各的打算,始终无法形成产业联盟。虽然基本上都是基于Linux的二次开发,但有的是走红帽技术路线,有的走Debian技术路线。这使得人力资源和财力资源原本就非常有限的情况下,研发力量被进一步分散削弱了。
七、趋利避害使企业避重就轻
对于企业而言,市场经济时代商业利益至上,对于国内某些商业巨头而言,承担社会责任,做一个独立自主、安全可控的操作系统并不是他们追求的目标。
此外,在技术层面上,自主技术越多,那么和现有的软件体系兼容性就越差;反之,兼容性就越好。在以市场化运营为导向的标准下,自然要能兼容现有的软件体系。那么,这样的操作系统就自然不可能有太多自己的东西。
举例来说,国内除体制内单位外,软件技术实力最强的就要属BAT等互联网巨头以及华为、中兴、东软等厂商了。
虽然华为和中兴居2014年中国软件收入排行榜第一和第二位,但技术长于通信领域,开发通用操作系统非其所长,在商业利益的驱使下,华为和中兴手机的操作系统其实就是一个基于安卓的UI。
BAT等互联网巨头推出的操作系统,则主要是为了跑马圈地,抢端口,赚快钱,而不是为了实现信息安全和自主可控,自然不可能选择长周期、高投入、高技术门槛的自主研发之路,基于安卓的二次开发就成为理所当然的选择,编写的代码仅限于重写了虚拟机。
商业上的趋利避害还加剧了国内应用软件强,而基础软件弱的现状,比如中国写Java的程序员有上百万人,写JavaScript的程序员也有上百万人,写QT的也很多,但Java虚拟机、JavaScript引擎、QT库却没多少人干。
八、有系统无应用,软件生态难构筑
单单有一个操作系统而没有软件生态是没有意义的。
操作系统仅仅是一个平台,丰富的软件生态才是操作系统的活力之源。
什么是软件生态呢?比如即时通信软件、网络支付软件、浏览器、Office办公软件、Flash、各种游戏等等。没有这些软件,用户就无法网络聊天、上网、办公、看视频、玩游戏,只能对着“我的电脑”桌面图标发呆。
软件生态的构建需要软件厂商的配合,而软件厂商不是“活雷锋”,只有当某个操作系统市场占有率达到一定程度时,软件厂商才会帮忙适配软件,这样就形成了一个悖论——软件生态贫乏,导致操作系统用户数量很少,而市场占有率小的情况下,软件厂商不会主动帮忙适配软件。
以微软这个桌面操作系统霸主为例,因为Windows系统手机的市场份额非常小,导致国内外软件厂商大多不愿意给它开发手机APP,而软件方面的不足又使更多用户抛弃Windows手机。
因此,要构建自己的软件生态,最好是在无人涉足的新领域,比如当年谷歌和苹果涉足的智能手机领域,或者现在正兴起的物联网领域。
要在已经被外商占据的领域,发展出自己的软件生态,就只有花钱请软件厂商来帮忙了,而资金和人才恰恰是国内厂商的两大短板,根本没有财力去这样烧钱。这无异于陷入一个死循环。
九、市场推广难度大
即使是有了成熟的操作系统和一定软件生态的积累,要市场推广依旧不容易。主要有以下几个难点:
1、用户粘性制约市场推广。操作系统有一种属性——用户粘性,当用户习惯了某一个操作系统后,让用户换一种操作系统,甚至同一个操作系统换一个版本都会产生诸多的不方便。
这也是为什么微软的Windows系统已经发展到Windows 10了,Windows XP在中国依旧有庞大的市场占有率。
2、更换平台成本大。有一定历史的公司和单位都积累了大量的数据、资料和应用系统,这些数据、资料和应用转移到新的平台,不仅需要花费不菲的金钱,还有一定的技术风险——是否会造成数据和资料的损毁和丢失,这是谁都不敢打包票的事情。
3、预装国产操作系统的计算机无法被用户接受。因为Windows在桌面市场的霸主地位,像联想这样的PC整机制造商基本上预装Windows系统,即使某些厂商预装了国产操作系统,但在销售过程中,零售商往往将预装国产操作系统的电脑安装盗版Windows系统出售。
4、盗版猖獗。其实国产操作系统最大的对手不是微软,而是盗版。盗版猖獗的情况下,哪怕国产操作系统免费使用,在市场中也很难推广出去。
形成鲜明对比的是金山软件的WPS,在国内曾经被盗版软件杀得溃不成军,但在知识产权保护较好的日本,金山以低于微软Office软件的售价,与微软的Office软件相当的功能,不仅占据了一定市场份额,还实现了盈利。