今天小編分享的科技經驗:谷歌沒有閉源,但正把安卓變得“能看不能摸”,歡迎閲讀。
編輯 | Tina
谷歌計劃對開發新版 Android 作業系統的方式進行重大變革。
在許多人眼中,Android 的開源屬性正是選擇這款系統的關鍵理由之一——三星等 OEM 廠商通過對 One UI 等皮膚版本的代碼進行自主調整;而密切關注 Android 動向的朋友則往往能從谷歌對 Android 開源項目(Android Open Source Project,即 AOSP)的公開變更中,發現關于作業系統即将推出新功能的種種迹象。
過去,正是因為 Android 實時開放源代碼,才成就了全球數十億台設備的龐大生态系統,并催生了移動互聯網時代最具活力的創新模式。
然而,谷歌近日正式确認,從下周起,Android 未來的核心功能開發将轉入内部閉環,僅會定期向 AOSP 推送階段性成果,同時 AOSP 的更新頻率也将放緩。
雖然谷歌一再強調不會封閉源代碼,但這種悄悄地把技術控制在自己手裏的做法,正在讓本來開放的安卓生态系統越來越向谷歌靠攏,甚至進一步加強谷歌 " 一家獨大 " 的局面。
谷歌進一步轉向内部開發
谷歌已确認,未來所有 Android 的開發工作都将在其内部進行。
AOSP 是一個由谷歌維護的開源作業系統開發項目,任何人都可以自由訪問、查看代碼,并為項目貢獻代碼和修復。AOSP 包含了 Android 作業系統的核心組件,但并不包含谷歌及其合作夥伴開發的專有軟體,例如谷歌移動服務(GMS)。GMS 包含了 Play Store、谷歌雲消息推送框架、Chrome 浏覽器、Google 搜索等應用。
Android 的一個顯著特點是其版本多樣性,這既是其優勢所在,也偶爾帶來挑戰。例如,三星的 One UI 甚至谷歌自家的 Pixel UI,都在核心 Android 體驗基礎上進行了定制,加入了獨特的功能和改進。這一切都得益于 AOSP 提供的通用基礎作業系統。
除了對公眾開放貢獻外,Android 開源項目還允許根據開源許可自由使用和修改。亞馬遜和三星等制造商可以自由地根據自身需求調整 AOSP,并開發出自己的衍生產品,例如完全不搭載谷歌服務的多功能 Amazon Fire OS。
這種開放性也為某些企業在受到貿易制裁後繼續開發基于 Android 的 EMUI 和 HarmonyOS 之類的作業系統提供了可能。比如,華為在面臨一些國際限制後,無法再獲得 GMS 許可,但可以繼續使用 AOSP,最終華為用 HMS 取代了 GMS 功能。也有觀點認為,這等于華為可以繼續使用 Android,但他們得不到谷歌的幫助。
值得注意的是,要讓 AOSP 成為一款功能齊全的智能手機作業系統,往往需要進行大量調整——有時甚至是大規模修改。因為如果僅僅按照默認方式構建 AOSP 并将其安裝到設備上,其功能遠遠達不到現代智能手機的标準。許多用户日常依賴的關鍵功能都将缺失,以至于運行純 AOSP 幾乎沒有實際意義。
但如今谷歌決定将核心功能轉入内部開發,可能會導致一些依賴 AOSP 進行定制的硬體廠商獲取新功能的時間延遲,從而影響產品競争力。此外,開發者社區可能無法再提前看到代碼變更,使其難以及時适配和優化應用。
谷歌過去的做法是頻繁更新公共 AOSP 分支,任何人都可以訪問 AOSP,但内部分支僅對谷歌和擁有谷歌移動服務 ( GMS ) 許可證的公司開放,例如三星、摩托羅拉等。
此前,一些組件,如構建系統、更新引擎、藍牙協定棧、虛拟化框架和 SELinux 配置,是 AOSP-first,即完全在公開環境下開發。
但從下周起,Android 的所有開發工作都将在谷歌的内部分支進行,只有當谷歌發布新的分支時,相關源代碼才會對外開放。
這是 Google 使用的基于網絡的代碼審查系統 AOSP Gerrit 的螢幕截圖。
谷歌承諾将繼續發布新 Android 版本的源代碼,比如在今年晚些時候發布 Android 16 時,外界還能繼續獲得更新的源代碼。
此外,谷歌将繼續發布 Android Linux 内核分支的源代碼,因為它是根據 GPLv2 授權的,該授權要求發布源代碼,并且與 AOSP 是分開的。
AOSP 之前是基于 Apache 2.0 許可證發行,盡管谷歌也表示會繼續 release 源代碼,且一再強調這并非閉源,但對于谷歌将開發轉為 private 的行為,有網友評論説," 如果一個項目依賴于一家公司進行持續開發,那麼開源許可證就沒有任何意義。"
另外,也有人提到 OpenSolaris 的悲劇性轉折,這是由 Sun Microsystems 基于 Solaris 創建的開源作業系統,在 2010 年甲骨文收購了 Sun Microsystems 之後,OpenSolaris 便停止了自主開發。
當時,OpenSolaris 也是宣布 " 我們将不再實時發布整個 Solaris 作業系統的源代碼 "。但從那一刻起,源代碼就再也沒有公開過。
當年甲骨文的決定徹底冰封了開源生态,而今 Android 似乎也正沿着相似的軌迹滑行,因此也有網友認為,對于 Android 來説,最終的目标很可能是僅滿足最低限度的開源要求,只發布那些受 Copyleft 約束、谷歌不擁有版權的代碼,直到這些組件被封閉的替代方案取代。
谷歌對 Android 的鐵腕統治:封閉是一步步發生的
如今,Android 的開發方式正逐漸轉向更加私有化,這并非一蹴而就的變化。回望過去,Android 的發展歷程與最初的開放姿态有着顯著的不同。
十八年前,也就是 2007 年 11 月,Android 開放源代碼項目(AOSP)正式發布。就在幾個月前,第一代 iPhone 問世,迅速引起轟動,開啓了現代智能手機時代。當時,谷歌預見到蘋果可能在移動領網域占據主導地位,而谷歌自身在該領網域尚無立足之地。為了對抗 iPhone,Android 作為開源項目應運而生。
在 AOSP 成立之初,谷歌大力支持開源應用的開發,這些應用與免費的 AOSP 捆綁在一起。這種策略在當時是合理的,通過為 AOSP 投入開發精力和資源,谷歌在随後的幾年裏成功地大幅提升了基于 Android/AOSP 設備的市場份額。
Android 擁有了龐大的用户基礎,也意味着其擁有海量的應用程式。如果一家公司選擇分叉 Android,那麼這個作業系統本身就與數百萬個應用程式兼容。該公司只需建立自己的應用商店,并将所有應用上傳即可。理論上,幾乎在一夜之間,你就能擁有一個擁有大量應用程式的非谷歌作業系統。
因此,一個成功的替代 Android 版本,将是對谷歌主導地位的真正威脅。谷歌也一直在采取措施防範這種替代品的出現。
谷歌意識到需要對其公共源代碼擁有更多的控制權,畢竟更少的開源代碼意味着 Google 的競争對手需要做更多的工作。
随着時間的推移,谷歌将 Android 功能從 AOSP 轉移到閉源軟體包中。例如,谷歌用自家的閉源版本取代了 AOSP 版的日歷和消息應用,并在此過程中停止了對開源版本的維護。由于谷歌是這些應用的主要開發者,這一變化實際上扼殺或極大地阻礙了這些應用的開源 AOSP 版本的開發。
這些舉措同時也讓更新核心組件變得更加容易,而無需進行完整的作業系統更新。
Android 的所有重要且實用的部分早已被遷移到閉源組件中。結果就是,Android 變成了一座龐大的 " 開源 " 代碼庫,但缺少了讓其真正運行所需的關鍵部分。AOSP 已經成為它過去形态的 " 空殼 ",并且正逐步被進一步掏空。如今,Android 正在從 " 集市 " 模式轉向 " 教堂 " 模式(指由開放開發變為封閉開發)。至于谷歌何時會發布 " 新版本 " 的 AOSP 源代碼,誰也説不準。
我希望他們幹脆把 Android 變成閉源,并盡可能地為股東賺錢——畢竟,這才是他們的職責。他們為什麼還要免費提供這個系統?他們已經通過宣稱開源、建立社區成功占領了市場,現在只需要讓它變成專有軟體,而舊的開源版本會逐漸衰落、變得不穩定。然後,他們就可以像微軟那樣,對作業系統收費——但這次是在手機上,對數百萬、甚至數十億台設備收費,$$$$$。(顯然我并不認同這種做法)。
目前,大多數 Android 開發都在内部分支中進行,但少數組件(如藍牙和内核)是在公開分支中開發的。在新系統下,它們将轉移到内部分支。
這一變化無疑将使谷歌團隊的開發工作更加輕松,但它可能會限制我們在新版本正式發布之前對 Android 的了解程度。有時,AOSP 中出現的花絮可能會指向即将推出的設備、功能删除或應用程式支持的變化。
我們可能再也無法獲得這些見解,因此,在谷歌推出不受歡迎的更改之前,開發者和用户将沒有那麼多機會挑戰谷歌。
根據谷歌的説法,他們做出這一改變是為了簡化流程,并借鑑了最近對基于主幹的開發所做的改變。
由于谷歌同時長期維護着兩個獨立 AOSP 分支——一個為公共分支,一個是内部分支。任何人都可以查看公共分支,但只有谷歌自身、Android OEM 廠商乃至其他籤訂了谷歌移動服務(GMS)許可協定的企業才能訪問到内部版本。這兩個分支在功能和 API 支持方面并不同步,這迫使谷歌不得不在每次發布時都費力地合并分支。谷歌聲稱,通過專注于内部分支,它可以簡化發布流程,讓每個人的工作都更輕松。
AOSP 專家 Mishaal Rahman 指出,AOSP 的大部分開發工作都是由谷歌在内部完成的。就是説哪怕是在此番正式變更之前,更新主體也一直只會出現在内部分支上。第三方可以向公共分支提交代碼變更,但谷歌保留在确定 Android 新版本并發布源代碼之前,拒絕一切此類變更的最終決定權。
總的來説,無論是在今天的新聞發布之前還是之後,以上事實均保持不變。公共 AOSP Gerrit 仍然可用,第三方提交結果也依舊公開可見。谷歌也将繼續發布最終源代碼——只是在開發過程中,該公司将大部分 AOSP 變更由原本的閉門開發正式定性為不公開進行。
AOSP Gerrit
根據 Rahman 的解釋,這一變化主要是為了幫助谷歌内部團隊提升效率。以往,在公共 AOSP 分支與單獨的内部興建和管理開發進度,往往會產生大量不必要的開銷。
由于 AOSP 的公共分支往往落後于内部版本,所以在需要将二者的代碼進行合并時,谷歌工程師們經常會遇到合并衝突——不同代碼版本間的衝突往往需要耗費額外時間和精力方可解決。
通過将所有活躍開發工作轉移至内部分支,谷歌認為此舉可以消除上述衝突并簡化其工作流程。值得注意的是,這并不意味着公共 AOSP 代碼倉庫會由此消失——谷歌将繼續在公共分支中發布最終源代碼,第三方也仍可以通過公共 Gerrit 提交貢獻。總而言之,此番調整只是正式确定了谷歌工程師在開發周期中該在哪裏進行日常編碼。
Android 開源項目仍然非常活躍
至少從功能角度來看,此舉造成的最大問題,就是為 AOSP 貢獻代碼的第三方開發者可能将難以跟蹤 Android 即将迎來的變更。這可能會阻礙開發者們的持續貢獻熱情,因為谷歌在内部也許正在進行同樣的開發與探索。
此前還有報道説,谷歌近期正在轉向 Trunk Stable 開發流程(即所有人為同一代碼版本做貢獻,确保谷歌能夠更快、更穩定地構建整個系統),希望借此加快 Android 的發布速度——特别是打算将今年年内的 Android 16 時間表盡量提前。
參考鏈接 :
https://www.androidauthority.com/google-android-development-aosp-3538503/
https://news.ycombinator.com/item?id=43485950
https://arstechnica.com/gadgets/2018/07/googles-iron-grip-on-android-controlling-open-source-by-any-means-necessary/
今日好文推薦
直播預告
智能編碼工具層出不窮,究竟怎麼選、如何用?3 月 5 日 -28 日,InfoQ 極客傳媒将發起「智能編碼系列」直播,邀請阿裏、百度、騰訊、字節、商湯、思碼逸等企業一起在線 Coding,與所有開發者直觀感受和評測數款國内外在線編碼工具在企業真實生產場景中的表現。歡迎掃碼或點擊按鈕一鍵預約直播、查看回放