解析:面向未来的操作系统,谷歌 Fuchsia究竟会是什么样子的?
雷锋网 (搜索“雷锋网”公众号关注) 按:本文作者何楚,开源软硬件爱好者,Linux重度用户,工程师、分析师。雷锋网独家文章。
近日,据外媒报道,Google 目前正在致力于开发一款新的开源操作系统—— Fuchsia,使用不同的内核全新编写,支持 PC、手机以及其他智能设备。业界的声音普遍认为:Fuchsia 的目的就是打通PC和手机,可能会是谷歌未来 IoT 的融合操作系统,甚至有声音说是为了代替 Android 和 Chrome OS 而研发的下一代操作系统。
根据网络信息:它使用的不是 Linux 内核而是叫 Magenta 的新内核;它的UI层使用的是 Dart 语言开发的Flutter;渲染器是Escher;应用程序框架Mojo。除此之外没有太多对这个项目细节的说明。创始人在 irc 上被问道:“为啥没个文档说明也不宣布一下,就把它开源了?”,回答:“(我们)决定把它开源,而且觉得应从项目初期开始(因此一切都不完善,也因此没有对外宣布)”。
所以要了解这个项目的具体情况,比较好的方法就是 翻文档和代码 。
|
Fuchsia 会是什么样子?
官网的文档资料很少,笔者把能找到的都翻出来过了一遍,尝试把 Fuchsia 运行起来。
前面所说的 Magenta,是一个微内核和一系列用户空间的服务、驱动的组合 。目前它已经能够在虚拟机、某几款NUC小电脑和某款笔记本上启动运行。在虚拟机里面运行后就是一个字符终端,执行一个叫 mxsh 的 shell,另外还有少量的基本工具和测试程序集 。
只有 Magenate 内核的 Fuchsia 系统,在虚拟机运行起来是这个样子:
图:虚拟机内跑起来的 magenta 内核
看起来一点都不酷,对不对?!因为这个基本系统没有图形用户界面(GUI)部分。继续阅读 Fuchsia 编译文档,经过长时间的下载、编译、等待和尝试,笔者也没有能成功见到一个在 magenta 内核上运行的 GUI 程序。再仔细检查源码和文档才发现, UI 部分现在还没有被合并入项目 。
好吧,资料说“它的UI层使用的是 Dart 语言开发的 Flutter;渲染器是Escher;应用程序框架Mojo”。那我们试试单独编译跨平台的 Flutter,看看用户界面会是啥样。其他如内核、开发语言、基础框架等,普通用户是感知不到的——还是留给工程师们关注吧。
Flutter 是可以运行在 Android 和 iOS 上的用户界面开发库,从它的源代码提交和bug跟踪日志中的信息看,目前它的引擎还不能运行在 Fuchsia 上,不过已经很接近可以工作。Flutter 官网声称自己还是一个早期阶段的开源项目,经笔者检验虽然是早期项目,但是在 Android 手机上运行起来演示程序还是很容易的。所以,一起围观下 —— “未来” 操作系统上的程序可能会是什么样子(请忽略Android自带黑边和某运营商标志):
图:跑在 Android 手机上的 Flutter Gallery 演示程序
Flutter采用 Materal Design 设计语言(规范),该规范定义了用户界面上的元素的用途、外观、展现形式以及形态变化的规范。
从用户可见的角度来看,未来 Fuchsia 操作系统内运行的程序,其中的按钮,对话框,图片框等等界面组件,基本就应该跟上面图片中差不多——当然未来也可能会改变——而那些科幻电影中炫酷亮眼的3D特效、隔空指点、虚拟(增强)现实画面,暂时还不能从演示程序中看到。
嗯,目前来看 Fuchsia 上的 App 的界面,大概就是这个感觉。
|
插播,扒一下 Fuchsia 开发者
Fuchsia 项目的知名参与者包括 Travis Geiselbrecht 和 Brian Swetland。
早在久远的上个世纪九十时代中期,当时的苹果公司因自家的操作系统无法及时推出,正寻找替代品。当时有两个理想的候选产品分别是
Be 公司的多媒体操作系统BeOS
,以及被苹果公司扫地出门的
乔布斯
开办的
NeXT 公司的产品 NeXTSTEP
。后来由于 Be 公司要价太高等原因,苹果公司收购了NeXT公司重新获得乔布斯继而研发出后来大放异彩的 OSX,而 Be 公司则由于经营不善在2001年黯然被Palm公司收购。
能被苹果公司列为收购目标的 BeOS 实力自然不弱,而上面这两位小哥,就曾在 Be 公司做操作系统开发。由于 BeOS 在当时来说设计非常先进,公司关门后很多工程师和爱好者觉得可惜,所以继承BeOS的设计重新实现了一个开源系统名字叫 Haiku, Haiku 使用的内核叫做 NewOS 。自然地 —— NewOS 的发起人和主力开发就是这俩哥们。
可能俩人对极度精简的产品比较偏爱,又或者是觉得 NewOS 内核的设计还太过厚重,总之,2008 年俩人又针对嵌入式设备设计了一个极其轻巧的内核 littlekernel (简称:lk)。
一晃快20年过去,随着所供职公司的关停并转,他们又分别在Danger、Palm、Android、Apple、Google等巨头公司工作过。Brian Swetland 最近的一份工作是在谷歌任高级软件工程师,负责管理 Linux 内核开发相关事务。几天前,他在 github 上公布了 Fuchsia,用到的内核叫做 Magenta,正是基于他们的 lk 内核项目扩展功能而来。
可以看出来,项目负责人绝对是经验丰富的老司机了。
|
Fuchsia 操作系统的特点
所以,现阶段 Fuchsia操作系统的基本情况是:
-
内核 :Magenta,有可以在特定设备运行的早期版本,框架设计、核心功能、相关工具链较完善。如果需要支持新的(外围)设备,还有大量驱动需要移植。
-
UI层 :Flutter,组件库已经基本完善,写一些简单程序没有障碍,暂时还无法在 Fuchsia 运行。官方自称属于早期阶段的版本,实际也是。另外目前没有OpenGL ES 方面 3D相关的支持,官方承诺未来会公开自己的优化版 3D编程接口。(所以可能也是暂时没有炫酷亮闪未来界面的原因)
-
渲染引擎 :Escher,资料较少不了解,不过应该在渲染速度和效果上有非常突出的优势。
-
主力编程语言 :Dart,面向对象的跨平台语言,相关的库已经比较完善且是 Flutter 的开发语言。以后为 Fuchsia 开发App主要使用 Dart语言。
如果需要了解现在这个项目各个部件所处阶段以及项目上资源投入的情况,也许下面的图能有个简单说明。图中列出了最近一年以内,几个项目源代码每周被提交的数据(代表活跃情况)。左边纵坐标是被提交的次数,每个项目的横坐标是最近一年周期。
图:项目活跃度图
图中标明了重要项目名字以及目前项目的贡献人数。
可以看到 参与人数多代码提交比较活跃的,是内核 Magenta 和图形界面层 Flutter 两个项目 。Flutter 项目比较特殊,它其实很早就启动了,一直致力于为 Android/iOS 移动设备提供编码统一的开发环境。除了 Flutter 之外,其他所有项目大概都是最近两个月内被启动的。其中目前最活跃的是操作系统内核部分,22 名贡献者中可以看到不少 Google, Chromium 官方成员在提交代码。内核开发极度需要技术和经验,也不是劳动力密集型工种,几名核心工程师已经足够,由此可见目前谷歌对内核项目的干劲还是比较足的,只是其他配套项目关注的人数就稍微少了点。
图上已经很明显了,总的来说就是 Fuchsia 操作系统现在还在很早期的的阶段,构架已经设计好,正一步步完善内容。
从搭建的框架可以看出,其特点基本上是其所选取组件的优点的组合,比较有代表性的是:
-
适合嵌入式设备和高性能设备: magenta内核的基础lk就是一个嵌入式系统的内核,它的代码非常的简洁,适合移植到不同的设备上。可以想象到的目标设备是: 物联网 、移动手持设备、 可穿戴设备 等。
-
低延迟、高效率: 在 Magenta、Escher、Flutter 的项目介绍中都可以看到“实时”、"高效”、“低延迟”这几个关键字,那么可以预见 Fuchsia 的目标也是实现一个实时性非常高的操作系统。低延迟有什么用呢,想象一下VR眼镜上看 虚拟现实 的时候,画面没有延迟的惊艳爽快感。所以低延迟对这个操作系统一个非常重要的考虑指标,也是核心优点之一。顺便提一下,我们普通人用到的 Windows,Linux,Android 都不是实时操作系统。OSX, iOS的延迟都比较低,但是一般也没有把他们划为实时操作系统。
-
高级编程语言: Dart 的目标是设计一个随处部署、接口稳定、基础库完善的开发语言。用在 Fuchsia 可以看出来要摆脱掉 Java 语言的意图比较明显,另外它也是一种需要VM的语言。不过Flutter 的官方资料显示:经过对比测试,Dart 的在执行性能、开发效率、面向对象、快速内存分配(回收)上的得分都非常高,因此才会被 Flutter 选为开发语言。
-
统一的UI体验: 由于采用了 Matrial Design 设计语言,所以在 Fuchsia 上运行的程序理论上具有统一的UI体验。
-
没有历史包袱: 完全从头设计的系统,不会有为了兼容考虑的历史包袱——比如 Java 虚拟机的慢速,又比如 Android 较慢的渲染速度。因此也可以把体积做的很小,塞到存储容量很小的设备中。
| Fuchsia 会融合PC和手机,取代 Android、Chrome OS 么?
网上提到 Fuchsia 取代 Android、Chrome OS,又或者 Fuchsia 跨平台融合,笔者觉得可能性不是很大。且不说 Fuchsia 连是否会做出来最终发布都不确定,假设这个操作系统真的发布了,想代替 Androd 和 Chrome OS,或者融合现有市场上的应用形态,都会非常难。
在一个存量市场上,任何一个全新的产品想替代旧的产品,必须要考虑两个最大的阻碍:1、用户习惯;2、生态环境。
Android 系统海量的用户养成的使用习惯要想被 Fuchsia 替代, 除非 Fuchsia 在兼容 Android 上做得非常好 ,否则用户很难会使用一个不熟悉的新系统替换本来用着好好的老系统。另外Android 的上下游生态环境从开发语言、相关资料资源、从业人员数量、软件开发商、设备厂商,到最终作出的软硬件产品,这个生态圈内的资源数量都是巨大的。 生态圈会自动将相关资源继续留在原有阵营,很难被攻破。
关于生态圈最好的例子就是想与 Android/iOS 竞争的 Windows Phone——它已经从我们生活中消失了。
既然在存量市场上难以成功,全新开发的 Fuchsia 的目标一定是新兴市场 —— 一种 Android 和 Chrome OS 等现有操作系统无法适应,而且应用形态又不一样的——未来市场。
网上的猜测都说得比较清楚了,这个市场可能是:物联网、虚拟现实、增强现实、可穿戴等。这些领域还没有成为标准的垄断者,现有的 Android,Chrome OS 等操作系统又不太适合这些领域的应用形态。而未来这几个领域增长的想象空间巨大,值得投入。
回头看 Fuchsia 的特点:嵌入式、低延迟、高性能、一致性,正是为了这些产品领域而设计。
所以,操作系统会融合么?Fuchsia会取代其他么?我认为非常长一段时间内都不会。
注1:本文内容从 Haiku 中文社区负责人 kurain 处获得诸多有价值的史料信息。kurain 是 Haiku 官方国际化项目中的 Chinese Language Manager,几乎独自中文化翻译了所有的 Haiku 官方文档和开发手册。同时 kurain 也是一名软硬件极客,他的 github 帐号是 haiku-cn。在此对 kurain 表示感谢。
注2:本文行文仓促,相关文档资料未能深入阅读理解,如有错误敬请指正!非常感谢!
雷锋网注:转载请联系我们授权,并保留出处和作者,不得删减内容。