进入我的博客

这里有您在其他地方看不到的web前端方面的技术、知识及资源

这里有您在其他地方看不到的web前端方面的技术、知识及资源

张鑫旭-鑫空间-鑫生活

it's my whole life!

备份内容浏览

« 查看全部推荐内容

一个失败移动操作系统的前世今生,别了Firefox OS

2017-03-14 大愚若智 译

作者|Ben Francis
编辑|小智
在Android、iOS雄霸的时代,也有一批全新面貌的操作系统在两大巨头的夹缝中求生存。但即便是有微软庇荫的WP也行将死亡。这批市场份额「其他」的操作系统中就有Firefox OS,虽然是个失败的操作系统,但它曾想改变点什么,这已经是我们必须报道它的理由。
编者按

2016年2月5日,Mozilla在给开发者的电子邮件中宣布,在2.6版本之后,将正式停止开发Firefox OS手机版操作系统,这一举措,也就意味着Firefox OS的失败。本文作者Ben Francis是Firefox OS操作系统的开发者之一,他从自身经历出发讲述了Firefox OS的前世今生。

Firefox OS是个失败的操作系统,知道的人并不多,但它曾经想改变点什么,我们应该报道下这个内容,让它在国内的社区中,留点痕迹。本文最初发布于Ben Francis的博客,经原作者授权由InfoQ中文站翻译并分享。

写在前面

我叫Ben,是一位Mozilla人,一名软件工程师,过去五年来一直全职从事着“Boot to Gecko”(以下简称B2G)项目,今天我想给你们讲个故事。

从Boot to Gecko开源软件项目在2011年通过邮件列表中发布的一封邮件,以一个空的GitHub代码库闪亮登场,到后来以Firefox OS移动操作系统的形式商用发布,再到2016年将数百万行代码“转移”给社区,这个故事的跨度很大。五年时间,Mozilla社区的数百位成员因为一个共同目标走到一起,希望借助开放网络的力量颠覆应用生态。我希望借助本文对我们基于开源浏览器打造移动操作系统过程中所收获的成功、失败,以及学到的经验教训进行反思。

B2G的搭建

从一个空白的GitHub代码库开始,共同创始人们组建了一个小规模的初始团队,开始着手“Gonk”(一种基于Linux内核和Android硬件抽象层的“底层基板”)、“Gecko”(一种在Firefox的Web引擎基础上建立的应用运行时和设备API)以及“Gaia”(一种使用HTML、CSS,以及JavaScript等Web技术构建的智能手机用户界面)的相关工作。

B2G架构

一些代码重用了Android开源项目的代码,但这个架构的独特之处在于彻底去除了Android中的整个Java层,取而代之的是通过Gecko渲染Web内容,借此实现近乎裸机运行的性能表现。这种设计使得B2G在性能方面具备了非常先进的优势,可以让Web内容获得类似原生代码的运行表现。

2011年12月,Mozilla在台北101大楼的办公室筹备过程中,首次在不使用浏览器插件的情况下,通过网页拨打了有史以来的第一通电话通话。手机最基本的必要功能已经逐渐具备了。

Firefox OS 1.0
设计

在第一次迭代过程中,提供给UX团队的想法极为有限,基本上不可能产生让人惊艳的成果。当时依然沿用了类似于Android和iOS的应用图标网格设计方式,但尽可能进行了简化。首先我们需要证明使用现有的Web技术是可以构建出这种类型的UI的。

UX团队的这个设计非常流畅,但现在回想起来,一开始就模仿现有产品,并假设随后如果必要可以调转方向,这是一个极大的错误。

实现

在工程这一块,我们证明了使用开放的Web技术是可以打造智能手机的,并且整个用户界面都可以用HTML、CSS和JavaScript来创建。

为了通过JavaScript与智能手机的底层硬件通信,我们需要在新API方面进行大量投入,并要研究一种可行的特权模型。Web技术的现有安全模型可以通过沙箱限制让浏览器安全地执行不可信代码,为了让Web内容能够访问更多高特权功能,例如接打电话以及发送短信,还需要具备一套新的安全系统。

