Google Fuchsia OS
2019-01-25 14:13:19 阿炯

Fuchsia是Google开发的操作系统。和以前Google开发的操作系统,如基于Linux内核的Chrome OS和Android等不同,Fuchsia基于新的名为Zircon的微内核实时操作系统,受Little Kernel启发,用于嵌入式系统,主要使用C语言和C++编写。Fuchsia的设计目标之一是可运行在众多的设备上,包括移动电话和个人计算机。Linux内核原本就不实时,也不是微内核,架构较为落后。


Fuchsia在GitHub的象征是一个紫红色的无限符号。作为免费和开源软件分发,采用三句版BSDMITApache 2.0软件许可证。

Fuchsia的用户界面与应用使用“Flutter”开发。Flutter是一个能为Fuchsia、Android和iOS进行跨平台开发的开发框架,基于Dart创建应用,能让应用达到120FPS的高性能。

得益于Flutter提供的跨平台能力,用户可以在Android设备上安装一部分Fuchsia。Ars Technica注意到尽管用户可以测试Fuchsia,但是并不“可用”。他们还补充,尽管能看出Fuchsia与Android的界面有很多相似之处,比如应用屏幕、设置彩蛋和同时浏览多个应用的分屏功能等,但“全都只是占据位置而不可用”。Ars Technica注意到Fuchsia的很多部分都能工作,尤其是硬件支持。微软曾经做过一次操作系统方面的全新尝试:Midori项目,2015年时管理层解散了Midori团队,大致的原因有几个:Windows团队的不接受;移植全部Windows功能代价不可接受等等。但是Fuchsia系统对于Google来说是一个战略性的项目,因为谷歌并没有完全被自己控制的操作系统,Android和Chrome OS的底层都是Linux kernel。Linux kernel社区对于Google来说是不可控的,Google想干点啥经常被拒绝。由于Fuchsia的内核抽象非常小,完全有可能通过用户空间的抽象层兼容目前的Android、Linux上面的应用。Fuchsia希望提供这样一个稳定的驱动接口,让各个厂商根据这个接口自行开发和维护驱动。大量的模块核心开发者都为高级软工,第三方模块也在大量移植开发,包括图形库vulkan等。

2016年8月,媒体报道了发布于GitHub上的神秘源码,显示Google正在开发一个名为“Fuchsia”的新操作系统,虽然官方没有正式公布,其源码检查显示其能够跨平台运行,包括“汽车的娱乐媒体系统和嵌入式设备,如红绿灯、数字手表、智能手机、平板电脑与个人计算机”。

2017年5月,Ars Technica编写了关于Fuchsia的新用户界面的文章,从8月首次披露时的命令行界面上升级,以及开发人员表示“此项目不是玩具项目,不是20%时间项目,不是我们不再关心的死去的项目的垃圾场”,多家媒体写到“Fuchsia项目”和Android似乎有密切联系,有人猜测Fuchsia可能是“重做”或替换Android以在某种程度上修复该平台上的问题。

2017年11月,对Swift语言提供了初始支持。

2018年1月3日,Google允许开发者以Google Pixelbook为目标设备,下载Fuchsia OS进行开发与测试。

2018年4月,Fuchsia的源代码出现在AOSP的ART当中,疑似是AOSP已经开始将ART移植至Fuchsia上,但源代码仍处于被注释处理的状态。


Google之所以几乎重头写一个全新操作系统有很多原因:
内部的:Android各种弊端,难以忍受,就不列举了,已经跟不上时代变革步伐了。从2005年收购Android到2010年末成为全球第一大手机操作系统,Google积累了大规模厂商协同开发、应用市场运营、开发者管理等经验,收刮了众多的技术人员,新操作系统成功几率非常高。Flutter 做为开发 Fuchsia 应用的模式会让广大安卓开发者平滑的迁移到 Fuchsia,并且会统一iOS开发(一份代码多个平台)。有开发者支持,新操作系统绝对众望所归。(当然 Fuchsia 会提供 Android SDK,保证现有应用能运行于 Fuchsia)看 Google 开发 Chrome 等大规模产品的过程,Google对大型系统有足够强的开发、测试控制能力,绝对能成功完成。

外部原因更多了,最重要的是这两点:耗电量。Bjarne Stroustrup(C++语言发明人)曾经说过C++会是移动时代的最强有力的语言,性能高、耗电量低。但是苹果和安卓把使用C++开发普通应用的可能变得完全不可能了。从系统层到应用层都能用C++开发价值巨大,Fuchsia设计正是为此。虽然说C++开发难度高一些,但是总会有公司会使用C++来开发应用的,这点毋庸置疑。应用、设备间通讯协议日益复杂化。Fuchsia设计能够让系统内部进程间通讯、设备间通讯简单异常,能革命性的统领智能家电、物流等领域。

