BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Firefox OS的故事

| 作者 Ben Francis 关注 0 他的粉丝 ,译者 大愚若智 关注 9 他的粉丝 发布于 2017年4月14日. 估计阅读时间: 52 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

本文最初发布于Ben Francis的博客,经原作者授权由InfoQ中文站翻译并分享。

2013年世界移动通信大会

我还记得在一次团队晚宴上,Mozilla的女董事长兼“首席蜥蜴斗士(Chief Lizard Wrangler)”Mitchell Baker曾谈到讲故事(Storytelling)的重要性。她谈了在开源软件社区中,如何通过讲故事帮助我们反思彼此分享的经验并从中学习。

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

作为一名工程师,我对这个项目高层决策、财务情况,以及业务合作的认识可能并不完善。但我参与这个项目的时间已经足够长了,甚至比该项目任何共同创始人资历更老,在工程、设计,以及产品层面获得了很多见解。

所以我想以自己的视角讲讲Firefox OS。从Boot to Gecko开源软件项目在2011年通过邮件列表中发布的一封邮件,以一个空的GitHub代码库闪亮登场,到后来以Firefox OS移动操作系统的形式商用发布,再到2016年将数百万行代码“转移”给社区,这个故事的跨度很大。

五年时间,Mozilla社区的数百位成员因为一个共同目标走到一起,希望借助开放网络的力量颠覆应用生态。我希望借助本文对我们基于开源浏览器打造移动操作系统过程中所收获的成功、失败,以及学到的经验教训进行反思。

这个故事很长,如果你不想完整阅读,可以从下面的总结中了解相关重点。希望你不会认为这些仅仅是我的个人观点。

总结

最大的成就

  • 设计?—设计了一套操作简单、界面新颖、包含一些创新式功能的移动操作系统,例如用于切换窗口的边缘手势。尽管我们的愿景并未完全实现,但至少在基于浏览器的操作系统到底该如何实现这方面获得了一些不错的成果。
  • 工程?—从零开始打造了一个完全开放的移动操作系统,并在不到两年时间里成功上市。据我所知,能实现这种速度的团队仅此一家。借助足够精益的技术栈,我们在渲染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制定的产品方向线路图,在合作伙伴面前表现出更有力的坚持,有勇气拒绝和发展战略不符的机会。直接向最终用户提供软件更新,远离所有妨碍我们分发自有操作系统的芯片供应商(当时要这样做非常困难,但现在已经容易多了)。

启动整个Web

“Boot to Gecko”(B2G)开源项目最初在2011年7月公布,该项目的目标是打造“一个适用于开放式Web的完整、独立的操作系统。”

“Mozilla相信,Web可以取代各种专有技术,以及应用开发过程中使用的单一供应商技术栈。为了让开放的Web技术为以后在移动设备和桌面等处运行的应用程序奠定一个更好的基础,我们需要推动Web技术持续发展,容纳并最终超越现有计算栈所具备的能力。”

这一举措的重点在于:

新的Web API:能将设备和操作系统能力(电话通话、短信、USB、蓝牙、NFC等)暴露给内容的原型API。

特权模型:确保这些新的能力可以用安全的方式暴露给网页和应用程序。

启动:为兼容Android的设备构造一个底层基板(Substrate)原型。

应用程序:挑选并移植或构建应用,借此证明该系统的强大之处并据此划分工作优先级。

首个(非官方的)B2G项目徽标,作者Sean Martell

此时还没有考虑商业化智能手机或移动设备的市场份额,因为这一阶段的目标主要是“推动Web技术的进化”,并证明该系统的能力。

共同创始人

该项目的四位共同创始人分别是Andreas GalChris JonesBrendan Eich以及Mike Shaver

B2G项目的共同创始人(从左至右:Andreas、Chris、Brendan、Mike)

Andreas是一位非常聪明的工程师,他的博士论文主题恰好是高级编程语言的即时编译,他在2008年加入Mozilla,负责开发了TraceMonkey,有史以来第一个JavaScript即时编译器。他最近还完成了PDF.js的开发,这是一种使用JavaScript编写的PDF渲染器,此举是为了证明JavaScript的强大之处。

