一個失敗移動操作系統的前世今生,別了Firefox OS
編者按:本文來自微信公眾號“”(ID:infoqchina),作者 Ben Francis,經原作者授權由 InfoQ 中文站翻譯并分享。
在 Android、iOS 雄霸的時代,也有一批全新面貌的操作系統在兩大巨頭的夾縫中求生存。但即便是有微軟庇蔭的 WP 也行將死亡。這批市場份額「其他」的操作系統中就有 Firefox OS,雖然是個失敗的操作系統,但它曾想改變點什么,這已經是我們必須報道它的理由。
2016 年 2 月 5 日,Mozilla 在給開發者的電子郵件中宣布,在 2.6 版本之后,將正式停止開發 Firefox OS 手機版操作系統,這一舉措,也就意味著 Firefox OS 的失敗。本文作者 Ben Francis 是 Firefox OS 操作系統的開發者之一,他從自身經歷出發講述了 Firefox OS 的前世今生。
Firefox OS 是個失敗的操作系統,知道的人并不多,但它曾經想改變點什么,我們應該報道下這個內容,讓它在國內的社區中,留點痕跡。
寫在前面
我叫 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 甚至與奧斯卡一起登上了 推ter 趨勢榜!這幾乎是所有公關人員夢寐以求的結果。
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 是成功的,也是我職業生涯至今最輝煌的成果!
來自: InfoQ