没有基于 Linux 内核,要知道 Android 和 Chrome OS 可都基于了 Linux 内核。构建于 Magenta - 一个非常轻量级的内核,通常被用于嵌入式系统。并且目前 Fuchsia 库中的开发人员,也都是嵌入式系统方面的专家。使用 Dart 语言开发。有用户和安全模式,支持 ARM 和 64 位 Intel 核心。支持图形渲染,Hacker News 上有用户分析认为该系统非常适合用于 AR 领域(Google 官方还没有回应这些猜测)。目前该系统已经能运行在 Intel 的微型 PC (NUCs) 上,该项目的其中一位工程师透露,目前正在增加对树莓派 3 的支持。从目前的信息中能看出该新系统很大可能会用于物联网领域,甚至可能会在手机、PC 上运行。

谷歌已经聘请了有着14年经验的资深工程师 Bill Stevenson 来操盘 Fuchsia,目标是推向成熟市场。看来,Android、Chrome OS 很可能在 Fuchsia OS 时代被双双取代。Stevenson 2004 年起就开始在苹果公司工作,先是作为产品发布工程师,然后是高级工程项目经理,有过管理 My Mac、iCloud for Mac、AirDrop 等云服务方面的经验。自 2012 年开始,Stevenson 成为 Mac/Windows 的项目高级经理。在近日分享的一篇 LinkedIn 帖子中,Stevenson 指出“加入谷歌以帮助将一种名为 Fuchsia 的新操作系统推向市场。”Stevenson 将于今年2月份加入谷歌,新职位尚未公布,推测是相当高级别的职位。


谷歌于2021年5月正式面向公众推出了 Fuchsia OS,获得 Fuchsia 1.0 推送的设备是第一代 Nest Hub。与基于 Linux 内核的 Chrome OS 和 Android 等操作系统不同,Fuchsia 使用了全新的、自研的 Zircon 微内核,其采用 C++ 编写。内核的组件则使用到了 Go、Rust、Python,以及 C/C++ 等编程语言进行编写,如 USB 驱动程序使用 C++ 编写,而网络堆栈则使用了 Rust。



在关于 Fuchsia 的讨论帖中,有开发者表示 Fuchsia 大量使用了 Rust 编写代码,根据对 Fuchsia 整体的代码分析,Rust 的代码行数最多。主要编程语言所占的比例分别如下(包含 JSON 配置代码):Rust 22%,C++ 18%,C 4%,Go 2%,Python 1%,Dart 1%

如果把 JSON 配置去掉再统计,Fuchsia 的 Rust 代码的占比实际已超过 50%。根据Fuchsia 编程语言策略,终端开发者不支持使用 Rust,这里的终端开发者是指在 Fuchsia Platform Source Tree 之外为 Fuchsia 编写软件的人。而 Rust 除了在 Zircon 内核中使用,还被批准在整个 Fuchsia Platform Source Tree 中使用。


Fuchsia 编程语言策略:前端用 Dart,Go 或退出

2020年2月消息,谷歌新一代开源操作系统 Fuchsia 的开发者网站上公布了一份 Fuchsia 编辑语言策略,文档描述了 C、C++、Dart、Rust 与 Go 的优劣势,并明确指定了其中哪些语言将会在 Fuchsia 开发生态中得到怎样程度的支持。该策略文档描述了 Fuchsia 项目在 Fuchsia Platform Source Tree(Fuchsia 平台源码树)和供终端开发者在这之外构建 Fuchsia 开发目标设备软件时使用和支持的编程语言。

Fuchsia Platform Source Tree 是 fuchsia.googlesource.com 上托管的 Fuchsia 源码,终端开发者是指在 Fuchsia Platform Source Tree 之外为 Fuchsia 编写软件的人。与终端开发者相比,Fuchsia Platform Source Tree 可以汇聚对 Fuchsia 系统及其基础技术更大的更改,因为可以执行仅影响 Fuchsia Platform Source Tree 的更改,而无需与其他人员进行协调。相反,影响终端开发者的更改需要更多的协调,并且需要更长的执行时间。