为了能按时发布1.0版B2G,我们认为能同时满足脱机使用和安全需求的最简单方法是为Gecko引入打包应用的概念。打包的资源可以“安装”到设备上,进而可以脱机运行,并通过密码学签名验证代码是否可信。

2012年7月在西班牙电信位于巴塞罗那的办公室举办的工作周活动中,我们决定先选择打包应用作为一种临时解决方案,直到能有其他更好的办法。我认为这个决策是另一个重大失误,因为随着技术债越欠越多,我们已经逐渐走上了一条不归路。

2013年世界移动通信大会

2013年2月,我们在巴塞罗那世界移动通信大会上公布了首个商业化设备,首发设备包括ZTE Open和Alcatel One Touch。同时LG和华为也承诺会发布相关设备。

ZTE Open和Alcatel One Touch智能手机

当时消息是在MWC召开前一天通过媒体大会公布的。我们本来估计会有大约250名与会者,结果当天来了超过700家媒体、传媒、分析师嘉宾。我们还设法达成了一项史无前例的壮举,18个电信公司的CEO共同登台表达对该项目的支持,这样的盛况就算放在GSMA(全球移动通信系统协会)也足够让人吃惊了。

CEO出席媒体大会,MWC 2013

我认为完全可以说Firefox OS是那年活动上最耀眼的新星。大会杂志上每一天我们都上头版,我们在Google News上共产生80,000个媒体搜索结果,Firefox OS甚至与奥斯卡一起登上了Twitter趋势榜!这几乎是所有公关人员梦寐以求的结果。

Firefox OS 1.x

Firefox OS已经做好了上市的准备。但在举行1.0版发布会之前,我们就已经回到办公室开始继续对它进行完善。

最初我们主要专注于增加智能手机的基本功能,例如1.0版中缺乏的彩信功能,随后我们将工作重心放在为应用开发者提供更完善的开发工具,以及满足合作伙伴们千奇百怪的需求方面。

随着我们在2013和2014年陆续发布1.1、1.2、1.3以及1.4版Firefox OS,事实证明我们只是在不断追逐Android的尾灯,而Android比我们有着五年的先发优势,我们根本赶不上。如果希望Firefox OS能赢得市场并获得更大市场占有率,必需另辟蹊径。

“蹊径”到底在哪

几乎所有人都赞同,我们无法按照Android和iOS的路子战胜这两个操作系统。功能方面,我们赢不了Google;设计方面,当然也赢不了Apple。Mozilla曾经以小博大战胜过其他巨头,但如果按照他们制定的规则来玩,我们是赢不了的,我们必需制定自己的规则。

Firefox OS的蹊径到底在哪,我觉得主要有两个思路。

以Web为平台

思路一:我们不应在功能方面努力追赶竞争对手,而是可以考虑在用户界面方面发力。我们可以打造一种更简单的UI,借助这种UI强化Web本身的优势。

但这就会面临一个挑战:媒体经常会通过应用商店内的应用数量对Firefox OS和竞争对手进行比较。Firefox OS从一开始就没考虑过使用一个统一的应用商店,而是要以整个Web作为自己的平台。然而我们在早期作出的一些有关应用打包的技术决策把我们逼到了角落,使得我们只能继续依赖开发者提交到由Mozilla运营的Firefox Marketplace中的那几千个应用。

我们讨论过将关注的重心重新转向真正的Web内容(目前为止地球上规模最大的数字化内容集),面向Web“互联”的这一本质,以及通过超级链接在页面之间进行导航的“流动”进行优化,打造创新的用户界面。从开放的Web世界自身优势入手可以让我们创造出与竞争对手截然不同的产品。

连接下一群十亿用户

思路二基于这样的一种假设:我们真正需要的是规模化,为了扩大规模,对我们来说最可行的办法是面向新兴市场。对移动行业来说,这种市场的增长潜力才是最大的。

我们在发展中国家进行了一些市场研究和用户调研,很快发现全球人口有很大比例根本无法承受价格高昂的智能手机。他们真正需要的是价格低廉的智能手机,是能让诸如印度和孟加拉国等地的人可以轻松负担的手机。

只要能在新兴市场站稳脚跟,就可以非常快速地实现Firefox OS所需的规模。随后至少在这些国家的市场份额统计图表中,我们会不再被归类到“其他”这个类别,开始得到大家的关注。

25美元的智能手机

2013年年中,宫力开始掌舵Firefox OS。宫力极为赞同“廉价智能手机”这个想法,并提出了25美元智能手机这一概念,认为如果希望在新兴市场扩大规模,需要将手机价格降低至这个价位。

整个团队通过天才的工程设计,让Firefox OS成功地运行在基于Spreadtrum芯片组,只有128MB RAM的极低端硬件上,这一水平已经远远低于同时期Android的最低要求。我们带着“25美元的智能手机”参加了MWC 2014,与低成本掌上设备制造商Intex和Spice建立了合作关系,并提出了“连接下一群十亿用户”这样的口号。

25美元智能手机概念原型机,MWC 2014

然而该项目的执行结果并不能让人满意。首先,25美元智能手机上市时的最终成本约为33美元。此外,尽管Firefox OS可以在128MB RAM的设备上“运行”,但此时无法像其他智能手机那样实现多任务。关键应用的缺乏是另一个严重问题,例如Whatsapp是这些市场必不可少的。我们没能说服WhatsApp开发Web版本,甚至没能得到许可由我们代为开发。这些局限外加硬件质量(尤其是摄像头)方面的一些问题,导致廉价智能手机的市场表现并不怎么出色。

新兴市场的用户也许没有太多可支配收入,但这并不意味着他们就安于接受低质量产品。他们要的不是廉价的“精简版iPhone”,他们要的是iPhone。如果买不起iPhone,他们宁愿继续使用功能机。功能机更便宜,很实用,电池续航超长。

Firefox OS 2.0

25美元智能手机的大部分研发工作是由台北办公室的工程师负责的,他们还发布了一个特殊的1.3t版Firefox OS。与此同时,其他团队已经在开始考虑2.0版会是什么样的。

2013年4月,UX团队在伦敦举办了一场峰会,大家共聚一堂讨论Firefox OS用户体验的未来方向。我很荣幸能受邀参加。我们集思广益探讨了Web体验的独特之处,以及该如何借助这些优势打造与众不同的用户体验。

UX峰会,伦敦,2013年4月

“流动”是当时的一大重心,我们可以顺着超级链接在不同Web内容之间流动。Web世界并非由相互之间存在明显界限的单体应用组成的,而是一种在不同页面之间通过五花八门的内容流动的体验。

Haida

随后几周里,UX团队为这种概念打造了一些初期设计(最终的开发代号为“Haida”),这些设计弱化了Web应用和网站之间的界限,创建出一种犹如Web那样可以流动的独特用户体验。

这个项目最终不仅包含通用的“Rocketbar任务栏”,还可跨越整个操作系统访问,无缝适应不同类型的Web内容,并能通过“Sheets”将单页Web应用拆分为多个页面,让用户通过直观的边缘手势切换浏览不同页面。该项目最后还提供了一种基于内容模式的实时应用(Live App),可供用户随意浏览使用不同应用,并在需要时收藏应用,而不像单体应用那样,使用之前必须从一个集中的应用商店下载并安装。

如此剧烈的变化已经大到无法在一个版本中全部实现,因此我们将Haida的实现分为三个阶段。2.0版实现了全新的视觉效果以及用于在窗口之间移动的边缘手势,2.1版实现了浏览器与主系统UI的集成,借此我们开始创建这种基于浏览器的独一无二的体验。

但是在2.2版中,对于Haida中所含创新的重视程度开始下降。合作伙伴开始提出有关竞品功能的请求,他们希望我们开发能与Android比肩甚至更棒的功能,希望能优化性能并增添对“从右到左”语言的支持,借此合作伙伴才能将设备销售到更多国家。

Haida的完整愿景从未完全实现过,因此大家开始探讨是否要在3.0版中再次调转方向。

Firefox OS 3.0

