作者 | 徐星
责编 | 唐小引
出品 | CSDN(ID:CSDNnews)
写在前面
【CSDN 编者按】从去年中兴被美国禁止出口,到今时今日华为先后遭 Google、ARM 暂停合作,及海康威视、商汤等 5 家传统安防及 AI 公司再遭禁,我们迎来了中国 IT 产业的切肤之痛 —— 国内 IT 最短的那块板核心技术缺失就这样彻底地暴露出来了。谈到操作系统的研发,我们很早以前就明晰了亟需解决的问题:
国产操作系统若要强大发展,必须全面参与市场竞争,让企业在自由和充分的竞争中优胜劣汰,使国产操作系统的技术不断改善、应用逐渐丰富、用户规模日益壮大,三者形成良性循环;
必须要形成完整的生态系统,倪光南曾说过,国产操作系统不成功主要原因还在于生态系统,若要完善国产操作系统应积极整合软件开发者、芯片企业、终端企业、运营商等产业链上的各主体,构建起一个覆盖配件、终端、应用服务等诸多环节的完整的生态圈。
加大研发投入:国内软件产品起步比西方国家晚了近半个世纪。与国外相比,国内软件企业总体规模小、实力弱,在技术研发投入等方面与国外巨头公司相差较大,要想发展操作系统,人才、技术、资金一个都不能少。
但是国产操作系统却一直未能争锋,而现在,同时支持手机、桌面、平板、电视及可穿戴设备的华为的鸿蒙操作系统让我们看到了新的希望。不过,正如飞漫软件创始人魏永明的推演所言,“要么一飞冲天,要么完蛋”。在本文中,作者通过研究 Google Android 及 Fuchsia 总结出了 Google 在操作系统领域可复制的模式,仅做技术交流,如果你有具有建设性的观点及建议,欢迎留言互动:
基础操作系统的研发究竟有没有具体可行的方法论?
核心芯片缺失是全行业需要面对的问题。但是国内的基础软件尤其是基础操作系统也同样薄弱,而且国人早就认识到基础软件系统对企业和国家的战略意义。华为任正非为什么坚持自主研发芯片和 OS 操作系统[1],阿里马云做 AliOS[2],倪光南院士关于自主操作系统的评论[3],这些都是国内的行业精英们在为我们自主产权的操作系统呼喊行动 (基础软件包括操作系统、编译器、开发工具等等,本文讨论的基础软件主要指操作系统)。
在云计算和移动应用开发领域,国内外有很多成熟公开的研发模式,人才储备也很充分。但是,和云计算、移动应用开发不同,基础操作系统的研发并没有公开成熟的方法,对人才要求更高,研发周期长,资金投入大,产品还面临较高的失败的风险(譬如 Palm 的 webOS,微软的 Windows Phone)。
那么,基础操作系统的研发到底有没有具体可行的方法论?在国内,无论是 AliOS 还是其他 OS 或者 Android 衍生 UI,就目前的结果看,其采取的基础操作系统研发策略(主要是拿来主义)都是值得商榷的。Google 在 Android 和 Chrome 多年实践后,推出全新操作系统 Fuchsia,实现了一个量变到质变的过程,却让笔者意识到贡献比拿来更容易获得成长。
本文通过总结 Google 的这个量变到质变的过程,来探讨 Google 使用了什么样的方法和策略,从一个操作系统的门外汉成为一个操作系统的领导者。笔者认为,Google 在操作系统方面的成功,是可以复制的。
在国产核心软件缺失的这个大环境下,Google 在基础操作系统的蜕变能给国内基础软件系统从业者提供一些思路和方法。希望我们有企业能够复制 Google 的这个模式,从而带动国产操作系统的崛起。
为什么 Google 能再造一个 Fuchsia 操作系统?
首先,不得不承认的是,Fuchsia 是一个先进的操作系统。为什么这么说?操作系统是否先进,最基本的一点是要适应新的硬件和用户需求的变化(当然,是否成功则需要经受住时间的考验)。苹果 iOS 之所以先进,是因为提供了非常好的用户体验。Android 之所以先进,是因为适应了当时移动芯片上 GPU 越来越成熟,移动应用越来越复杂的趋势,从而能够实现更加流畅的体验。Chrome 之所以能够在浏览器市场独占鳌头,和 Google 在多进程多线程,GPU 等方面的优化分不开。
简单来说:先进的操作系统,要能够适应硬件的变化甚至影响硬件的变化,同时还能够适应新的用户需求甚至创造出让用户着迷的用户需求。
下表列出来笔者认为先进的一些系统和它们先进的两大因素:对新的硬件和标准的适应和影响,满足用户的需求甚至创造出让用户着迷的用户需求(譬如苹果最先推出的手指触摸和视网膜屏幕,其实就是在没有被广大用户呼喊的时候创造出来的)。
综合网上的各种评论和笔者对 Fuchsia 源码的解读,Fuchsia 的先进之处主要有:
实时系统;
新的用户体验,虚拟现实成为一等公民;
游戏成为一等公民;
Material UI(让界面更加真实的一种设计);
底层图形引擎基于最新的业界标准 Vulkan。至于对 GPU 和多核处理器的优化,Fuchsia 一样都不会少;
全新设计的语言 Dart。
Fuchsia 现有的体系结构虽然很先进,但是未来到底会如何,笔者现在没有能力去判断。我们能够知道的是,Google 已经具备了全新操作系统的设计能力。对于国内的业者而言,在这个十来年间,Google 是怎么从一个初入门者成为了一个可以自主设计全新操作系统的公司,这其实是可以学习甚至复制的,这才是值得国内企业需要深思和反省的。
Google 模式:从 Android 到 Fuchsia
Google 是一家强大的公司。在 2005 年 Google 收购 Android 之前,就已经很强大了。但是这个强大,是指云计算的强大。在客户端和移动计算,谷歌还是初入门者。
我们知道,想要得到一件东西,就必须付出代价,或者钱,或者时间,或者两者都需要。Google 为了获得在移动和桌面系统的话语权,抗衡苹果微软在移动市场和桌面的垄断地位,先是在 2005 年收购 Android[4],接着 2008 年从苹果 WebKit 浏览器独立出来创建了 Chrome[5](本文不去刻意区分 Chrome 和 Chromium 两个项目的区别。另外 Chrome 实现了很多操作系统才有的功能,所以作者也把 Chrome 当作基础的操作系统),2009 年创建 ChromeOS 项目[6]。
之后就是我们看到了的,在过去的十来年里,Google 对 Android 和 Chrome 持续不断的更新。这个十年,Google 看起来很张扬(毕竟 Android 已经占领了移动市场的半壁江山,每年新系统发布会也吸引了足够的眼球),但在基础操作系统方面,其实非常低调。无论是 Android,还是 Chrome、ChromeOS,或是从别处买来的,或是基于其他开源项目并不断的给这些开源项目贡献代码,Google 并没有张狂到去创建一个全新的 OS。
收购 Android 的大把美金,默默贡献代码的十年时间,这就是 Google 为了获得移动和桌面操作系统的一张门票付出的代价。十年磨一剑,终于在 2016 年,Google 开始尝试全新的操作系统 Fuchsia。如果说 Android、Chrome、ChromeOS 是 Google 告诉世界,我想学习下操作系统是怎么做的。那么,Fuchsia 就是 Google 对外界发出的另一个信号,我们已经具有独立研发一个全新的先进的操作系统的能力了。
为了具备开发全新操作系统 Fuchsia 的实力,Google 其实是从两个产品齐头并进:
Android:收购。然后在过去的十年里持续演进。
Chrome:开始的时候基于 WebKit,从一点入手,引入多进程架构。扩散到面:积极参与 WebKit 其他模块的开源工作、多媒体、图形等等。2009 年发布 ChromeOS。2013 年宣布 Chrome 切换到全新的引擎 Blink[7]。Blink 是 Google 对业界宣告,他们已经熟练掌握了浏览器引擎的核心技术。
Google 在 Android 和 Chrome 项目上埋头苦干了十年左右,Android 版本从 1 升级到 7(最新是 9),Chrome 则从 0 升级到了 50(最新是 68),所有这些,十年磨一剑,终于在 2016 年,从头到脚全新设计的 Fuchsia 出来了。
总结下所谓的 Google 模式,就是“贡献”主义,就是长时间参与开源,给社区贡献代码,培养各个领域的技术专家。等人准备好了,就可以直接做起新的操作系统了。
为什么是参与开源而不是像苹果 iOS 或者 2005 年之前的 Android 那样闭门造车?因为当时 Google 是一个后入者。后入者需要跟着前人学习模仿。而参与开源,与业内前辈高手过招,是人才最容易成长的方式。如果 2005 年谷歌不收购 Android,2008 年的 Chrome 是完全从头开始做的,我认为 Google 今天很难有今天这样的底气去做全新的操作系统。
中国模式
谈好了 Google 模式,我们来谈谈中国模式。笔者认为中国模式主要是先拿来,然后修改优化。
在这十年,国内出现了各种 Android 版本,Android ROM,各类微创新的 Android 界面设计公司,也出现了号称面向多端的物联网操作系统 AliOS。但是所有这些,都是在现有软件的基础上修改和整合(笔者绝对不是说这些工作不重要没有价值,而是说这些还没有触及到操作系统最核心的部分)。
和 Windows 系统进入中国的时候相比,我们是进步了很多,起码我们能够看到 Android 核心的源代码,各大公司也培养了很多 Android 框架工程师。但是,真正能够从头开始设计一个先进的操作系统的公司或者团队,并没有出现。基础操作系统的设计团队,依然被牢牢的掌握在谷歌微软苹果等公司手上。
小米公司和谷歌苹果公司的差别,和十年前我们大多数 Windows 应用开发者和微软的差别并没有太大的区别:我们仍然基于别人的架构和接口做进一步的开发。我们在基础操作系统的设计上,还是没有话语权。
结语:我们可以复制 Google 模式
笔者认为基础操作系统,我们是能够自己从头造出来的。和芯片设计制造,AI 等学科不同,随着开放源代码和越来越多算法的公开,基础操作系统的设计本身需要的知识已经可以通过互联网和书籍等来获取了。所以这是一门工程性很强也没什么秘密的学科。国内有些同行已经花了很多时间和精力来做这些事情,但是并没有取得怎么样的成功,笔者认为这是方法论的问题。这里想要给大家分享的就是谷歌模式,Google 的方法论:“贡献”主义。我们要想实现自己的操作系统,目前可行的一个方法就是复制谷歌的模式,复制“贡献”主义。
重申下所谓的 Google 模式:参与开源贡献代码,培养各个领域的技术专家。等人准备好了,就要等风,然后就可以做新的操作系统了。什么是风?就是时机。旧系统体验不好是好时机,新的用户需求出来是好时机,硬件本身发生了变化,也是好时机。
往简单了说,就是需要从业者参与开源,在一个个领域持续深入,最后在合适的时机才可以厚积薄发,在系统结构上有所突破。已经在 Android 和 Chrome 耕耘了很长时间的谷歌,选择在 2016 年重新设计一个全新的 Fuchsia OS,笔者揣测是“风”来了,同时谷歌的人才已经准备好了。
具体表现在三点:
第一,新的用户需求譬如虚拟现实,为了实现更好的用户体验,要求更高的性能,要求高达 90 以上的 FPS。对于一开始就把用户体验放在首位的谷歌公司,用户体验是不能打折扣的,而旧的系统已经很难满足新的需求对性能的要求,这是第一阵风。
第二,新的标准 Vulkan 得到更多硬件的支持,也要求对现有的软件系统进行一次重构。硬件和标准的变化,是第二阵风。
第三,Google 的人才已经准备好了。对 Google 而言,它已经花了十来年的时间去学习操作系统的核心原理了,是时候去检验一下自己学习的到底如何了。综上三点,与其在原来的系统上进行重构,不如另起炉灶。
Google 模式的本质,其实还是先把人培养起来,然后等时机。国内企业已经培养了很多技术专家了,尤其是云计算的。但是在基础操作系统方面,我们习惯于把别人开源的系统,加上我们自己闭源的修改,做成我们自己的产品。拿别人的东西关起门来优化,是因为大多数企业要求产品快速见效益,这也无可厚非。
但是如果做基础操作系统,拿来主义会导致我们和业内最先进的技术脱节,也就失去了先进性,从而很难持续的投入。另外,很多专家做的东西不够专一深入,精力过于分散,我们就很难把东西做好。
而 Google 培养人的方法,就很重视工程师参与贡献优秀的开源项目。开源看起来是赔钱的买卖,但是对于一个后入者,这是能够快速接触到业界最新成果的方式,因而这也是培养锻炼人才的好方式。Google 这么热衷开源,绝对不仅仅是为了借助社区的力量来对抗苹果微软,更加不会是为了所谓的慈善,而是可以借助社区的力量,来壮大自己的力量。
参考文献:
[1], 华为,http://www.ccidnet.com/2016/0504/10128344.shtml
[2], AliOS,http://www.alios.cn
[3], 倪光南院士,http://tech.ifeng.com/a/20170414/44573008_0.shtml
[4], Android 的历史,http://digi.tech.qq.com/a/20170922/009468.htm
[5], Chrome,https://baike.baidu.com/item/chrome
[6], ChromeOS, https://zh.wikipedia.org/zh/Chrome_OS
[7], Blink, https://en.wikipedia.org/wiki/Blink_(web_engine)
作者简介:徐星,2007 年硕士毕业于武汉大学,参加工作的十年一直专注在图形系统架构方面的研究。现供职于某半导体公司,从事开源项目 Chromium 的基础图形系统的研究。
【END】
小林读者群500人满员。有很多朋友还想加入小林读者群,临时新建了一个预备群。若你已经是小林微信好友,只要向「小林」私信发送关键字「networknews」就可以自动邀请你加入群聊。对于尚未添加小林微信好友的读者,请先添加微信测试号(91123),然后再输入关键字「networknews」自动邀请你加入群聊。
【延伸阅读】
启示录 20:1 “我又看见一位天使从天降下,手里拿着无底坑的钥匙和一条大链子。”
若你喜欢请点「在看」并「分享到朋友圈」~