谷歌介绍,对终端开发者的支持意味着 Fuchsia SDK 需要包含可帮助他们为 Fuchsia 开发软件的工具和库,包括 FIDL(Fuchsia Interface definition language,Fuchsia 接口定义语言)特定语言后端与支持库等。对异步编程的强大支持则意味着可以使用直线型代码,例如使用 Rust/Dart 等语言的 async/await 编写异步程序。文档接下来分别罗列了几种编程语言,分析了它们的优缺点之后,得出如下结论:

C
C 被支持用于终端开发者。
在 Fuchsia Platform Source Tree 中,不鼓励使用 C 的新用法,并且仅批准用于以下领域:
用于底层系统编程,包括内核中
用于定义到共享库和其它系统组件的 ABI 稳定接口

C++
C++ 被支持用于终端开发者。
批准在整个 Fuchsia Platform Source Tree 中使用 C++。

Dart
Dart 被支持用于面向非驱动程序的终端开发者。
Dart 被批准在 Fuchsia Platform Source Tree 中用于用户界面和无限期运行的程序。

Rust
终端开发者不支持使用 Rust。
除了 Zircon 内核,Rust 被批准在整个 Fuchsia Platform Source Tree 中使用。

Go
Go 仅被批准在网络技术栈中使用,因为网络栈的迁移需要大量成本。时间准许的话,应该将网络栈迁移到批准的语言。
必须将 Fuchsia 中用于目标设备上生产软件的所有其它 Go 代码迁移到批准的语言。

总结一下,Go 在 Fuchsia 生态中可能会有些失落,值得注意的是文档中关于其缺点的介绍:
使用垃圾回收机制来管理内存,这比其它用于管理内存的技术占用更多的资源
运行时环境庞大
Fuchsia Platform Source Tree 在使用 Go 方面具有负面的实施经验。Fuchsia 项目在 Go 中构建的系统组件消耗的内存和内核资源相比使用 C++ 或 Rust 构建的同类组件更多
工具链产生大型二进制文件

值得关注的是,文档中没有涉及 Fuchsia 已经确认支持的 Python。不过关于 Python 的支持细节,支持语言页面也没有详细内容,只有一栏栏 TODO,应该是还没有做好准备。

Fuchsia OS 负责人Chris McKillop离职

2022年3月下旬消息,Chris McKillop 是 Google Fuchsia OS 的负责人兼工程总监,近日他在个人社交媒体上宣布已经从 Google 离职。

在 2016 年,Google 就在 GitHub 上提交了 Fuchsia OS 的代码,也正是在那个时候,Fuchsia OS 进入了大众的视野。Fuchsia OS 是 Google 在 Android 和 Chrome OS 以外的又一个操作系统,但与后两者不同的是,Fuchsia OS 并不基于 Linux。Fuchsia OS 在去年正式推出,并率先登陆第一代 Nest Hub 设备。在这个过程中,Fuchsia OS 项目一直是由 Chris McKillop 负责。

随着 Fuchsia OS 正式推出,团队本应在 Chris McKillop 的带领下继续开发 Fuchsia OS 并让系统适配更多设备的时候,团队发生了重大人事变动。Chris McKillop 在个人社交媒体上宣布,他已经离开 Google。而在离职前。他已为 Google 效力了十年时间。在 Google 任职期间,Chris McKillop 除了带领 Fuchsia OS 项目以外,他还帮助 Google 塑造了 Flutter 团队,也曾短暂地参与了 Android TV 团队。

看到这里,大家应该已经了解到 Chris McKillop 能力十分出众,对于 Google 和 Fuchsia OS 团队的重要性不言而喻。Chris McKillop 在个人社交媒体上并没有透露离职的具体原因,也没有说明未来的去向,在推文中他表示:今天,在 10 年之后,我已经离开了 Google。 Fuchsia 团队是有史以来最优秀的团队之一,我期待他们在未来能有更大的作为。是时候进行我的下一次冒险了。Fuchsia OS 团队在社交媒体上已确认 Chris McKillop 从公司离职。

Chris McKillop 过去的职业生涯一直围绕着操作系统,他曾任职于 Palm 公司,并且是 webOS 项目的创始团队成员之一;也曾任职于苹果公司,是苹果第一版 iPhone OS 的团队成员(iPhone OS 是 iOS 的前身)。按照过往的职业生涯来推测的话,Chris McKillop 接下来仍然有可能参与某个操作系统的开发工作。Fuchsia OS 团队还没有宣布新的接替者,Chris McKillop 离职后对 Fuchsia OS 未来的发展是否有影响还有待观察。



最新版本:


项目主页:https://fuchsia.googlesource.com/


该文章最后由 阿炯 于 2022-03-28 09:35:09 更新,目前是第 2 版。