Chris在伯克利大学获得计算机科学的博士学位,于2009年加入Mozilla,和Andreas一起负责PDF.js的开发。

Brendan是JavaScript的发明人,与Mitchell Baker一起在1998年创立了Mozilla。B2G项目公布时Brendan担任Mozilla的CTO,因而成为该项目的主要负责人。

Mike是1998年Mozilla成立时的创始成员,当时担任工程副总裁和技术战略副总裁职务,但在B2G项目公布后不久从Mozilla离职。

Mozilla公布B2G后我就申请了该项目的工作,但我的申请当时并未立刻获批,不过我明白这事情造成了一些人的困扰。部分原因在于这则消息未经任何正式的内部讨论就通过一个公开邮件列表发布了,另外部分原因是因为大部分人(包括公司高管)对这个项目并无太多了解,甚至没想过这则消息会公布出去。

感觉上这更像是很多初创公司进行的实验性项目,某种程度上甚至是在Mozilla公司的日常运作之外进行的。

搭建完成

从一个空白的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大楼的办公室筹备过程中,在台北进行了首次线下面对面工作周活动。当时的工作周活动地点位于君悦酒店内,我们首次在不使用浏览器插件的情况下,通过网页拨打了有史以来的第一通电话通话。手机最基本的必要功能已经逐渐具备了。

2011年12月,台北

原型机

随后我们还于2012年2月在巴黎举办了工作周活动,当时整个团队(包含来自高通公司的Michael Vines以及我们的“单枪匹马”UX团队成员Josh Carpenter)一直奋战到最后一分钟,组装了用于在那个月的巴塞罗那世界移动通信大会上展示的原型机。

2012年2月,巴黎

我们不仅圆满完成了最初B2G新闻中所公布的组件,而且基于现有Android硬件提供了可实际运行的概念验证演示机。我们带着运行该原型系统的三星Galaxy II智能手机参加了MWC。这则消息是与我们的第一个合作伙伴西班牙电信联合公布的,此外还得到了Adobe、高通,以及德意志电信公司的支持。西班牙电信在媒体大会上演示了高通参考架构上运行的B2G软件。

B2G原型机,MWC 2012,巴塞罗那

此举吸引了其他移动运营商的目光,他们当时正在寻找有望挑战Android的平台,希望借此在移动操作系统领域提供更丰富的选择,从处于支配地位的Google和Apple处夺回一些控制权。

作为一个非盈利,以“推动Web世界的开放、创新和机遇”为使命的项目,Mozilla实际上是在贩卖一个独特的愿景:不是让我们自己的应用平台成为移动领域的“第三平台”,而是要将开放的Web推向这个地位。与桌面端类似,Web的普遍性和规模性使其有望成为唯一可与现有应用平台竞争的对手,当然,这得是在Mozilla的领导下。

合作伙伴

得到新合作伙伴的支持后,Mozilla承诺在第二年提供可上市销售的商业化设备。

作为我们的第一个合作伙伴,西班牙电信一直也在从事着自己的“Open Web Device”项目。他们最初的想法是由Mozilla提供基于Gecko的底层平台,西班牙电信自行添加自己的Open Web Device前端,借助自己的经验为设备提供认证并投放市场。

对于Mozilla这样的开源技术公司来说,与西班牙电信这种规模的通信巨头合作还是头一遭,不得不说,一开始还遇到了企业文化方面的冲突。双方在几个方面有些冲突,甚至Mozilla和西班牙电信一度曾各自开发自己的前端。

西班牙电信和Mozilla各自开发的B2G前端

大家很快发现将手头资源聚集在一起,共同开发一个移动前端是一种更合理的做法。很快,Mozilla和西班牙电信的工程师开始并肩工作。两个团队的工程师对这种方式很适应,很快就变得亲如一家。

德意志电信是另一家很早就投身该项目的合作伙伴,随着移动运营商的加入,想要获得OEM厂商的兴趣就更简单了。最初的两家OEM厂商是来自中国的生产商中兴通讯和TCL。

这些合作关系之所以如此重要,原因之一在于高通。高通是与我们合作的第一家芯片制造商,但他们不能直接将自己的固件和设备驱动授权给我们,必需绕道运营商或OEM厂商。这意味着我们无法以合法的方式将操作系统完工后的版本或更新直接分发给用户,移动操作系统更新方面的经济因素为我们造成了严峻的问题。

Firefox OS 1.0

接下来的一年里,Mozilla与合作伙伴密切合作开发了整套达到可投产质量的移动操作系统。

设计

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

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

实现

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

在互联网连接不可靠或不可用时,所有内置的Gaia应用都必需能脱机使用,对我们来说这是个必需实现的条件,这样用户才可以继续接打电话,拍照,听音乐,或执行其他操作。一开始我们针对这个需求使用了AppCache,这是Web技术领域首次试图让Web应用能够脱机使用而做的尝试。然而我们很快开始面临该技术的一些常见问题和局限,发现这个技术并不能完全满足我们的所有需求。

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

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

打包应用的做法虽然解决了当时最迫切的问题,但并不是真正的Web应用,因为这种应用并不具备Web的一大特征:真正的URL,并且最终需要由一个中央的权威机构(例如Mozilla)进行签名才能证明其安全性。当时我就打包应用的方法“并不Web”这个问题提出了自己的意见,但大家找不到其他能确保如期实现并交付的更可行的办法。

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

向着终点狂奔

无论如何,所有这些努力让我们于2013年1月在柏林度过了一个忙碌的工作周,Mozilla与芯片制造商高通、移动运营商西班牙电信和德意志电信,以及设备制造商中兴通讯和TCL一起,向着1.0版的顺利发布共同努力着。

由德意志电信举办的这场活动是B2G开发过程中最令人难忘的回忆之一。大家在一个有着超快网速的大房间里亲密合作,前端与后端团队之间还进行了一场友好的竞赛,大家在比谁能首先修复自己的所有Bug。竞赛结果会实时显示在投影屏上,大家可以一起监督整个过程。整整一周里大家都干劲十足,共修复了超过200个Bug。

柏林工作周,2013年1月

待到周末时,Andreas Gal宣布“Zarro boogs”和Firefox OS 1.0版正式诞生(另外,前端团队赢了!)。

2013年世界移动通信大会

我们发布的第一个商业化版本Firefox OS实际上是1.0.1版,所有必要的测试和认证均已完成。2013年2月,我们在巴塞罗那世界移动通信大会(全球最大规模的移动通信技术大会)上公布了首个商业化设备,首发设备包括ZTE Open和Alcatel One Touch,这两款机型会通过西班牙电信和德意志电信在巴西、哥伦比亚、匈牙利、墨西哥、黑山共和国、波兰、塞尔维亚,以及委内瑞拉销售。同时LG和华为也承诺会发布相关设备。

ZTE Open和Alcatel One Touch智能手机

当时消息是在MWC召开前一天通过媒体大会公布的。我们本来估计会有大约250名与会者,结果当天来了超过700家媒体、传媒、分析师嘉宾。

