當前位置:編程學習大全網 - 源碼下載 - 為什麽Ubuntu 要自己搞snap格式而不是f

為什麽Ubuntu 要自己搞snap格式而不是f

為什麼 Ubuntu 要在這個時候大張旗鼓推這個。

在操作系統領域幾十年來經久未變的壹點是,操作系統本身不重要,重要的是能跑在其上的應用程序,現在的話說是生態環境。而應用程序不是針對操作系統本身撰寫,應用程序是針對操作系統提供的API/SDK撰寫,換句話說,掌握了API/SDK的控制權,就掌握了最寶貴的應用程序開發者,操作系統本身就得以長久發展。這就是為什麼 Windows 遠比 Mac 賣得好的道理,Windows 掌握著桌面操作系統裏最穩定的SDK,幾十年來保持兼容性未曾變過,而 Mac 時常破壞 API 兼容性使得老程序不能再跑在新系統上。這個道理 How Microsoft Lost the API War 這篇文章闡述得非常明白。

GNU/Linux 乃至整個 FOSS 社區,在這壹點上,其實非常另類。 GNU 系統從來沒有把「保持程序兼容性以吸引用戶和開發者」放在首要目標,GNU 的首要目標是「給用戶以自由」。那麼 GNU/Linux 的應用程序兼容性不好麼?並不見得,幾十年前的 ed/vi/xterm 程序現在還好好得跑在 各大發行版上,壹些程序比 Windows 上的軟件還要古老很多。但是這並不是 GNU/Linux 和各大發行版致力於保護兼容性的結果,而是這些軟件「自由」的結果。因為他們自由且開源,發行版維護者們可以拿他們的源代碼重新編譯以利用新的軟件庫新的 ABI ;因為他們自由而且開源,上遊維護者可以不斷更新他們的代碼讓他們適應新的技術新的框架新的 API ;因為他們自由而且開源,當上遊開發者放棄項目不再開發的時候,還會有有誌之士挺身而出接替開發維護的職責。換句話說,在 Linux 發行版上,軟件的兼容性好是軟件自由的直接結果。

這就是現在 GNU/Linux 發行版們打包軟件發布軟件的模式,大家努力的目標是給予用戶自由。這壹模式在自由開源軟件上非常有效,但是面對閉源軟件就不那麼有效了。閉源軟件的源代碼在開發者手上,沒有發行版打包者做銜接工作,所以閉源軟件在 GNU/Linux 上發布起來非常困難。軟件的自由,除了乾凈放心保證隱私外對普通用戶來說沒有立竿見影的優勢,只對軟件開發者們有意義,所以 GNU/Linux 發行版壹直是程序員的天堂,用戶的地獄。

而 Ubuntu 作為壹個發行版,並沒有***享傳統發行版的自由精神。從壹開始,Ubuntu努力的首要目標就不是給用戶自由,而是擴大普通用戶的基數。Ubuntu看到,對普通用戶而言,閉源軟件尤其是商業軟件同等重要甚至可能更重要,普通用戶寧願忍受不自由,寧願放棄隱私放棄控制權,也不願使用那些表面粗質功能匱乏的開源替代。所以 Ubuntu 需要打破傳統發行版的發布方式,讓商業閉源軟件也能在 GNU/Linux 上輕松發布。

而且這條路的可行性早就驗證過了。Google 通過給 Linux 內核上包裝壹層 Apache 協議的「自由性中立」的 userland 層,禁錮住了 GPL 的病毒傳播性,開發出 Android 系統,發展出 Android 之上的生態環境,吸引到了無數開發者為其平臺寫(大部分閉源)軟件。另壹點 Valve 通過 Steam 作為兼容層,附帶大量依賴庫並保持 API 足夠穩定,同時充當遊戲開發者和 Steam 兼容層之間的橋梁,也順利地招攬到不少遊戲開發商為 Steam 移植 Linux 平臺遊戲。這兩個先例都啟迪 Ubuntu ,這件事可以做並且可以做好。

並且現在做 Snap 對 Ubuntu 有壹個重大的好處,在於壟斷 SDK 控制權。Snap 架空了發行版提供的包管理器,甚至架空了發行版本身(提供的依賴庫),從而對開發者而言,針對 Snap 提供軟件包就不需要考慮發行版(這是好事)。如果 Snap 受到足夠多的開發者支持,發展出成熟的生態,那麼 Ubuntu 也就不再發愁今後的推廣之路了,因為 Ubuntu 上的 Snap 支持必然比別的發行版要好。目前 Snap 上發布或者安裝軟件包需要 Ubuntu One 身份認證,屬於中央化的 App Store 模式,這給予 Ubuntu 最直接的控制權(而不是 Ubuntu 宣稱的把控制權從發行版交還給開發者),到時候 Ubuntu 攜應用以令用戶,用戶並沒有選擇的權利和自由。另壹點,Ubuntu要做手機系統做IoT系統,面向的用戶群就是 Android/iOS 的用戶群,這樣的用戶群下,用自由開源的生態在短期內顯然難以抗衡,所以必須引入商業生態,從而提供類似的軟件商店也是 Ubuntu 的必由之路。

  • 上一篇:阿裏雲啟動天池電力AI大賽是怎麽回事?
  • 下一篇:運行Android Studio出現這樣的提示,怎麽處理?
  • copyright 2024編程學習大全網