首发设备上市后,合作伙伴达成了远超预期的销量,但在这之后,25美元智能手机的倡议开始受挫。对于该以怎样的差异化优势延续首发势头,我们还没有明确的答案,合作伙伴的销售数据开始变得不好看。大家开始丧失信心,在产品后续发展方向方面也开始出现分歧,最终导致几名重要高管离职。

随着几位高管先后离职并带走了很多研发工程师、团队元老,Firefox OS团队开始面临高层领导层的真空期。

3.0版的构思过程

由于缺乏切实可行的产品发展方向,“3.0版的构思过程”直到最后一刻,全公司员工于2014年12月在波特兰开碰头会时才拉开序幕。当时的想法是通过创意众包为Firefox OS寻求新的发展方向,我们希望从Firefox OS团队成员以及整个社区征集创意。遗憾的是直到最后也没有得出一个明确的方向,3.0版被降级为“2.5”版,只提供了一些仓促赶工的功能。

Pivot的发布

平淡无奇的2.5版发布,此时我们依然缺乏全套的领导班子,从2015年开始,Firefox OS逐渐停摆了。最后Firefox OS团队改名为互联设备团队,随后在奥兰多召开的公司全员碰头会上公布了“Pivot”。

奥兰多会议的一个隐晦的结论是:“Firefox OS已经准备好与Android和iOS展开竞争,但最终失败了。”实际上Firefox OS诞生太晚,应用商店未能流行起来,智能手机的战争已经分出了成败。是时候转向下一个战场:物联网了。

我所设想的一些互联设备产品

B2G的最终失败

在奥兰多公布的信息很快被Mozilla内部一些人解读为“Firefox OS已死”的征兆。考虑到过去多年来为Firefox OS付出了如此多的资源,Mozilla的其他团队感觉自己不被重视。最重要的Firefox团队和支持平台团队在很长一段时间里都在抱怨无法获得足够的资源,他们开始指责是Firefox OS造成了Firefox市场份额的下滑。Firefox OS很快成为Mozilla所有挫折的替罪羊。

我们启动了“B2G过渡项目”,并借助了Mozilla社区的力量,这样如果有其他人希望继续维护,还可以将有关智能手机的代码转移给社区。社区很乐于接受这个挑战,并欣然参与其中。讽刺的是此时的B2G项目才开始获得最大程度的社区参与。

B2G OS架构过渡

技术上,由社区接手的“B2G OS”依然是一个分支,但随着基础架构的陆续关闭,以及不再有Mozilla员工带薪维护代码,这样的分支绝对不可能最终落实。最巅峰时期,约有300名全职Mozilla员工参与了Firefox OS项目,社区根本无法提供近似数量,具备丰富技能的全职人手。Boot to Gecko最终还是失败了。

复盘总结
成功该如何衡量

对于我们有关Firefox OS的成就,我倍感自豪。如果以最初的目标作为标准衡量该项目是否成功,我认为这个项目的成就远远超出预期。我们以技术原型机为基础,成功制造出包括智能手机和智能电视在内20种不同的商业性设备,并在超过30个国家和地区销售。抛开工程方面的壮举不谈,为Web平台打造的30个全新API原型,创建了可能是有史以来最复杂的JavaScript代码库,我们还从零开始打造了一个移动操作系统并顺利上市,这些工作都是在不到两年的时间里完成的。据我所知没有任何其他团队实现过类似的壮举。

到最后我也不知道一共售出了多少Firefox OS设备,合作伙伴并未与我们共享销售数据,我们也没问过。根据有限的了解来猜测,大概会有5百万部(约1百万的误差)。对我来说这是个了不起的成就,这样的表现已经远远好过其他“非主流”的移动操作系统,同时这无疑也是我所参与过的最成功的项目。但在这样一个年出货量超过10亿部的行业,市场份额甚至不到0.5%!

对我来说,从未关心过Firefox OS能否成为第三大移动操作系统。我关注的重点在于推动Web技术突破极限,让Web成为一个更有竞争力的应用开发平台。我觉得我们无疑已经做到了,我认为我们的工作对于目前围绕渐进式Web应用(Progressive Web App)所进行的创新起到了巨大的推动作用。我依然坚信Web终将获胜。