Firefox OS媒体大会,MWC 2013,巴塞罗那(来源

我们还设法达成了一项史无前例的壮举,18个电信公司的CEO共同登台表达对该项目的支持,这样的盛况就算放在GSMA(全球移动通信系统协会)也足够让人吃惊了。

CEO出席媒体大会,MWC 2013,巴塞罗那(来源

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

MWC杂志,MWC 2013,巴塞罗那(来源

我们在大会上的展位设计非常酷(当然在西班牙电信和德意志电信的展位上也露了脸),有前台,有一个巨大的狐狸尾巴悬挂在头顶上,还提供了大量体验机。

Firefox OS展位,MWC 2013,巴塞罗那(来源

我在活动中负责进行演示并接受媒体采访,我可以告诉你,当时的场面实在是火热到不行。大量运营商、OEM厂商,以及媒体都对我们的成果表现出极大的关注。

乱入抢镜的Android吉祥物!

在这样一个以“展台女郎”(参展公司雇来展示自家设备的专业模特)而声名狼藉的活动中,我觉得真正让Firefox OS展位与众不同的原因在于,大部分工作人员是真正参与过这个项目的,其中很多人甚至还是志愿者。这一点出乎很多与会者意料,人们竟然会因为对这个项目的满腔热忱而免费贡献自己的时间帮助推广这个项目。

世界移动通信大会,巴塞罗那,2013年2月(来源

MWC结束后,当我们的设备开始陆续在首发国家上市后很长一段时间里,人们依然在积极参与这个志愿者社区。在西班牙、波兰、委内瑞拉、哥伦比亚以及其他国家的发布会都涌现出本地Mozilla社区成员的身影。

这是一段拍摄于2014年的视频,介绍了Firefox OS截至1.0版的诞生过程。

视频:https://youtu.be/LizAjaOXi4U

Firefox OS的旅途,v1版背后的故事

Firefox OS 1.x

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

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

因而我们的工作很快陷入了这样一种怪圈:开始将移动运营商和OEM厂商视作自己的客户。他们的需求无穷无尽,而那些需求基本就是照搬各种Android设备上已经具备的功能。他们希望Firefox OS在功能方面与Android保持一致。

我还记得2013年,我曾在高通位于美国圣地亚哥的办公室里,用了整整一周时间和一群来自韩国LG的工程师闭门工作,以确保Firefox OS的所有内建应用能在相同硬件上实现比Android平台类似应用更快的启动速度。出于保密的原因,他们不能告诉我们Android应用在他们设备上启动到底要花多少毫秒,只能告诉我们Firefox OS应用的启动速度到底是更快还是更慢。我们只能不断进行优化,直到实现更快的启动速度。运行Firefox OS 1.1的LG Fireweb终于在2013年10月发布了。

预装Firefox OS 1.1的LG Fireweb,2013年10月

随着我们在2013和2014年陆续发布1.11.21.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中的那几千个应用。

我们尝试过与一家名为Everything.me的初创公司合作解决这个问题,这家公司建立了一个Web应用目录,我们可以借助他们的服务扩大自己的内容覆盖面。但这种依赖某一个集中目录的做法,相比我们试图解决的依赖某一个集中应用商店的问题,实际上是换汤不换药。

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

连接下一群十亿用户

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

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

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

25美元的智能手机

2013年年中,宫力开始掌舵Firefox OS。他主要负责启动并经营Mozilla在中国大陆和台湾地区的业务,同时还担任“移动设备资深副总裁”的角色。

宫力,MWC 2014,巴塞罗那(来源:CNET

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

整个团队通过天才的工程设计,让Firefox OS成功地运行在基于Spreadtrum芯片组,只有128MB RAM的极低端硬件上,这一水平已经远远低于同时期Android的最低要求。

我们带着“25美元的智能手机”参加了MWC 2014,与低成本掌上设备制造商Intex和Spice建立了合作关系,并提出了“连接下一群十亿用户(Connecting the next billion)”这样的口号。这个口号与Mozilla的使命似乎不谋而合,在MWC上引起了巨大反响,整个移动行业都在纳闷我们接下来会做什么。

25美元智能手机概念原型机,MWC 2014,巴塞罗那(来源

Firefox OS借助廉价智能手机开始在亚洲(印度、孟加拉国)、拉丁美洲(萨尔瓦多、巴拿马、尼加拉瓜、危地马拉)以及东欧(捷克共和国)攻城略地。

Firefox OS公交车,印度

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

通过价格进行竞争,意味着很快就会见底,最终只能由实现最大化规模经济的厂商获胜。Google很快发现了这个缺口并推出Android One这款以新兴市场为目标的廉价设备。可以说Android One的市场表现也没有好到哪里去,但足以让我们明白单纯通过价格竞争是无法获胜的。

新兴市场的用户也许没有太多可支配收入,但这并不意味着他们就安于接受低质量产品。他们要的不是廉价的“精简版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),可供用户随意浏览使用不同应用,并在需要时收藏应用,而不像单体应用那样,使用之前必须从一个集中的应用商店下载并安装。

2013年6月,一群设计师和工程师在巴黎碰头,共同开发了Haida的抛弃型原型(Throwaway prototype),借此对一些激进的概念进行快速迭代,并进行用户测试。

Haida团队碰头会,巴黎,2013年6月

下面是一段Josh Carpenter在2013年10月拍摄的,大家就Haida的设计概念进行交流的视频。

视频:https://youtu.be/n3f5mMK5P-k

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

Firefox OS 2.x

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

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

Firefox OS 3.0

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

宫力离开Mozilla后成立了一家名为Acadine Technologies的初创公司,该公司创建了Firefox OS的分支(Fork),并从几家有中国政府背景的机构获得了一亿美元投资。他离职时还带走了Mozilla台北办公室的很多工程师,此举对Mozilla造成了极大影响,并产生了一些芥蒂。这做法真是得不偿失,1亿美元的投资最终没能落实,而Acadine也逐渐淡出了我们的视野。

Andreas Gal离职后创建了Silk Labs,并带走了Chris Jones以及B2G团队几名重要的元老级成员。后来产品主管Chris Lee也走了,导致Firefox OS团队开始面临高层领导层的真空期。

这些事情发生在Chris Beard接任Mozilla CEO期间,因此当时只能由他暂时负责管理Firefox OS团队,同时尽快补充新鲜血液。Chris是一位很棒的CEO,作为一名长期的Mozilla人,他对Mozilla的理念有着更直观的理解,但作为CEO,他根本没有时间或精力积极领导Firefox OS的产品开发。

3.0版的构思过程

由于缺乏切实可行的产品发展方向,“3.0版的构思过程”直到最后一刻,全公司员工于2014年12月在波特兰开碰头会时才拉开序幕。当时的想法是通过创意众包为Firefox OS寻求新的发展方向,我们希望从Firefox OS团队成员以及整个社区征集创意。

3.0版构思过程,波特兰,2014年12月

表面上,像我这样的人对应该选择什么方向继续开发有着清晰的想法,这似乎是一个很好的机会。但随着我们随意组建了36个小组开始集思广益征集想法,好的创意逐渐被各种杂音淹没了。整个构思过程完全没有任何限制,也没有足够的流程对不同创意进行评估,人们开始天马行空地提出各种建议,从智能手表到货币概念的再造不一而足!

到最后也没有得出一个明确的方向,3.0版被降级为“2.5”版,只提供了一些仓促赶工的功能。

Pivot

平淡无奇的2.5版发布,但此时我们依然缺乏全套的领导班子,从2015年开始,Firefox OS逐渐停摆了。

最后我们雇佣了Ari Jaaksi担任新的“互联设备”主管。Firefox OS团队改名为互联设备团队,随后在奥兰多召开的公司全员碰头会上公布了“Pivot”。

Ari Jaaksi,Orlando All Hands活动,2015年12月

Mozilla大概会叫停我们通过运营商合作伙伴生产和销售智能手机的做法,而我们大概会转为围绕互联设备和物联网打造新的用户体验原型。我们可以将原本为Firefox OS开发的各种技术作为新的起点,而Firefox OS也许可以在诸如智能电视等设备上重获新生(与松下的合作就是一个证据),但我们的重心已经不再是智能手机了。

最后我们在大屏幕上播放了一段Ari激励我们的视频(见下方)。

视频:https://youtu.be/0KtOp5IFW38

Firefox OS?—新篇章,曾在2015年12月举行的Orlando All Hands活动中播放

根本没人在意。他们都在忙着谈天说地,消化这则新闻并理解其背后的含义。

Ari的讲话基于这样一种前提:Firefox OS已经准备好与Android和iOS展开竞争,但最终失败了。实际上Firefox OS诞生太晚,应用商店未能流行起来,智能手机的战争已经分出了成败。是时候转向下一个战场:物联网了。

这个结论让我觉得有些受挫,因为我从来没想过我们的目标是让Firefox OS成为第三大移动应用平台,我们的目标应该是推动开放Web的进化,使其成为一个有竞争力的应用开发平台。这个项目虽然已经停顿,但我们确实在Haida中提出了一些绝佳的想法,但最缺乏的是专注。

然而我也在设法接受这个新方向,长久以来我自己也觉得相比一开始选择智能手机,平板电脑也许是更适合Firefox OS的设备类型,而智能电视也是个不错的方向。毕竟这些也都算是“互联设备”。

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

产品创新流程(Product Innovation Process)”正式拉开序幕,这是另一个为了获得产品创意而进行的自下至上的构思过程,只不过这一次更有条理(因为争吵了太多次)。互联设备团队的运营从本质来看更像是一种初创公司孵化器,团队成员需要接受“精益创业”培训,随着将产品创意介绍给“产品创新委员会”,我们每个人都成为了物联网技术各种新兴领域的专家。

过渡期

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

要我说,部分怨恨也许是合理的,但事态开始快速失控,Firefox OS很快成为Mozilla所有挫折的替罪羊。大家普遍认为Mozilla把“全部家当”押赌在Firefox OS身上的做法得不偿失。巨大的政治压力开始在Mozilla内部蔓延,有人要求将B2G的所有记录从代码库中移除,将这些资源重新分配给我们的旗舰产品Firefox。

互联设备团队开始减员,减少了大约40人。大家开会评估按照新方向现有B2G代码库还有多少剩余价值,有多少内容可以移除。一些人认为B2G代码已经拖累了Firefox的开发,没必要付出成本继续维护这些代码。

一些互联设备项目(例如平板和智能电视项目)依然计划使用B2G的部分代码,因此我们最后达成的计划是大幅精简B2G架构。我们彻底移除了有望成为全新Web标准的mozApps打包应用运行时,并移除了之前采取以全新Web服务为基准的方法时为Gecko增加的约30个设备API,很明显这些东西绝对不可能成为Web标准了。

B2G OS架构过渡

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

虽然我们很快移除了mozApps运行时,以及Gecko 30个设备API中的10个API,但内部政治压力有增无减,他们要求我们从Mozilla代码库中彻底移除所有关于B2G的记录。平板和智能电视项目已经彻底停工,互联设备团队开始将精力转投他处。

从技术角度来看,Mozilla项目采取的模块化所有权机制完全独立于Mozilla公司的汇报结构。作为最后的努力,B2G的模块所有者(当时是Fabrice Desré)就将B2G模块从Mozilla项目中移除提出过争议,这件事甚至吵到了公司最高管理层,但最终决策依然是:移除。

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

Boot to Gecko最终还是失败了。

结论

成功该如何衡量

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

成功上市的20款Firefox OS产品中的一部分

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

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

曾经有一段时间,整个团队偏离了最初的目标,不知何故竟然想要成为Android和iOS之外的第三大智能手机平台,并以市场份额作为衡量成功与否的唯一标准。在很短的时间里,B2G团队从最初的四位共同创始人发展成上百位成员的规模,初创公司因为成长太快而失去使命和专注的情况已经司空见惯了(在我眼中,Firefox OS就是Mozilla内部的一家初创公司)。

时机问题

有一种常见的看法认为,Firefox OS只是因为上市太晚。在与中国深圳的一些专家谈过之后,我已经不太确信这种说法。他们向我建议说,如果我们从今天才开始开发Firefox OS,曾经为我们制造了不少麻烦,使得我们必需借助移动运营商,而非直接向最终用户发布软件更新的许可问题就不再是问题了。随着移动设备的硬件商品化程度越来越高,现在很容易就能找到可以运行我们软件的白标硬件。很多OEM厂商有一种切实的意愿,希望摆脱对Google的依赖,让自己获得差异化的竞争优势。也许Firefox OS的问题不在于晚了五年,而在于早了五年!

像我们这些从事Web技术的人倾向于认为自己正在做各种非常前沿的工作。但Web的标准化需要极长时间的沉淀。新的功能和特性始终会首先以原生代码的形式出现,随后才会通过标准化过程变身为跨平台解决方案。要我说,Web实际上更适合成熟度和商品化程度更高的硬件平台,并且最终会通过一种与桌面端类似的做法在移动端取得胜利。只有当这一天尽快到来之后,面向Web的移动操作系统才能成功。

正确的决策是什么?

奥兰多活动中公布的消息到现在已经超过一年了,我有足够的时间经历Firefox OS死亡之后的不同阶段:拒绝、愤怒、挣扎、沮丧,最终接受!

至此,尘埃落定,我可以坦然承认,我依然觉得全面叫停Firefox OS是一个错误的决策。由于在很长一段时间里缺乏领导,这个项目逐渐丧失了动力,但我依然认为作出彻底叫停这一决策,主要是出于内部的政治原因,而非业务或技术原因。

随着移动设备市场愈加成熟,商品化程度越来越高,Web技术也在逐渐成熟。机遇依然存在,实际上现在也许是更好的时机。虽然我理解该项目被叫停的原因,但我依然认为停得太早了,早到它还没机会展现自己的全部潜力。如果能够重新启动,并确定一个严格但清晰的方向呢?很可惜没有这样的机会。

很多人会争辩说我这是妄想,嘴上说说固然简单,毕竟为了确保一个如此大规模的项目顺利运转,所需的资金并不是我提供的。他们会说,我们本来有机会的,但是搞砸了,而Mozilla应该将所有精力用于自己的旗舰产品Firefox上。在我看来,这样的看法太过局限。Web技术已经在很多方面超越了浏览器的范畴,是时候眺望未来,考虑整个互联网所面临的全新挑战了。

学到的经验

很遗憾,出于政治方面的原因,目前在Mozilla内部重启B2G已经不可能了,但如果有机会再来一遍,这次我会怎么做?

  • 设计?—会以一个极为简单的,基于浏览器的设计着手,专注于Web内容本身,而非试图重建其他操作系统已经具备的每个功能。
  • 工程?—?在“外壳”和Web内容之间建立明确的划分,而非试图迫使Web去做那些本就不适合的工作。使用REST和WebSockets在Web栈的服务器端创建设备API,不要在客户端为JavaScript DOM API提供任何特殊待遇(成就Web的不是JavaScript,而是URL)。围绕网上丰富的Web应用打造一个社区,而非提供一个供大家提交打包应用的应用商店。
  • 产品?—?不要试着生产最廉价的智能手机。而是要生产中端级别的平板(甚至随后可以考虑生产智能电视棒),让所有产品专注于Web内容、游戏,以及娱乐。首先在发达市场赢得立足之地,而不是一头扎进新兴市场。
  • 合作?—?围绕Mozilla制定的产品方向线路图,在合作伙伴面前表现出更有力的坚持,有勇气拒绝和发展战略不符的机会。直接向最终用户提供软件更新,远离所有妨碍我们分发自有操作系统的芯片供应商(当时要这样做非常困难,但现在已经容易多了)。

脚注

这就是我要讲的故事。故事很长,如果你没有跳过上文某些无聊内容读到这里,我表示万分钦佩!

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

很多非常聪明有才的人对Boot to Gecko项目付诸了太多的热忱和努力。这一点让我倍感自豪,他们也会有这样的感觉。也许我们让曾经寄予厚望的外界失望了,但在我看来,Firefox OS是成功的,也是我职业生涯至今最辉煌的成果!(Google在2008年发布首款Android智能手机时,我还在Google做实习生,但在我看来,Firefox OS带给我的成就感远胜Google的实习生职位)。

Firefox OS背后的一些天才(以及我),惠斯勒,2015年6月

现在我依然对Mozilla的使命深信不疑,同时也觉得Mozilla即将迎来一个激动人心的全新篇章,我已经迫不及待想跟你讲讲一些新兴技术了。不过还是改天再说吧。

最后,请原谅我任性地用我和妻子在2014年拍摄的一段视频作为本文的结尾,其中包含了鲍勃·迪伦的模仿秀,以及开发Firefox OS的美妙过程中拍摄的一系列照片。(看看你能不能找到在发布会上体验Firefox OS的伯纳斯·李爵士!)。

视频:https://youtu.be/ujNCOdslzH4

变革的时代(The Times They Are a Changin’),Open Web混音版,作者Ben和Siobhan

谢谢Siobhan Currell。

作者Ben Francis阅读英文原文The Story of Firefox OS


感谢郭蕾对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

很好的文章 by 孙 庚泽

这种由亲历者讲出来的故事确实很真实,很吸引人。

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT