Google沒有閉源但正把Android變得“能看不能摸”
Google計畫對開發新版Android作業系統的方式進行重大變革。在許多人眼中,Android的開源屬性正是選擇這款系統的關鍵理由之一——三星等OEM廠商透過對One UI等皮膚版本的程式碼進行自主調整;而密切關注Android動向的朋友則往往能從Google對Android開源專案(Android Open Source Project,即AOSP)的公開變更中,發現關於作業系統即將推出新功能的種種跡象。
過去,正是因為Android即時開放原始碼,才成就了全球數十億台設備的龐大生態系統,並催生了行動互聯網時代最具活力的創新模式。
然而,Google近日正式確認,從下週起,Android未來的核心功能開發將轉入內部閉環,僅會定期向AOSP推送階段性成果,同時AOSP的更新頻率也將放緩。
雖然Google一再強調不會封閉原始碼,但這種悄悄地把技術控制在自己手中的做法,正在讓原本開放的Android生態系統越來越向Google靠攏,甚至進一步加強Google「一家獨大」的局面。
Google進一步轉向內部開發
Google已確認,未來所有Android的開發工作都將在其內部進行。
AOSP是一個由Google維護的開源作業系統開發項目,任何人都可以自由存取、查看程式碼,並為專案貢獻程式碼和修復。 AOSP包含了Android作業系統的核心元件,但不包含Google及其合作夥伴開發的專有軟體,例如Google行動服務(GMS)。 GMS包含了Play Store、Google雲端訊息推播框架、Chrome瀏覽器、Google搜尋等應用程式。
Android的一個顯著特徵是其版本多樣性,這既是其優勢所在,也偶爾帶來挑戰。例如,三星的One UI甚至Google自家的Pixel UI,都在核心Android體驗基礎上進行了定制,加入了獨特的功能和改進。這一切都得益於AOSP提供的通用基礎作業系統。
除了對公眾開放貢獻外,Android開源專案還允許根據開源許可自由使用和修改。亞馬遜和三星等製造商可以自由地根據自身需求調整AOSP,並開發出自己的衍生產品,例如完全不搭載Google服務的多功能Amazon Fire OS。
這種開放性也為某些企業在受到貿易制裁後繼續開發基於Android的EMUI和HarmonyOS之類的作業系統提供了可能。例如,華為在面臨一些國際限制後,無法再獲得GMS許可,但可以繼續使用AOSP,最終華為用HMS取代了GMS功能。也有觀點認為,這等於華為可以繼續使用Android,但他們得不到Google的幫助。
值得注意的是,要讓AOSP成為一款功能齊全的智慧型手機作業系統,往往需要進行大量調整——有時甚至是大規模修改。因為如果僅按照預設方式建造AOSP並將其安裝到設備上,其功能遠遠達不到現代智慧型手機的標準。許多使用者日常依賴的關鍵功能都將缺失,以至於運行純AOSP幾乎沒有實際意義。
但如今Google決定將核心功能轉入內部開發,可能會導致一些依賴AOSP進行客製化的硬體廠商取得新功能的時間延遲,進而影響產品競爭力。此外,開發者社群可能無法再事先看到程式碼變更,使其難以及時適配和優化應用程式。
Google過去的做法是頻繁更新公共AOSP分支,任何人都可以存取AOSP,但內部分支僅對Google和擁有Google行動服務(GMS)授權的公司開放,例如三星、摩托羅拉等。
先前,一些元件,如建置系統、更新引擎、藍牙協定堆疊、虛擬化框架和SELinux配置,是AOSP-first,即完全在公開環境下開發。
但從下週起,Android的所有開發工作都將在Google的內部分支進行,只有當Google發布新的分支時,相關原始碼才會對外開放。

這是Google 使用的基於網路的程式碼審查系統AOSP Gerrit 的螢幕截圖。
Google承諾將繼續發布新Android版本的原始碼,例如今年稍後發布Android 16時,外界還能繼續獲得更新的原始碼。
此外,Google將繼續發布Android Linux核心分支的原始碼,因為它是根據GPLv2授權的,該授權要求發布原始程式碼,並且與AOSP是分開的。
AOSP之前是基於Apache 2.0許可證發行,儘管Google也表示會繼續release源代碼,且一再強調這並非閉源,但對於谷歌將開發轉為private的行為,有網友評論說,“如果一個項目依賴於一家公司進行持續開發,那麼開源許可證就沒有任何意義。”
另外,也有人提到OpenSolaris的悲劇性轉折,這是由Sun Microsystems基於Solaris創建的開源作業系統,在2010年甲骨文收購了Sun Microsystems之後,OpenSolaris便停止了自主開發。
當時,OpenSolaris也是宣布「我們將不再即時發布整個Solaris作業系統的原始碼」。但從那一刻起,原始碼就再也沒有公開過。
當年甲骨文的決定徹底冰封了開源生態,而今Android似乎也正沿著相似的軌跡滑行,因此也有網友認為,對於Android來說,最終的目標很可能是僅滿足最低限度的開源要求,只發布那些受Copyleft約束、Google不擁有版權的代碼,直到這些組件被封閉的替代方案取代。

Google對Android的鐵腕統治:封閉是一步步發生的
如今,Android的開發方式正逐漸轉向更私有化,這並非一蹴可幾的變化。回望過去,Android的發展歷程與最初的開放姿態有著顯著的不同。
十八年前,也就是2007年11月,Android開放原始碼專案(AOSP)正式發布。就在幾個月前,第一代iPhone問世,迅速引起轟動,開啟了現代智慧型手機時代。當時,Google預見蘋果可能在行動領域佔據主導地位,而Google自身在該領域尚無立足之地。為了對抗iPhone,Android作為開源專案應運而生。
在AOSP成立之初,Google大力支持開源應用程式的開發,這些應用與免費的AOSP捆綁在一起。這種策略在當時是合理的,透過為AOSP投入開發精力和資源,Google在隨後的幾年裡成功地大幅提升了基於Android/AOSP設備的市場份額。
Android擁有了龐大的用戶基礎,也意味著其擁有大量的應用程式。如果一家公司選擇分叉Android,那麼這個作業系統本身就與數百萬個應用程式相容。該公司只需建立自己的應用程式商店,並將所有應用程式上傳即可。理論上,幾乎在一夜之間,你就能擁有一個擁有大量應用程式的非Google作業系統。
因此,一個成功的替代Android版本,將是對Google主導地位的真正威脅。 Google也一直在採取措施防範這種替代品的出現。
Google意識到需要對其公共原始碼擁有更多的控制權,畢竟更少的開源程式碼意味著Google的競爭對手需要做更多的工作。
隨著時間的推移,Google將Android功能從AOSP轉移到封閉原始碼軟體套件中。例如,Google用自家的閉源版本取代了AOSP版的日曆和訊息應用,並在此過程中停止了對開源版本的維護。由於Google是這些應用的主要開發者,這項變更實際上扼殺或極大地阻礙了這些應用的開源AOSP版本的開發。

這些舉措同時也讓更新核心元件變得更加容易,而無需進行完整的作業系統更新。

Android的所有重要且實用的部分早已被移轉到閉源元件。結果就是,Android變成了一個龐大的「開源」程式碼庫,但缺少了讓其真正運作所需的關鍵部分。 AOSP已經成為它過去形態的“空殼”,並且正逐步被進一步掏空。如今,Android正在從「集市」模式轉向「教堂」模式(指由開放開發變為封閉開發)。至於Google何時會發布「新版本」的AOSP原始碼,誰也說不準。

我希望他們乾脆把Android變成閉源,盡可能為股東賺錢──畢竟,這才是他們的職責。他們為什麼還要免費提供這個系統?他們已經透過宣稱開源、建立社群成功佔領了市場,現在只需要讓它變成專有軟體,而舊的開源版本會逐漸衰落、變得不穩定。然後,他們就可以像微軟一樣,對作業系統收費——但這次是在手機上,對數百萬、甚至數十億台裝置收費(顯然我並不認同這種做法)。
目前,大多數Android開發都在內部分支中進行,但少數元件(如藍牙和核心)是在公開分支中開發的。在新系統下,它們將轉移到內部分支。
這項變更無疑將使Google團隊的開發工作更加輕鬆,但它可能會限制我們在新版本正式發布之前對Android的了解程度。有時,AOSP中出現的花絮可能會指向即將推出的裝置、功能刪除或應用程式支援的變更。
我們可能再也無法獲得這些見解,因此,在Google推出不受歡迎的變更之前,開發者和用戶將沒有那麼多機會挑戰Google。
根據Google的說法,他們做出這項改變是為了簡化流程,並藉鑒了最近對基於主幹的開發所做的改變。
由於Google同時長期維護兩個獨立AOSP分支-一個為公共分支,一個是內部分支。任何人都可以查看公共分支,但只有Google本身、Android OEM廠商乃至其他簽訂了Google行動服務(GMS)授權協議的企業才能存取到內部版本。這兩個分支在功能和API支援方面並不同步,這迫使Google不得不在每次發佈時都費力地合併分支。 Google聲稱,透過專注於內部分支,它可以簡化發布流程,讓每個人的工作都更輕鬆。
AOSP專家Mishaal Rahman指出,AOSP的大部分開發工作都是由Google在內部完成的。就是說即使在此番正式變更之前,更新主體也一直只會出現在內部分支上。第三方可以向公共分支提交程式碼變更,但Google保留在確定Android新版本並發布原始程式碼之前,拒絕一切此類變更的最終決定權。
總的來說,無論是在今天的新聞發布之前還是之後,以上事實都保持不變。公共AOSP Gerrit仍然可用,第三方提交結果也依舊公開可見。 Google也將繼續發布最終原始碼——只是在開發過程中,該公司將大部分AOSP變更由原本的閉門開發正式定性為不公開進行。

AOSP Gerrit
根據Rahman的解釋,這項變更主要是為了幫助Google內部團隊提升效率。以往,在公共AOSP分支與單獨的內部興建和管理開發進度,往往會產生大量不必要的開銷。
由於AOSP的公共分支往往落後於內部版本,所以在需要將二者的程式碼合併時,Google工程師們經常會遇到合併衝突——不同程式碼版本間的衝突往往需要耗費額外時間和精力方可解決。
透過將所有活躍開發工作轉移至內部分支,Google認為此舉可以消除上述衝突並簡化其工作流程。值得注意的是,這並不意味著公共AOSP程式碼倉庫會由此消失——Google將繼續在公共分支中發布最終原始碼,第三方也仍可以透過公共Gerrit提交貢獻。總而言之,此番調整隻是正式確定了Google工程師在開發週期中該在哪裡進行日常編碼。

Android開源專案仍然非常活躍
至少從功能角度來看,此舉造成的最大問題,就是為AOSP貢獻程式碼的第三方開發者可能將難以追蹤Android即將迎來的變更。這可能會阻礙開發者們的持續貢獻熱情,因為Google在內部也許正在進行同樣的開發與探索。
先前還有報導說,Google近期正在轉向Trunk Stable開發流程(即所有人為同一程式碼版本做出貢獻,確保Google能夠更快、更穩定地建立整個系統),希望藉此加快Android的發布速度——特別是打算將今年年內的Android 16時間表盡量提前。
參考連結:
https://www.androidauthority.com/google-android-development-aosp-3538503