如何看待 Google 的新操作系统 Fuchsia?
冯东
我先举一个例子。MacBook 2016 上的 touch bar,其实并不是作为一个简单的显示设备运行在 macOS 上,而是一个半独立的设备。外界猜测,touch bar 运行在类似 watchOS 上。开发支持 touch bar 的功能的时候,第三方开发者的代码仍然是运行在 macOS 上,只是通过类似 client-server 的方式去驱动 touch bar。
所以那些分析 Fuchsia 是为 VR/AR 特殊优化的理由有什么问题呢?问题就是,如果是这样的理由,Fuchsia 可以作为 VR/AR 的显示子系统的专用系统软件。但是,如果它和通用的 Unix-like 系统差别太大,就不可能担当建立第三方软件生态系统的重任。当 VR/AR 成为通用系统之后,与第三方开发者打交道的一定是和今天的 Unix-like 类似的通用 OS。而对于这类 OS,我看不出来任何在 Linux/BSD 之外另起炉灶的必要。
我同意随着软件复杂度的发展,原来计算机架构的某些假设并不成立。但是不要小看原有架构的弹性。比如说 GPU 的工作方式已经和原来操作系统的设计方式并不相同,但是设计整体架构的时候,只是尽量把适合 GPU 担当的工作分离成为 GPU-driver 和 low-overhead graphics framework。并没有完全替代原有通用 OS 的工作方式。
所以软件业的「另起炉灶」面临两方面的压力。第一,你永远不要小看原有系统的 lossely-couple 的弹性。你可以替换某些单独的模块,但是你并没有那么多精力去替换整个系统。如果你用蛮力去替换整个系统,在竞争中你会被更有效率的对手击败。第二,你永远不要低估挑战整个帮助你建立软件生态的业界的习惯的难度。采取更加稳健策略的对手会在融入业界习惯方面击败你。
RTOS 也是如此。只有火星车、路由器这类不需要建立第三方软件生态的专有设备才是完全运行 RTOS 的。在更通用的设备中,需要 RTOS 担当的部分永远只是一个子系统。(而对于 VR/AR 类应用,我甚至看不出来现有的 GPU 架构有任何不能胜任的地方。我认为对于 VR/AR 系统,最多需要某种特别优化的 GPU-driver。)
我不知道 Google 对 Fuchsia 的具体定位是什么。但是如果它是用来替代通用 OS,那一定会是一个错误。
(但凡这种涉及「另起炉灶」的问题,肯定有一堆莫名其妙就兴奋不已的答案。通常都不能理解兴奋点在哪里。请问把渲染效率和内核架构放到一起说的人到底明白现代硬件渲染是怎么执行的吗?)
腾讯科技
先膜拜下谷歌的取名套路,真不是一般公司能学的……
现在,外界对这款名字古怪的操作系统唯一能确定的仅有两个信息:一是这是一个正在进行中的操作系统项目,二是这一项目并不是基于Linux开发,而是基于Magenta kernel。
由第二点能够进一步推论出,“紫红”(Fuchsia)很可能是用于物联网方面,因为Linux对于嵌入式设备的操作系统开发来说并不是最佳的平台,与之相比,Magenta在针对嵌入式设备进行开发时,更容易扩容。
谷歌Fuchsia项目的Github页面
另外从该项目的Github页面上,也能够发现两位开发者Christopher Anderson 和Brain Swetland都是嵌入式系统方面的专家。
从谷歌方面关于此事最新的表态中也能够推断出,这一操作系统与安卓、Chrome OS没有任何关系。谷歌的一位发言人表示,“这是一个与安卓或Chrome OS完全无关的全新开源项目,谷歌内部有许多正在进行中的开源项目。”
由此可见,该项目还处在非常早期的阶段,最终不了了之也并非没有可能。
谷歌开发“紫红”的消息传出后,很多人纷纷惊叹:难道谷歌又要搞一个安卓或Chrome OS?
然而,开发一款操作系统的难度可想而知,尤其是当需要运行在各种各样不同设备上时,对于操作系统的兼容度要求则更高,另外即便在一款操作系统被开发出来后,在开源的环境下如果没有开发者愿意为这一新平台进行相应的应用开发,则操作系统也难以最终获得市场的认可。
谷歌目前的两款现役操作系统便很好地诠释了操作系统的生态圈:基于智能手机的安卓系统是智能手机最成功的操作系统,目前全球已经有超过15亿运行安卓系统的手机,谷歌应用市场的应用总数已超过140万,总下载次数超过500亿,基于安卓系统的生态圈已经形成。
反观Chrome OS,其获得的市场认可相较安卓来说则差之千里,由于Chrome OS本身的局限性,运行Chrome OS的笔记本电脑只能进行轻量的任务操作,这极大限制了笔记本的应用场景,上网本的概念也由此而来,如今,Chrome OS通过支持安卓的谷歌应用商店,借助业已稳固的安卓生态环境来获得更多的市场接受度,通过支持安卓应用,Chrome OS和安卓系统相互融合的趋势也更加明显。
所以如果谷歌的这款全新的操作系统能够最终面世,还需要经过开发者和市场的两重验证,但在物联网方兴未艾之际就开始着手布局基于这一全新领域的操作系统平台,不得不说谷歌还是想在了前面。
网友
稳定的内核驱动接口
Google想设计一套稳定的驱动API接口。因为Linux目前不具备这个稳定的内核内部API接口。(Linux内核的外部接口,即system call是稳定的。)所有的驱动必须放到内核里面随着大部队一起被维护。但是问题在于各种移动设备的BSP驱动太多太零碎了,而且过时的很快。内核带着这些垃圾往前走非常麻烦。
Fuchsia希望提供这样一个稳定的驱动接口,让各个厂商根据这个接口自行开发和维护驱动。
进程沙箱
Fuchsia没有传统的“根文件系统”的概念。
在Fuchsia中,路径只是一个形式上的字符串,并不一定对应于磁盘上的一个vnode。在一个进程创建时,会给它提供各种资源,这些资源被赋予各种路径。实际上,我们不应该再把这些资源的路径看成是一个统一的文件系统。路径只是这些资源的标签。进程会有一个表,用来存储从标签(即路径字符串)到资源对象句柄的映射关系。
https://github.com/fuchsia-mirror/docs/blob/master/the-book/namespaces.md
有了这样的机制,一个进程在创建时的沙箱可以用任意的方式组装起来。这个组装是必须的,因为进程一开始能访问的资源集合是空的。
一个组装例子:/pkg指向应用组件本身所在的存储区域,可以是一个merkle tree,保证程序不会被篡改。/data指向应用自己的持久存储磁盘文件系统区。/tmp指向临时文件所在的内存文件系统区。
访问控制
在Fuchsia中,不存在ambient authority. 所有的访问权限需要通过object handle获得。比如说,进程拿到了一个目录的handle,那么它才能访问这个目录下面的文件。这些句柄是在创建进程时赋予的。
在传统的操作系统中(包括Windows和Unix),授权是作为一种访问控制机制存在于系统中。在Fuchsia中,授权是作为一种实际的可传递的值(即handle)存在的。
微内核
Fuchsia是纯粹的微内核。内核中主要的抽象只包括进程、虚拟内存和IPC机制。各种文件系统、设备驱动、服务都作为一个进程跑在用户态。
这样的话,读写文件就变成了先跟文件系统进程建立一个channel,然后来回发送消息。一切都天然是异步的。
前景
微软曾经做过一次操作系统方面的全新尝试:Midori项目。2015年时管理层解散了Midori团队。大致的原因有几个:Windows团队的不接受;移植全部Windows功能代价不可接受等等。
但是Fuchsia系统对于Google来说是一个战略性的项目。因为谷歌并没有完全被自己控制的操作系统。Android和Chrome OS的底层都是Linux kernel。Linux kernel社区对于Google来说是不可控的。Google想干点啥经常被拒绝。
而且,由于Fuchsia的内核抽象非常小,完全有可能通过用户空间的抽象层兼容目前的Android, Linux上面的应用。
附:空余时间读了一点Zircon的源码,写了一点笔记贴在这里。不定期更新。
Ken
从Fuchsia代码仓库建立以来每日50-100次更新(merged),连元旦都如此,这样的速度绝对是无与伦比了。不出意料12个月内必然能出实验机,然后6个月后厂商和开发者参与,2年后就会成为新的全球第一大移动操作系统。
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设计能够让系统内部进程间通讯、设备间通讯简单异常,能革命性的统领智能家电、物流等领域。
[追加]
2/8 内核只能在 qemu 上运行,有pc-x86-64, pixel2-x86-64,arm64,msm-trapper,pixel2 是Google新版手机。写一个简单绘制的应用大概要90行C++代码,用Dart大概是50行代码。
总代码量:
Total Physical Source Lines of Code (SLOC) = 18,623,427
Totals grouped by language (dominant language first):
ansic: 8334151 (44.75%)
cpp: 7551622 (40.55%)
asm: 1374811 (7.38%)
python: 674683 (3.62%)
其中内核magenta:
537177 magenta ansic=444821,cpp=70307,sh=11468,yacc=3492,asm=3306,python=2663,lex=1110,lisp=6,awk=4
2/9 qemnu 运行 flutter_gallery 截图
ps 命令截图
2/10
已经有人写书(elastos/myMagenta)了,赞。
5/9
最近看到工程目录结构大量改动,并且开始启动了文档编写,也已经能看到发布模块及其组成。构建方式也变了(核心还是gn, Ninja)
flutter 进展神速,已经可以实用了。
5/17
今日召开的Google I/O 可能不会有 Fuchsia 相关内容了。连 iosched 也还是使用Java(google/iosched)编写的。
5/22
link: Android chief Dave Burke talks about Fuchsia at Google I/O, says it will be an independent project;
5/23
在稍微了解Dart后,我改变看法了,fuchsia 的主语言应该会是Dart。
6/19
flutter 已经进入 alpha 阶段了。
7/5
Build系统成熟度很不错了,模块结构图:
运行截图(支持的机器有3种是笔记本了),Mac 下支持网络比较困难
Guest 访问截图
7/19 业界已经公开认为安卓势必会被Fuchsia取代
Android as we know it is dead, but it's not going to go away | ZDNet
7/22 忍不住从另外一个角度说了一点 Fuchsia 界面开发模式
8/16 第一个使用Flutter并且发布的程序是 Hamilton,App Store/Play Store都更新了
9/18 开发者花了两天时间把内核更名为 Zicron (锆石).
总在这里编辑怪怪的,以后更新转至专栏了
网友
大家一定以为是这样
最坏情况是这样
其实是这样:
搞不好就这样:
Regan Wei
我记得第一次听到Fuchsia是在Nougat正式版刚出不久。那时候听到这个消息着实吓了一跳,觉得这绝对又是一个极其“Google X”化(要么停留idea层面要么就是中途丧命…)的东西。在现在这个局面下一个全新自主研发的新OS……这个坑实在太大,或许谷歌相信于Google x Android的品牌效应,但是巨硬都已经砍死WP了…
而万万没想到居然还真做出来了…释出了一个Demo的apk供交互体验。第一时间下载,里里外外体验了…3分钟(你们谁要是能玩3分钟以上算我输)内容很少,说白了就是全新的交互式UI,这次叫做“Armadillo”,中文犰狳(什么鬼名字……)采用全新的设计风格,但还是有MD的影子,动效很牛逼,交互方式绝对不同于Android或iOS,完全卡片式的视图,打破传统把有序多级界面做到了无序,感觉所有层面都可以融合&分开……自由度逆天,但终归还是个最初级最低级的Demo而已,所以看看就好,感兴趣的可以去下载apk或找视频看看,蛮有意思的。
放个demo的链接:https://pan.baidu.com/share/link?shareid=1337727989&uk=1866440866
自己把apk传到百度云了,方便大家下载
完全重新开发,脱离Linux,官方说基于Google自己开发的Magenta微内核。这一点可以看出谷歌真的是要打算完全0铺垫地去再开一片生态,真的很难去猜透他这样的真正目的,中午吃饭的时候突然冒出两个个猜想,接下来先说比较靠谱一点的,如今整个移动端行业由iOS和Android两方拉锯,二者都是十分成熟且市场巨大的存在。如果说实际点,Google也许要用Fuchsia替换Android,这个想法蛮大胆,如果真这么干,大概要几年的过渡期,一点一点搬移,乃至整个Android生态圈都搬家到Fuchsia,但是为啥这么搞我觉得吧,,,可能Google要做一个真正把软硬件掌控权捏在自己手里的这样一个打算,毕竟现在Android以年为更新周期,各种第三方导致新版本的份额总是惨不忍睹,这样一统一,谷歌会轻松很多,整个生态市场也会整齐不少。当然,这个想法依然建立在Android和Fuchsia必须互相兼容的情况下,如果互不兼容的情况下去替代Android……就好比你无缘无故扔掉所有财产然后重新去从余额0开始挣,除非疯了对吧……
再说离谱的那个。接下来开脑洞了!官方说Fuchsia主要针对拥有“快速处理器的现代化手机和现代化私人电脑,可以执行开放式计算的任意外设上”。也就是说这款操作系统能够出现在各种硬件设备上。注意,快速前面是有一个“Super”的,这个概念很有意思,暗示了它的普适范围和应用市场一定对硬件要求很高。OK咱们再来打开脑洞,Google或许正在酝酿一个或者一系列全新具有革命性颠覆化概念的硬件设备,这些设备或许涉及各个高新产业互联性极强,需要这样一个全新的生态系统去培育,如果等到硬件平台普及之后Fuchsia极强的适配性则便会犹如树根一样蔓延开来。当然,这只是我的脑洞而已……具体要这样做难度大到爆炸,没有很长远&成熟的分析是不可能这么搞的。。但是这特么是谷歌啊,有啥不可能发生的……Google Glass,Project Ara等等等等多少个项目真正把钱烧进去又砍掉……但真正的技术进步就是想法大爆炸,这么一次一次尝试,一次一次失败之后而诞生。真正的革命与创新哪有这么简单。我十分期待这次会是什么样子,或许是一个奇迹,也或许像从前那样又是个败笔,拭目以待~
简单截了几张图可以看看
PS.
最后吐槽一下Google现在的起名方式……海洋生物和零食命名法就已经够奇葩了,,现在重开一个颜色坑,,品红Magenta,紫红Fuchsia………会玩……
三姨君
这段时间,各大品牌的安卓手机似乎都开启了“系统更新模式”:三星、诺基亚(HMD)、LG、HTC……纷纷都在给旗下手机推送安卓8.0甚至是8.1的最新系统。对此,消费者们自然也是喜闻乐见——只是,如果告诉你,安卓(Android)系统,或许很快就会不再有后续版本了,大家又会作何感想呢?
笔者可没有在危言耸听,毕竟就在前几日,谷歌全新系统Fuchsia OS的预览版本已经在网上曝光,这款由谷歌完全从头自主开发的新系统主打绝对的流畅体验、支持多任务运行,并具备桌面和手机融合的跨平台能力——这些都是目前安卓的短板。
但是,在此之前,我们只知道Fuchsia OS最初问世于2017年的谷歌I/O大会,并有可能在在2019年下旬或者2020年初推出相应的初期搭载设备(类似于现在的Nexus或Pixel手机)——至于它和安卓之间是否构成取代关系,其具体的时间点又会是何时,则一概不明。
不过,作为谷歌相当亲密的“战友”,三星最近的一次举动却疑似泄露了安卓系统被取代的“时间点”——这是怎么回事呢?
故事要从安卓系统固有的“版本号”上说起:大家可能都知道安卓目前的主流版本是6.0、7.0(7.1)和8.0,而每一个大的版本也都对应着谷歌赋予的“代号”。比如安卓6.0是Marshmallow(棉花糖)、7.0(7.1)是Nougat(牛轧糖),而最新的8.0(8.1)是Oreo(奥利奥饼干)这样。但除了这些数字版本号和名称代号之外,其实谷歌还有另外一套命名体系,用于详细区分每一次推送的固件版本。
在谷歌的开发者官网上,我们可以查找到所有Pixel与Nexus手机的官方固件镜像。值得注意的是,在每一个不同的镜像链接前方,除了单纯的安卓版本号(7.1.2,8.0.0等),还会注明固件的编译时间,正式发布时间,以及用于标识固件版本的一个特别版本号。
如果是对安卓系统代号稍有了解的朋友,应该已经注意到这些版本号里面的玄机了——它的首位字母与对应的安卓系统代号首字母应该是相同的,比如说Pixel XL手机的某个安卓7.1.2官方固件,因为安卓7.x的代号是Nougat,所以其固件版本号便是NZH54D,而对应安卓8.0的另外一版固件,其版本号为OPR6,就是因为安卓8.0的代号是Oreo。
需要说明的是,这套用对应系统代号首字母来标识固件版本号的体系,并不是只有谷歌自己在用,而是被三星等多家手机厂商所共同采纳的。比如说三星去年的Galaxy S7安卓7.0测试版固件,在系统“版本号”一栏就明确标注着NED90M,而“N”也正符合安卓7.0的代号简称。
那么,问题就来了——在三星前不久刚刚推送的Galaxy S8安卓8.0测试版中,我们看到了这样的编译版本号信息……
对,各位注意到了么,虽然明明就是安卓8.0(此为国行S8,系统为官方系统),但编译版本号的首位却并非代表安卓8.0的字母“O”,而是以前从未有过的字母“R”!
“R”是什么意思?按照常理(英语字母表顺序)推断,它应该代表着安卓8.0之后地三个版本的安卓系统才对,也就是“安卓11.x”。但是这样一来就和系统真正的版本发生了冲突。而且,如果这是三星自家私有的编译版本号序列的话,那也没必要弄成和谷歌官方十分近似的“字母+数字”格式,不是么?
因此,笔者大胆猜测,这里的“R”或许是三星在这一代引入的一个表示测试版的占位符,而三星之所以能够用它,是因为“Android R”已经注定不会出现了(否则的话,三星大可使用X\Y\Z这样更加保险的版本号占位符)!
说得更直白一点,从三星的这一测试版本号,我们或许能够预测:安卓(Android)官方的正式规划就只到Android Q(也就是安卓10.0)为止,之后就再也不会有新的版本。换句话说,在2020年左右,安卓系统或许就将被谷歌的新系统所替代,而这也“恰好”吻合了网传的Fuchsia OS正式发布时间……
这真的是巧合么?或许不见得——而且,要证实笔者的猜测,其实大家也不用等很久了。
你也许感兴趣的:
- 曾与 HarmonyOS 一较高下的 Fuchsia,再失利!
- Fuchsia 的 Rust 代码占比超 50%
- Android被发现添加Fuchsia SDK和Fuchsia设备支持
- 新提交记录暗示:Fuchsia 要支持 Java
- 华为测试谷歌新操作系统Fuchsia:麒麟970已能启动
- 福布斯:为什么从现在开始你应该关注谷歌的 Flutter 和 Fuchsia?
- 谷歌组织逾100人开发新系统Fuchsia: 欲5年内取代Android
- Fuchsia 操作系统将支持运行 Linux 应用程序
- 聊聊谷歌的新系统 Fuchsia,关于它的消息、传言和未来
- 谷歌Fuchsia源码现身AOSP,开发者发现其支持运行原生安卓应用
你对本文的反应是: