The Story of Firefox OS
在各種嘗試與 iOS 及 Android 競爭的行動作業系統裡,Firefox OS 是最讓 DR 感興趣的一款。但不幸的是,Mozilla 卻在 2015 年 12 月宣佈放棄 Firefox OS 手機(然後又在 2016 年 9 月宣佈完全終止 Firefox OS 的開發),導致 DR 對於該如何選擇自己的下一部手機,感到非常的茫然……
老實說,DR 認為 Mozilla 從瀏覽器向下擴張到作業系統的研發,是完全合情合理的舉動(畢竟它的主要競爭對手都有自己的作業系統)。也許方向可以調整,但最終全然放棄則是一項令人匪夷所思的決定。
關於 Firefox OS 的故事,一名 Mozilla 的員工 Ben Francis 撰寫了一篇文章《The Story of Firefox OS》。而以下就是 DR 所做的翻譯,有興趣的人就繼續讀下去吧。
The Story of Firefox OS
我記得 Mozilla 的執行董事長暨「首席蜥蜴駕馭者」Mitchell Baker,曾經在一場團隊晚宴中談到說故事的重要性。她說在開放原始碼社群裡傳達這些故事,能夠幫助我們從這些過往的經驗中省思及學習。
所以呢,大家好,我是 Ben,我是 Mozilla 的軟體工程師,曾在「Boot to Gecko」專案裡經歷過五年全職的歲月,而以下就是我的故事。
作為專案中的一名工程師,我自然不會對高層的決策過程、財務及商業合作等層面有很全盤的瞭解。但我確實長期參與在這項專案中,甚至待得比這項專案的草創者都還要久。因此我深知許多關於工程、設計及產品層面的內幕。
所以這是一則關於 Firefox OS 的故事,而且是從我的角度來述說的。故事會從 2011 年開始,起初 Boot to Gecko 專案不過是某個郵件列表的一則訊息,以及一個空的 GitHub 專案庫。之後 Firefox OS 歷經了商業性發表,但最終又於 2016 年全面「社群化」,將數以百萬計的程式碼交給社群。
在這五年歷程裡,許許多多擁有共同願景的 Mozilla 社群成員集結在一起,期望藉由開放 Web 的力量來打破現今的應用程式生態。我們企圖以開源瀏覽器為基礎,設計出一款行動作業系統來打入這個市場。而最終歸結出的成敗與教訓,就是我想要在此分享的內容。
但這故事可不算短,它有 7,500 個字之多!因此我會先直接列出總結,以防你無法讀完全文。同時也請記得,這些不過都是我的個人觀點,無須過於嚴謹的看待。
總結
最大的成就
- 設計 - 設計出一款簡單又時髦的行動作業系統,還附帶了一些創新功能,例如透過螢幕邊緣的手勢動作來切換視窗。並且在以瀏覽器為基礎的作業系統前提下,提出了一些極佳的設計構想,即使並未全數實現出來。
- 工程 - 以不到兩年的時間,從無到有地建構出一款開放的行動作業系統,並推行到市場上。就我目前所知,還未曾有任何其他團隊有做出這番成績。成功讓負責渲染 Web 內容的處理層非常貼近於行動裝置的底層系統,使整個技術堆層保持得相當纖細。在許多案例裡,其效能可勝過同等硬體規格上的原生程式碼。我們還開發出了 30 項實驗性的 Web API,不僅帶動 Web 應用程式的發展趨勢,也為 Web 開發領域帶來翻倍的可能性。
- 產品 - 動員 Mozilla 社群力量來協助各項事宜,包含多場產品發表會、品牌形象的建立以及行銷活動等,成功在超過 30 個國家中推出 20 款裝置。在這些過程中, 我們向世界發聲,宣揚「Web 即平台」的聲明,儘管最終並沒能堅持下去。
- 合作關係 - 贏得來自行動產業前所未見的支持,多次在 MWC(Mobile World Congress,世界行動通訊大會)成為關注焦點。Mozilla 的願景獲得了多間大型電信公司的支持,使許多彼此存在競爭關係的公司在共同的目標上一同開展合作。
最大的錯誤
- 設計 - 從模仿現有的東西開始,而不是聚焦於更加簡單、獨特以及針對 Web 的設計。我們以為方向可以在日後做調整,但事後才發現方向的調整比想像中還要困難。
- 工程 - 為了盡快推到市場上,我們模仿常見的應用程式市集,採用個別封裝的應用程式套件,這項決定造成日後更多需要解決的問題。我們在 Web 的本質上失焦(忽略了 URL),過度關注 Web 的客戶端而非伺服器端。
- 產品 - 在意識到「開放」一詞並不是什麼賣點後,整個營銷策略最終轉變成以價格戰為主,而此舉不過是一種惡性的逐底競賽。並且在首次發表後,整個產品方向便受創於領導層的混亂。
- 合作關係 - 過度重視來自電信商及 OEM 廠商的需求,忽略了真正的裝置使用者以及起初的願景。未能取得直接向使用者推送更新的許可。
換做是今天,我會怎麼做?
- 設計 - 從一種非常簡單、基於瀏覽器的設計開始,聚焦於 Web 內容,而非試圖重現其它作業系統擁有的每一項功能。要勇於放棄某些功能,不要總是想要追趕人家。
- 工程 - 讓圖形視窗介面與 Web 內容之間有清楚的區隔,不要強迫 Web 去做它不適合做的事。利用伺服器端的 REST 與 WebSocket 來建立裝置 API,而非使用經過特許的客戶端 JavaScript DOM API。建立一個社群化的線上 Web 應用程式目錄,而非傳統的應用程式商店。
- 產品 - 不要企圖開發出挑戰價格下限的廉價智慧型手機,先開發中等價位的平板電腦(在此之後,則可以考慮開發智慧電視棒),並專注在 Web 內容、遊戲及娛樂領域。應該針對已經成熟的市場開拓利基點,而不是在新興市場裡畫大餅。
- 合作關係 - 在與合作夥伴往來時,Mozilla 需要採取更加堅定的態度來領導產品路線,如果道不同,可以不相為謀。直接向使用者提供軟體更新,並遠離那些會在推送更新上造成妨礙的晶片供應商(這在當時非常困難,但現在容易多了)。
啟動至 Web
「Boot to Gecko」(B2G)這項開放原始碼專案,最早是在 2011 年 7 月宣佈的,其願景是意圖建構出一款功能完善、並且是針對開放 Web 而設計的作業系統。
「Mozilla 相信藉由 Web 的發展,能夠讓應用程式的運作平台不再盡由產業龍頭所掌控。為了讓開放 Web 技術能夠成為未來行動及桌面應用程式的良好基礎,我們必須要突破 Web 的已知界線,讓 Web 得以實現現有平台的各項功能,甚至是加以超越。」
其中,重點工作項目如下:
新的 Web API:製作多種 API 原型,讓裝置及作業系統的各項功能(通話、簡訊、相機、USB、藍牙及 NFC 等)可被 Web 應用程式存取。
許可模型:確保這些功能可安全地透過頁面及應用程式存取。
系統啟動:製作一個相容於 Android 裝置的底層系統。
應用程式:選定具指標意義的應用程式加以移植或實作,藉此驗證系統的實用性。
在這個階段裡,還沒有人考量到商業化或市佔率的議題,而僅僅是想要「突破 Web 的界線」來證明它的能耐。
發起者
這項專案共有四位發起者,分別是 Andreas Gal、Chris Jones、Brendan Eich 以及 Mike Shaver。
Andreas 是一位極度聰明的工程師,他的博士論文是關於高階程式語言的即時編譯。他在 2008 年加入 Mozilla,協助開發出了世上第一款 JavaScript 即時編譯器──TraceMonkey。而他近期的工作成果是 PDF.js,一款使用 JavaScript 撰寫的 PDF 渲染器,再次證明了 JavaScript 的強大威力。
Chris 擁有柏克萊的計算機科學博士學位,他於 2009 年加入 Mozilla,並且曾與 Andreas 一同開發 PDF.js。
Brendan 是 JavaScript 的發明者,並在 1998 年一同創辦了 Mozilla。在 B2G 專案宣佈之時,他是 Mozilla 的首席技術長,同時也是該專案的主要負責人。
Mike 是 Mozilla 於 1998 年建立之初的早創成員之一,曾擔任工程及技術策略部門的副總經理,不過他在 B2G 專案宣佈後沒多久便離開了 Mozilla。
雖然我是在 B2G 專案宣佈後才加入 Mozilla 的,不過就我所知,這項專案在起初就造成了一些風波。一方面是因為它未經任何具體的內部討論,便直接在公開的郵件列表中宣佈;另一方面則是因為多數人(包含高階主管們在內)事前並未知悉這項專案,使得它的宣佈令人相當意外。
這是一項具「臭鼬工廠」風格的專案,它的運作方式很大部份就像是新創公司一般,有別於 Mozilla 公司的日常作業方式。
組件構成
這些專案發起者組織了一支小規模的團隊,從一個空的 GitHub 專案庫開始進行「Gonk」(一個基於 Linux 核心及 Android 硬體抽象層的系統底層)、「Gecko」(基於 Firefox Web 引擎的應用程式執行環境及裝置 API)及「Gaia」(使用 HTML、CSS 及 JavaScript 等 Web 技術構築而成的智慧型手機使用者介面)的開發工作。
B2G 架構(由上到下):
- Gaia:基於 HTML5 Web 內容的使用者介面。
- Gecko:基於開放 Web API 的 Web 執行環境。
- 移除:位於引擎及核心之間、由產業龍頭所掌控的原生 API 層。
- Gonk:開放的 Linux 核心及驅動程式。
雖然部份程式碼是沿用自 Android 開放原始碼專案(Android Open Source Project,AOSP),但卻移除了 Android 的 Java 層,以 Gecko Web 渲染引擎取而代之,並使其盡可能貼近系統底層。這使 B2G 能夠在效能上取得優勢,讓 Web 內容的執行效率與原生程式碼並駕齊驅。
這支採分散式作業、且持續增長的小型團隊,在 2011 年 12 月進行了第一次的集結工作週,由於那時 Mozilla 的台灣辦公室仍在裝修中,所以地點是選在鄰近台北 101 的台北君悅酒店。我們在那裡首次實現了基於網頁的通話功能,而沒有使用到任何瀏覽器外掛程式,這表示專案的各項基礎已經有了初步成果。
產品原型
接下來的工作週則是發生在 2012 年 2 月的巴黎,現在這支團隊包含了來自高通的 Michael Vines,以及我們的 UX 大師 Josh Carpenter,而整個團隊正加緊趕工,為的是讓產品原型能夠如期在同月的巴塞隆納 MWC 大會加以展示。
我們成功實現了起初 B2G 專案所規劃的各種初步元件,使其能夠在現有的 Android 裝置上運作。這使我們得以順利在 MWC 大會上,透過一部 Samsung Galaxy II 手機展示其概念原型。這是一場聯合了多個廠商的發表會,除了我們的第一個合作夥伴西班牙電信(Telefónica)外,還有來自 Adobe、高通及德國電信(Deutsche Telekom)的支持。在發表會中,西班牙電信展示了 B2G 的軟體,並且是在高通的硬體上運作。
此舉成功吸引了許多行動電信公司的目光,因為他們從中看到了一個有機會挑戰 Android 的平台,使行動作業系統這項領域擁有更多選擇,而不再由 Google 及 Apple 這些寡頭所支配。
雖然基於非營利的立場,以及「促進 Web 開放、創新及契機」的使命,Mozilla 對公眾傳達的願景其實並非是企圖塑造出「市佔第三」的應用程式平台。但無論如何,開放 Web 確實是有可能實現這項期望的。就如同在桌面系統上的情形,Web 的普遍性與可延展性使之成為唯一有機會與現有應用程式平台競爭的基礎架構,而 Mozilla 正在引領這項可能性。
合作關係
在新合作夥伴的支持下,Mozilla 承諾會在隔年推出可販售的產品。
西班牙電信是最早期的合作夥伴之一,他們有著自己的「Open Web Device」專案,而起初的構想是由 Mozilla 提供底層的 Gecko 平台,再結合他們自己的 Open Web Device 前端。此外,他們也會貢獻其它的專業知識,協助將裝置推到市場中。
與西班牙電信這樣的大型電信公司合作,對 Mozilla 這間開放原始碼公司而言是件新鮮事,我會說這在一開始確實造成了一些文化衝擊。存在一些不太協調的情形,尤其是當 Mozilla 和西班牙電信都在各自開發自己的前端時。
但我們隨即意識到,結合雙方資源共同製作一個行動前端顯得合理許多,因此 Mozilla 與西班牙電信的工程師便很快地開始協同工作。兩邊的工程師團隊都很歡迎這項調整,我們很快便運作得有如單一團隊一般。
另一個在早期便使我們獲益匪淺的合作夥伴則是德國電信,這些電信商的參與能夠有效提昇 OEM 廠商的興趣。最早與我們展開合作的 OEM 廠商,是來自中國、彼此存在競爭關係的中興(ZTE)及 TCL。
這些合作夥伴之所以至關重要的其中一項原因,是因為高通(第一個與我們合作的晶片製造商)不願意直接將韌體及裝置驅動程式授權給我們,而是必須透過電信商或 OEM。這是一種商業性的考量,但也表示我們無法直接向使用者發佈作業系統及其更新,而這後來便成了我們所面臨的一項嚴重問題。
Firefox OS 1.0
為了在隔年推出可正式上市的行動作業系統,Mozilla 與合作夥伴密切合作並加緊趕工。
設計
UX 團隊被給予的概要指示是不要在初始版本中做任何令人驚奇的設計,保持簡單,就像 Android 及 iOS 那樣,以網格系統來陳列應用程式的圖示。我們計畫在日後進行使用者體驗的強化與差異化,但在此之前,我們必須先證明目前市場上可見的 UI 設計是可以透過 Web 技術實現的。
因此團隊便實作出了非常精準的典型設計,然而這項先模仿現有設計、之後再加以改變的構想,則在日後證明是一項錯誤。
實作
在工程層面,我們必須證明可以透過開放 Web 技術來建構出一部智慧型手機,例如其中的使用者介面必須以 HTML、CSS 及 JavaScript 構築而成。
其中一項需求是所有內建的 Gaia 應用程式都必須要能離線作業,讓使用者能夠在網路連線不可用的情況下,繼續使用通話、拍照及音樂播放等功能。一開始我們是嘗試透過 AppCache 來滿足這項需求,它是第一項試圖讓 Web 應用程式可離線作業的 Web 技術。但不幸的是,我們隨即遭遇到許多共同問題及限制,並從中意識到它沒能完善地滿足我們的需求。
此外我們也需要發明許多新的 API,讓智慧型手機的底層硬體能夠透過 JavaScript 存取,並且也需要一種許可權限模型,讓此舉成為可能。現有的 Web 安全性模型允許瀏覽器在一個極度受限的沙盒中,安全地執行不受信任的程式碼。然而若要讓 Web 內容能夠存取像通話或簡訊這類需要更高特許權限的功能,便需要一種嶄新的安全性系統。
為了讓 B2G 的 1.0 版能夠按時交付,當時決定採行一種最簡單的方式來同時達成離線及安全性的需求,也就是個別封裝的應用程式套件。應用程式以套件的形式安裝在裝置上,可離線作業,並且透過加密簽署來確保其內含的程式碼可被信任。
應用程式套件解決了當下的立即性問題,但它們變成不是真正的 Web 應用程式,因為它們沒有真正的線上 URL,而且需要一個中央單位(例如 Mozilla)來決定應用程式是否安全,並進行簽署。雖然我在當時反對應用程式套件這項作法(因為這不是真正的 Web),但事實是沒有任何人能夠提出一個更 Web 化、又能夠及時完成的實作方案。
因此,在 2012 年 7 月,於西班牙電信的巴塞隆納辦公室裡所舉行的工作週期間,應用程式套件被決定作為一項權宜之計,直到我們找到更好的解決方案。事後來看,這又是一項錯誤決定,因為它引致了相當龐大的技術債,使我們陷入一條難以回頭的道路。
競相完工
儘管如此,所有的工程還是一路進行,並且在 2013 年 1 月於柏林舉行的工作週裡達到高峰。此時,Mozilla 正緊鑼密鼓的與合作夥伴們一同合作,包含了晶片製造商高通、電信商西班牙電信及德國電信、以及 OEM 廠商中興及 TCL,為的是達成交付 1.0 版的共同目標。
這場由德國電信主辦的工作週,成為了 B2G 開發過程裡最令人難以忘懷的其中一刻。所有人都聚集在同一個空間裡工作,並配上超級快速的網路連線。而前端團隊與後端團隊也展開了一場良性競賽,看哪一個團隊能夠最快修復所有的 Bug。比數會即時顯示在投影幕上,讓每個人都可以即時關注當前的進度。整個會場的工作氣氛充滿活力,並且一共有超過 200 多項 Bug 被修復。
在工作週的末了,Andreas Gal 向所有人宣佈已無任何已知的 Bug,而 Firefox OS 1.0 也於焉誕生。(對了,是前端團隊贏了這場競賽)
2013 年 MWC 大會
事實上, Firefox OS 所交付的第一個商業化版本是 1.0.1,這個版本完成了所有必要的測試與認證。第一批採用 Firefox OS 的裝置是在 2013 年 2 月的 MWC 大會期間公佈,分別是 ZTE Open 及 Alcatel One Touch,並且由西班牙電信及德國電信,在巴西、哥倫比亞、匈牙利、墨西哥、蒙特內哥羅、波蘭、塞爾維亞、西班牙及委內瑞拉等國銷售。此外,LG 與華為(Huawei)也同樣表態將推出 Firefox OS 裝置。
在 MWC 大會前一日的產品發表會裡,我們原先預期將會有大約 250 位人次到場關注,但結果卻來了超過 700 位人次。
我們促成了一個前所未見的景象,共有 18 間電信公司的執行長一同齊聚在台上,來展現他們對這項專案的支持。就我所知,就是連主辦單位 GSM 協會(GSM Association,GSMA)都對此感到非常驚訝。
我覺得我可以很客觀地說,Firefox OS 真的成為了那一年的大會主角。我們持續在每一天佔據了大會雜誌的首頁,並且在 Google 新聞裡,取得了大約 80,000 項的結果。不僅如此,Firefox OS 還在 Twitter 上成為熱門話題,就像奧斯卡獎一樣!如此爆炸性的傳播,簡直就像在作夢一樣。
我們有一個設計得非常酷的展場攤位(此外分別在西班牙電信及德國電信的攤位裡也有展示),設有接待處及許多的實機展示台,天花板上還有一條巨大的狐狸尾巴。
我在大會中是協助實機展示以及媒體採訪的部份,而我可以告訴你,現場的人群是絡繹不絕的,不斷有電信商、OEM 及媒體人士想要瞭解我們正在做的事。
在一個經常充斥著「展場女郎」的大會裡,我想 Firefox OS 攤位的一項難能可貴之處在於,大多數的工作人員真的是專案的參與者,而且其中有許多人還是沒有拿任何酬勞的志願者,卻願意投注時間來協助宣傳,而這點也的確使部份參觀者感到十分驚訝。
即便在 MWC 大會結束後,來自志願者社群的協助也仍不間斷。日後於西班牙、波蘭、委內瑞拉及哥倫比亞等地的首波產品上市活動,也同樣有賴於當地 Mozilla 社群的鼎力支援。
這裡有一支很棒的影片(YouTube),是在 2014 年製作的,描述 Firefox OS 從誕生到 1.0 版發佈的故事。
Firefox OS 1.x
Firefox OS 已成功上市,不過在還沒來得及舉辦 1.0 版的發佈派對之前,我們已回到工作崗位,認真構思接下來該做些什麼。
最先被想到的就是在 1.0 版中所缺少的基本智慧型手機功能,例如多媒體訊息。然後接著是改善應用程式開發者所需的開發工具,以及一狗票來自合作夥伴的需求。
我們很快便陷入一種工作模式,是將電信商及 OEM 視為我們的客戶,他們有一份無窮無盡的需求清單,基本上就是從他們的 Android 裝置中抄襲而來。他們想要讓 Firefox OS 擁有和 Android 一模一樣的功能。
我記得我曾經在 2013 年的時候,關在高通位於聖地牙哥的一間辦公室裡,跟一群來自 LG、認真工作的韓國人,一同設法讓 Firefox OS 所內建的每一款應用程式,都能夠在相同硬體規格上,比同類型的 Android 應用程式啟動得更加快速。但出於數據保密,他們不願意告訴我們究竟那些 Android 應用程式在他們的裝置上需要花多少毫秒啟動,只願意告訴我們兩者之間誰快誰慢。我們只能想方設法做修改,直到在啟動時間上獲勝。終於,搭載 Firefox OS 1.1 的 LG Fireweb 手機於 2013 年 10 月上市。
在 2013-2014 年的期間,1.1、1.2、1.3 及 1.4 版接連發佈。但最終我們意識到這只是在不停地追趕 Android 的腳步,而它已經超前了有五年之久,根本沒有機會可以追上。如果我們真的希望 Firefox OS 能夠在市場上有競爭力,並且在市佔率上取得具體的成績,那麼我們需要做的是差異化。
差異化
所有人基本上都同意一件事,就是我們無法直接對抗像 Android 或 iOS 這樣的對手──比功能我們贏不了 Google,比設計我們也無法超越 Apple。雖然 Mozilla 確實曾經對抗過比自己更強大的對手,並且獲勝,但前提是我們必須要打造出新的遊戲規則,而不是按照對手的規則。
至於如何實現 Firefox OS 的差異化,我記得當時基本上是分成了兩個派別。
Web 即平台
其中一派是認為不要在功能上與之競爭,而是基於 Web 的長處,實作出不同以往且更加簡單的使用者介面。
我們所面臨到的一項挑戰,是媒體經常會比較 Firefox OS 及其競爭者之間,在應用程式商店中的應用程式數。然而 Firefox OS 從未想要建置一個單一且集中式的應用程式商店,相反地,我們的理念是 Web 即平台。但不幸的是,受制於我們在早期所做的一些技術性決策(採用應用程式套件),使得我們沒有其它選擇,基本上只能藉由 Mozilla 所營運的 Firefox Marketplace 來應戰,而上面只有幾千款應用程式。
我們與一間名為 Everything.me 的新創公司合作,來試圖修補這項問題。他們會協助維護一個 Web 應用程式的目錄,藉此提昇我們所能供應的內容數目。然而依賴於一個集中式的目錄,最終只是加劇了我們所需要處理的(集中式應用程式商店)問題。
我們討論到要重新聚焦在真正的 Web 內容上(那可是當今最豐富的數位內容來源),並且研發一種創新的使用者介面,是針對 Web 的內連結特性,以及透過超連結穿梭在頁面之間的瀏覽方式而設計。借助開放 Web 的力量,才能讓我們實現出與競爭者之間真正的差異化。
連結下一個十億人口
另一個派別則是認為:當下我們真正需要的是擴展市佔率,而針對新興市場即是最佳的擴展方式,因為那裡的行動產業仍在持續發展,尚未飽和。
我們對開發中國家做了市場及用戶調查,很快地確認其實世界上多數的人口根本無法擔負一般智慧型手機的價格。因此我們需要為諸如印度及孟加拉等國家,供應對他們的主要收入階層來說,真正負擔得起的智慧型手機。
如果我們成功打入新興市場,即能夠快速地擴展 Firefox OS 的市佔率。我們將佔有一席之地,而不再只是圓餅圖中被歸類為「其它」、乏人問津的作業系統。
25 美元的智慧型手機
在 2013 年中期,宮力(Li Gong)接手了 Firefox OS 的領導工作。他開展並負責 Mozilla 在中國及台灣的業務,此外他還有一項職務:行動裝置的高級副總經理。
宮力積極擁護「低廉智慧型手機」的想法,他的具體計畫是開發出只須 25 美元的智慧型手機,認為如此一來我們才能夠成功打入新興市場。
團隊完成了一項創舉,讓 Firefox OS 能夠在使用 Spreadtrum 晶片組及僅僅只有 128MB 記憶體的情況下運作,這遠遠低於當時 Android 的最低硬體需求。
我們在 2014 年的 MWC 大會發表了「25 美元智慧型手機」的概念,並且與 Intex 及 Spice 等低階手機製造商建立新的合作關係,同時也向公眾揭示 Mozilla 期望「連結下一個十億人口」的理念。這項理念在 MWC 大會中獲得不錯的反響,引起了行動產業的好奇心。
憑藉著這些嶄新的低廉智慧型手機,讓 Firefox OS 的版圖開始擴展到亞洲(印度、孟加拉)、拉丁美洲(薩爾瓦多、巴拿馬、尼加拉瓜、瓜地馬拉)以及中歐(捷克)等地區。
但結果卻不是很好。首先,這些 25 美元的智慧型手機最終進入市場的價格大約是 33 美元左右。再者,讓 Firefox OS 執行於 128MB 記憶體上,會使它難以滿足一般智慧型手機應具備的多工水準。除此之外,未支援 WhatsApp 也是一項嚴重的問題,因為這款應用程式在這些市場中極為重要。當時我們未能說服 WhatsApp 開發一個 Web 版本,同時他們也不願意放手讓我們來製作。這些短處再加上一些硬體品質的缺陷(特別是相機問題),最終使得這些低廉智慧型手機在市場上的銷售狀況並不好。
如果只是打價格戰,很快就會變成是一種逐底競爭,而經濟規模最大的公司仍然能夠輕易取勝。Google 很快就意識到他們在新興市場上的不足,於是推出了主打相同市場的 Android One。雖然 Android One 的反應也沒有很好,但足以揭示出,單純的價格競爭並無法成為致勝策略。
縱使新興市場的消費族群沒有太多可支配的收入,也不表示他們就會接受品質差勁的產品。他們不想要 iPhone 的簡陋版本,他們要的是 iPhone。如果他們負擔不起 iPhone,他們會寧可繼續使用手上的功能型手機──便宜、可用、而且電池續航力還好得多。
Firefox OS 2.0
大多數關於 25 美元智慧型手機的開發工作,是由台北辦公室的工程師所完成,其版本是訂為 1.3t。與此同時,其他的團隊則開始在思考 2.0 版的內容。
2013 年 4 月,UX 團隊在倫敦舉辦了一場會議,一同討論 Firefox OS 使用者體驗的未來走向,我有幸能夠參與在其中。我們一同集思廣益,設法提取 Web 體驗的特性與能耐,藉此創造出不同以往的使用者體驗。
其中一項重點,在於 Web 是透過超連結四處瀏覽的。Web 並不是由多個單一的應用程式、彼此有著清楚的界線所組織而成,它們會透過內容的瀏覽,從一個網站跳轉到另一個不同的網站。
Haida
在接下來的幾週內,UX 團隊建立出這項概念的部份早期設計(代號為「Haida」),它會模糊 Web 應用程式與一般網站之間的界線,並形成獨特的使用者體驗,就好似在瀏覽網際網路一般。
它最終包含了一個全域的啟動列(Rocketbar),能夠無縫地順應多種不同類型的 Web 內容。以及分頁功能,讓單一頁面的 Web 應用程式也能夠產生多個頁面,並透過螢幕邊緣的手勢動作進行切換。應用程式的執行與管理是基於 Web 的即時性,瀏覽、開啟連結(執行)、或甚至是加入書籤。而非傳統的單一應用程式,你需要從特定的應用程式商店中下載並安裝應用程式,才能夠接著執行它。
2013 年 6 月,一小群的設計師及工程師聚集在巴黎,密集地開發並測試各種 Haida 原型。Josh Carpenter 在同年的 10 月,製作了一支影片(YouTube),介紹 Haida 的設計概念。
實現 Haida 所需的變革相當龐大,所以它被分成不同的階段,加入至不同的 Firefox OS 版本裡。2.0 版重新設計了視覺效果,並實作邊緣手勢來在視窗間切換。2.1 版則將瀏覽器整合至主系統 UI,讓瀏覽器風格的使用者體驗開始變為可能。
然而到了 2.2 版,有關 Haida 的開發工作開始停擺。因為合作夥伴要求更多與 Android 相等的功能、更好的效能、以及對右至左語言的支援,好讓他們能夠將裝置銷售到更多的地區。
Haida 的理念從未被完整實現,但同時人們又開始在思考 3.0 版的走向。
Firefox OS 3.0
相較於 Firefox OS 手機首次出擊時高於預期的表現,25 美元智慧型手機的銷售結果則是令人失望。我們沒能清楚的實現產品差異化,來延續首次出擊的氣勢,合作夥伴的銷售狀況打擊了我們的信心,對於產品方向的歧見也造成了幾位高階主管的離去。
宮力離開 Mozilla,創辦了明辨科技(Acadine Technologies),以 Firefox OS 的分支作為主打,並有中國政府支持的企業組織對其投資一億美金。宮力在離開的同時還帶走許多 Mozilla 台北辦公室的工程師,此舉對 Mozilla 造成了一些困擾與嫌隙。但後來因為承諾的一億美金未到位,所以明辨科技只能宣佈裁員及重整,這對人力資源而言實在是重大的浪費。
Andreas Gal 也離開 Mozilla 創辦了 Silk Labs,他帶走 Chris Jones 以及其他早期 B2G 團隊的重要成員。除此之外,產品主管 Chris Lee 也離開了,造成 Firefox OS 團隊的領導層全面真空。
差不多在那段時間裡,Chris Beard 是 Mozilla 的執行長,因此領導 Firefox OS 的責任便暫時落在他的身上,直到找到合適的人選。Chris 是很好的執行長,他在 Mozilla 有很長的歲月,深知 Mozilla 的內涵。然而身為全公司的執行長,他自然無法積極地領導 Firefox OS 的產品發展。
3.0 版的構思過程
2014 年 12 月,在沒有任何具體產品方向的情況下,我們在一場於波特蘭舉辦的全公司聚會裡,以趕鴨子上架的形式,開始了 3.0 版的集思廣益過程,希望結合 Firefox OS 團隊成員及廣大社群的意見,來決定 Firefox OS 的新方向。
乍看之下,對我這種已經早有深思熟慮、知道未來應該怎麼做的人,這應該是個提出想法的絕佳機會。但事實上,在這種臨時性、大約有 36 個小組交織在其中的討論過程,好的想法就容易被埋沒掉。缺乏真正的規則來限制這些想法的走向,同時也沒有良好的程序來檢驗它們。人們開始變得有些天馬行空,建議的內容包含了智慧型手錶到重塑貨幣概念等等!
最後,關於 3.0 版仍然沒有清楚的方向,於是版號縮減為 2.5,內含一些倉促加入的功能。
樞紐
不起眼的 2.5 版,以及毫無產品領導層的情況下,Firefox OS 在 2015 年幾乎可以說是停滯狀態。
終於,Ari Jaaksi 接手了「連網裝置」的領導責任,而 Firefox OS 團隊也隨之更名為連網裝置團隊。他在奧蘭多舉辦的全公司聚會裡,宣佈了「樞紐」計畫。
Mozilla 不會再繼續投注於智慧型手機的開發,取而代之的是研發與連網裝置及物聯網有關的使用者體驗。先前為 Firefox OS 所發展的技術將作為這項計畫的起點,讓 Firefox OS 能夠在智慧電視等其它裝置上重獲新生(已經與 Panasonic 洽談合作,所以這個方向看起來頗有希望),然而智慧型手機就不再會是焦點。
Ari 在演講的最後,播放了一段具激勵性的影片(YouTube)。但沒有人在乎那段影片,因為他們忙著彼此交頭接耳,想要搞清楚到底發生了什麼事。
Ari 所設想的觀念,是 Firefox OS 企圖與 Android 及 iOS 競爭而失敗了。Firefox OS 太晚進入市場,應用程式商店發展不起來,而智慧型手機的戰爭也早就有了贏家。所以是時候邁向下一個重大變革,也就是物聯網。
這番論述讓我有些失望,因為我從不覺得我們是為了要讓 Firefox OS 成為市佔第三的行動應用程式平台。我們的目的是要突破開放 Web 的界線,使其成為一個有競爭力的應用程式開發平台。的確這項專案目前處於停滯狀態,但我們在 Haida 上有一些真的很棒的構想,我們只是缺少專注力。
無論如何,我試著接受這個新方向,畢竟我在起初就認為,比起智慧型手機,平板電腦應該更適合 Firefox OS 的發展,至於智慧電視則同樣有發展機會。總之,電視跟平板都算是連網裝置啊。
另一段關於產品創新的集思廣益過程於焉展開,不過這次有著更多的組織結構(我個人認為太多了)。連網裝置部門變得像是內部的創新育成中心,團隊必須接受「精實創業」的訓練,而我們也都必須成為物聯網新興領域的專家,再提供產品構想給所謂的「產品創新董事會」。
轉型
於奧蘭多公佈的消息很快地就在 Mozilla 內部變成了一種暗示「Firefox OS 已死」的信號。Firefox OS 在這幾年間一直佔據著公司的龐大資源,已令其他團隊感到不滿。負責旗艦產品的 Firefox 團隊及平台支援團隊都曾經抱怨過資源的匱乏,因此當 Firefox 市占率下降時,Firefox OS 便成為被指責的對象。
我會說其中的某些指責或許算是可以理解的,但 Firefox OS 很快地就變成幾乎所有 Mozilla 不順遂事物的替罪羔羊,一發不可收拾。普遍認為 Mozilla 把所有賭注都壓在 Firefox OS 上,但它現在失敗了。Mozilla 內部開始形成巨大的政治壓力,想要將 B2G 從程式碼庫中徹底剷除,並且將資源重新分派給旗艦產品 Firefox。
連網裝置團隊遭到縮減,大約有 40 個人被裁撤。同時為了評估現有 B2G 程式碼的價值,召開了多次會議,來決定哪些應保留、而哪些又應移除。這是因為 B2G 程式碼被認為拖慢了 Firefox 的開發,而其維護成本也不合宜。
某些連網裝置專案(例如平板及智慧電視專案)仍然計畫使用部份的 B2G 程式碼,不過我們仍同意對 B2G 的設計架構做大幅精簡。我們將徹底移除針對應用程式套件的 mozApps 執行環境,以便採用全新的 Web 標準。並且會在 Gecko 裡移除大約 30 項裝置 API(我們認為這些 API 永遠不會成為 Web 標準),以基於 Web 服務的新作法取而代之。
由於 Mozilla 社群也參與在這項「B2G 變遷計畫」裡,因此只要任何人有意願,那些針對智慧型手機的程式碼都可以轉移到社群手上,由社群繼續維護。事實上社群對此計畫的反響相當積極,甚至是 B2G 專案創立以來最積極投入的一次。
雖然我們快速地移除了 mozApps 執行環境,以及 30 項裝置 API 中的 10 項,但內部的政治壓力仍持續增長,意圖要將 B2G 從 Mozilla 程式庫中徹底消失。平板及智慧電視專案被叫停,而連網裝置團隊也開始將他們的心力轉移到其它事物上。
由於 Mozilla 專案的模組權限系統就技術上而言,與 Mozilla 公司的回報結構是分離的。因此 B2G 的模組擁有者(當時是 Fabrice Desré),對移除 B2G 模組的要求做了最後的抵抗,直至最高管理層做出了移除的決定。
技術上來說,現在這個由社群維護的 B2G 專案仍然可以運作出新的分支,但在沒有基礎設施、也沒有任何 Mozilla 全職員工投入的情況下,分支恐怕永遠不會變得實用。Firefox OS 專案在巔峰期曾經擁有大約 300 名 Mozilla 全職員工投入其中,而這完全不是社群力量所能夠比擬的。
所以可以說,Boot to Gecko 專案已名存實亡。
結論
評估成敗
我非常以 Firefox OS 的成果為榮。如果是依據專案的起初目標是否達成,來評估其成敗,則這項專案的成果已遠遠超越它起初設立的目標。我們早已跨越了技術原型的階段,成功地將其商業化,在超過 30 個國家中推出了 20 款不同的裝置,產品包含智慧型手機及智慧電視。我們在工程方面也有驚人的成果,針對 Web 平台建立了 30 項全新的 API 原型,並建置了或許是史上最複雜的 JavaScript 程式碼庫。我們用不到兩年的時間,從無到有地開發出一款行動作業系統,並推到市場上。就我所知,這是還沒有任何其他團隊完成過的創舉。
我並不確知究竟賣出了多少部 Firefox OS 裝置,因為合作夥伴並沒有分享他們的銷售數字,而我們也沒有問他們。但我可以合理的推估,數字應該落在四百至六百萬部左右。這對我來說已是非常驚人的成就,遠遠超越了其它非主流行動作業系統的表現,也是我至今參與過最成功的專案。不過考量到這個產業一年就有超過十億部裝置的銷售量,那麼 Firefox OS 的市佔率可是連 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 為導向的行動作業系統便會取得成功,屆時 Web 將會贏得行動領域,就如同它在桌面領域上的表現。
這是正確的決定嗎?
從當初在奧蘭多得知這項消息已經有一年之久,這段期間我的傷感歷經了許多階段,對於 Firefox OS 的終結,我先是拒絕接受,接著是憤怒、設法交涉及沮喪。最後,我接受了這項事實!
雖然事情已成定局,不過在經過一些沉澱後,我仍然認為完全取消 Firefox OS 是一項錯誤的決定。這項專案的確因為長時間缺乏領導而喪失動力,但我仍認為取消它的決定更多是出於內部的政治因素,而非商業或技術上的考量。
隨著行動市場越來越成熟與普及,Web 技術也隨之變得越加成熟。我們還是有機會,甚至時機比以往都還要好。雖然我可以理解結束這項專案的理由,但我仍覺得這是過早給 Firefox OS 判了死刑,它還沒有發揮它的全面潛能。我們需要的是重啟、決心以及清楚的方向,但很不幸的,它沒有被給予這樣的機會。
或許有許多人認為我只是空口白話,畢竟我不用對這項專案的鉅額支出負責。他們會說我們已經被給予機會了,而我們搞砸了。現在是時候回頭專注於 Mozilla 最重要的產品,也就是 Firefox。這對我來說有一點太短視了,Web 在許多方面都已經跳脫了瀏覽器的框架,現在反而是時候為未來的網路世界做充分準備。
學到的功課
不幸的是,從政治角度來看,現在已毫無可能在 Mozilla 重啟 B2G 專案。但如果真的有第二次機會,我會想要做出以下的改變。
- 設計 - 我會從一種非常簡單、基於瀏覽器的使用者介面開始,聚焦於 Web 內容,而非試圖重現其它作業系統擁有的每一項功能。
- 工程 - 讓圖形視窗介面與 Web 內容之間有清楚的區隔,不要強迫 Web 去做它不適合做的事。利用伺服器端的 REST 與 WebSocket 來建立裝置 API,而非使用經過特許的客戶端 JavaScript DOM API(JavaScript 不是 Web 的本質,URL 才是)。建立一個社群化的線上 Web 應用程式目錄,而非傳統由開發者提交套件的應用程式商店。
- 產品 - 不要企圖開發出挑戰價格下限的廉價智慧型手機,先開發中等價位的平板電腦(在此之後,則可以考慮開發智慧電視棒),並專注在 Web 內容、遊戲及娛樂領域。應該針對已經成熟的市場開拓利基點,而不是在新興市場裡畫大餅。
- 合作關係 - 在與合作夥伴往來時,Mozilla 需要採取更加堅定的態度來領導產品路線,如果道不同,可以不相為謀。直接向使用者提供軟體更新,並遠離那些會在推送更新上造成妨礙的晶片供應商(這在當時非常困難,但現在容易多了)。
補充
這就是我的故事,它有點長,所以如果你在過程中沒有跳過任何無趣事物,還能夠一路讀到這裡,那我會感到非常驚訝!
我在這裡寫下一些的東西的主要目的,是希望後人在看待 Firefox OS 時能夠有一層更特別的意義,而不僅僅是「一款失敗的 Mozilla 行動作業系統」。
有許多傑出又極為聰明的人士對 Boot to Gecko 專案投入了大量的愛與辛勤付出。我非常以能夠協助這項專案為榮,我想他們也是這麼想的。或許 Firefox OS 的成果,並不符合外界對其強加的期待。但就我的觀點而言,它是一項成就,也是我職業生涯的一個高峰!(事實上我在 Google 於 2008 年推出第一部 Android 智慧型手機時,還是他們的實習生,但我投入於 Firefox OS 的心力相比之下是多得多的。)
我依然深深相信 Mozilla 的使命,而我也認為 Mozilla 很快就會有令人興奮的新發展,當中有一些讓人迫不及待想要分享出來的新興技術,不過那又是另一段故事了。
最後,請容我用一段我和我太太於 2014 年製作的影片(YouTube)作為結尾,我們改編了 Bob Dylan 的歌曲,並配上許多照片,體現過去這段 Firefox OS 的驚奇旅程。(你可以試試看能不能從中找到 Tim Berners-Lee 爵士,在午餐時間試用 Firefox OS 的照片!)