最大的成就
  • 设计 —设计了一套操作简单、界面新颖、包含一些创新式功能的移动操作系统,例如用于切换窗口的边缘手势。尽管我们的愿景并未完全实现,但至少在基于浏览器的操作系统到底该如何实现这方面获得了一些不错的成果。

  • 工程 —从零开始打造了一个完全开放的移动操作系统,并在不到两年时间里成功上市。据我所知,能实现这种速度的团队仅此一家。借助足够精益的技术栈,我们在渲染Web内容时可以实现非常近似于移动设备裸机运行的性能,很多情况下甚至胜过了相同配置硬件上运行原生代码的性能。同时还通过30个实验性的全新Web API推动了Web技术进步,创造了一种全新的Web应用发展趋势。

  • 产品 —在超过30个国家和地区成功发布了20款设备,并动员Mozilla社区协助举办发布会,顺利举办了很多品牌和营销活动。尽管最终未能成功,但成功塑造了“Web即平台”这一理念。

  • 合作 — 赢得移动通信行业史无前例的支持。多次在全球最大移动通信行业活动MWC中大出风头,让大型电信公司认可Mozilla的使命,与竞争对手公司就共同的目标展开合作。

最大的失误
  • 设计 — 从模仿已有技术着手,而非从更简单,更独特,并且更专注于Web的技术着手。我们本来以为稍后可以随时调转方向,但实际上这样做远非我们想象的那么容易。

  • 工程 —为了尽快上市,我们通过应用打包机制模仿了应用商店这种做法,但这为我们制造了大量困难。我们忽略了使得Web技术大获成功的关键特性(即URL),过多专注于Web栈的客户端,而非服务器端。

  • 产品 — 在意识到“开放”本身不足以成为一个卖点后,最终我们选择主要以价格取胜的战略,而这只是一种逐底竞争(Race to the bottom),导致首发后的产品缺乏领先优势和后续发展方向。

  • 合作 — 将运营商和OEM厂商视作自己的客户,在功能优先级划分方面采取了“有坑必填”(Tick box)的方法使得我们错失对最终用户需求及自己最初使命的深入理解。同时也未能守住直接向最终用户分发更新的“权力”。

放在今天我会怎么做
  • 设计 — 会以一个极为简单的,基于浏览器的设计着手,专注于Web内容本身,而非试图重建其他操作系统已经具备的每个功能。非必要功能可以狠心放弃,根本不要想着追赶对手。

  • 工程 — 在“外壳”和Web内容之间建立明确的划分,而非试图迫使Web去做那些本就不适合的工作。使用REST和WebSockets在Web栈的服务器端创建设备API,不要在客户端为JavaScript DOM API提供任何特殊待遇。围绕网上丰富的Web应用打造一个社区,而非提供一个供大家提交打包应用的应用商店。

  • 产品 — 不要试着生产最廉价的智能手机。而是要生产中端级别的平板(甚至可以考虑生产智能电视棒),让所有产品专注于Web内容、游戏,以及娱乐。首先在发达市场赢得立足之地,而不是一头扎进新兴市场。

  • 合作 — 围绕Mozilla制定的产品方向线路图,在合作伙伴面前表现出更有力的坚持,有勇气拒绝和发展战略不符的机会。直接向最终用户提供软件更新,远离所有妨碍我们分发自有操作系统的芯片供应商(当时要这样做非常困难,但现在已经容易多了)。

说了有关Firefox OS的这么多事,我只希望在技术史中,除了一条“Mozilla开发但最终失败的移动操作系统”的注脚之外,还能给大家留下一段回忆。

很多非常聪明有才的人对Boot to Gecko项目付诸了太多的热忱和努力。这一点让我倍感自豪,他们也会有这样的感觉。也许我们让曾经寄予厚望的外界失望了,但在我看来,Firefox OS是成功的,也是我职业生涯至今最辉煌的成果!

本文翻译已获授权,原文链接见:

https://medium.com/@bfrancis/the-story-of-firefox-os-cb5bf796e8fb#.o875dc87j

PS: 备份内容仅显示纯文字。

抱歉,服务器忙,未能成功提交,稍后重试。