蘋果為什麼只開源 OS X 的內核,而不開源 GUI?

GUI的開源對蘋果有什麼損害?

OSX下的驅動程序是否是開源的?它們處在系統中的哪一個層級?和Linux有什麼區別?


有一點需要指出。並不是蘋果開源了他的內核,而是它使用了開源的內核。其內核的主要部分BSD和Mach原本都是開源的。蘋果做的更多的是優化和平台遷移的工作。

大多數驅動也不是開源的,即使是在Linux中有時也需要用非開源的驅動程序。驅動不開源跟硬體廠商的政策有關,未必有技術層面的原因。

Mac的內核使用了混合式構架,在驅動的層面上看是一種微內核架構,具體可參見維基。

GUI不開源到未必能證明開源了會有什麼損失。本身OS X的圖形框架已經比較完善,開源對於蘋果構建生態系統沒有太大幫助,所以也就沒啥開源的動力。而且GUI的構建很多都是美工和交互設計的工作。我不懷好意的推測也許這個行業還沒太有開源的氣氛吧。


1. GUI 開源的後果就是你以後就能看到各種「自主知識產權」的,長得像 OS X 的 Linux,以及其他各種不知所謂的 Mod。更為重要的是,那時候開發一個 GUI 的 Hack 更為簡單,比如你現在在 Bartender 里看到的那樣,那時候不再費勁吧啦的反相工程,可以直接寫出 Menu Extra 的替代品。到那個時候,系統各類毛病鋪天蓋地,OS X 長的五花八門,這也是 Apple 不願意看到的。值得一提的是,OS X 桌面環境在操作系統裡面算是領先的,這東西捨得開源么?一旦開源,連帶 iOS 的好多東西都暴露出去了,得不償失。

2. 驅動程序是不開源的,但是驅動框架 IOKit 是開源的。IOKit 的一個好處就是它是個 OO 的框架,你可以直接通過繼承獲得你想要的特性而不必從頭開始。

3. GUI 層又稱 Aqua 層,基於 Cocoa,在系統的架構的最頂端,也是直接面向用戶和大部分應用程序開發者的層面。當然了,OS X 還支持 X11,如果你說這個的話,這東西是開源的。

4. IOKit 在 Mach 層,如果你有一點了解,OS X 剝離 Cocoa ,Carbon 相關的東西,剩下的叫做 Darwin,這是個 Unix 操作系統。OS X 之所以能夠通過 SUS 認證,Darwin 是關鍵,這裡包括 POSIX 兼容,Unix 線程,進程實現。它的內核叫做 XNU,這是個混合內核,XNU 包含兩個部分,BSD 和 Mach:BSD 實現了POSIX,Networking,Filesystem 等,而 Mach 實現了最為基本的多處理器支持,虛擬內存,分頁,調度,IPC,RPC 等。在 Mach 的基礎上,就是 IOKit 和各類 Kext 了。整個 XNU 部分,跑在內核態。

5. Linux 我不懂,不過它原來是個 Monolithic 巨內核,這個跟 OS X 有很大區別,不知道現在什麼樣子。它這種實現性能要好一些。

推薦你看幾篇文章:

Kernel Programming Guide: Kernel Architecture Overview

Architecture of OS X

Microkernel

Monolithic kernel

Linux kernel


假如Aqua/Cocoa開源,就會出現一個類似CentOS複製RHEL的項目,可以想見一定會分流走很多用戶


推薦閱讀:

為什麼 Apple 不去掉 Mac 鍵盤 Return 按鍵上的「enter」和 Option 按鍵上面的「alt」?
iPhone X 屏幕是不是P排 既然是OLED 是不是也會燒屏?
2017年10月,想買ipad Pro,應該怎樣選擇?
請問從 Windows 投向 macOS 是一種怎樣的體驗?
Windows 8.1 為了適應更高解析度的屏幕,具體做了哪些改進?和Apple 採用的技術相比如何?

TAG:macOS | 蘋果公司AppleInc | Linux | 開源 |