現代 Linux 是不是太複雜?(續)

湯曉發表於2015-11-22

顯然,最近那篇《現代Linux是不是太複雜?》文章觸動許多人的神經。

那篇文章的評論裡有很多獨到的見解,我會在這篇文章中展現給大家。事實上,那些評論也讓我更清楚地認識這個問題。我會盡量在這篇文章中提煉出更多的想法供大家借鑑。

簡單性和可預測性的價值

無論是作業系統還是其他軟體,最好的軟體都是可預測的。閱讀文獻或檢視介面,你可以作出一個合乎邏輯的預測,執行某個操作X,輸出結果為Y。grep和cat指令就是最好的例子。

軟體中的規則越複雜,作出預測就越困難。這將引入bug並造成潛在的安全漏洞。更糟糕的是這將導致人們無法自己解決問題——而自主解決問題的自由應當是自由軟體應當提供的最重要的功能。軟體越複雜,能自己解決問題的人就越少。

我想說明一下:聽許多人談論“易於使用”。為了“更易於使用”,Gnome去掉了列印對話方塊中的選項。(這是我不使用Gnome的原因。實際上 Gnome 的做法讓 print 功能更難用了,因為我現在不得不通過一些晦澀的方法來把這些該死的內容列印到螢幕上。)很多人把易於使用和易於學習混為一談,但實際上,兩者我都不會討論。

我要討論的是易於分析。Linux命令列可能沒有箭頭點選圖示,但——至少有一次——一旦你理解ls –l以及使用者組,使用者以及許可權位如何互動,你很容易知道誰訪問了系統上的哪些內容。現在的情況是由於桌面環境,這個問題的答案變得非常模糊。(顯然一些發行版整合了network-manager工具,這樣系統中所有使用者都能共享他們輸入的wifi密碼。很驚喜,是不是?)

既然建立了幫助文件來告訴我們如何使用,我不介意檢視幫助文件學習相關內容。

在這種情況下使用dbus、cgmanager、polkit等工具,下面是我的感受。對我而言,這就是問題的癥結所在:

感覺就像身處迷宮,所有的通道看起來都是一樣,而我們的手電在2013年就沒電了。在某種程度上,幫助文件的存在是為了cgmanager和polkit這類工具,它們描述了洞穴牆壁的結構,卻沒有給我們洞穴的地圖。因此,我們不得不將這些結構一點點拼湊起來,但陷阱始終存在,所以進展很慢。

並且這些工具還是一個相當大的“坑”——想要把它們的結構摸清楚絕非易事。

其他使用者的觀點

部落格上關於這點的評論很多。顯然這不是Debian特有的問題。例如:

  • Christopher對此就Fedra評論道,“過去憑藉平臺簡單、架構合理的優點可直接分離、診斷並解決的問題逐漸演化煩人、瑣碎的問題,這比Windows的登錄檔還要糟糕。”Alessandro Perucchi追加到,他使用了Linux幾十年,最近他的wifi不工作了,暫停功能也不起作用了,等等。在Fedra下,他很驚訝自己居然不能解決這些問題。
  • Nate bargman的評論非常深刻,“我感覺自己逐漸淪為軟體的奴隸,而不是掌控者。這不是一件好事。”
  • Singh的觀點是這些東西處在一個不斷變化的狀態,即使是現在世界上有極少數人能理解這些內容,而這些內容也會在6個月內過時。(嗨,有人懂這玩意兒嗎?)

這些觀點都很重要。人們能夠自己維護軟體並且使用軟體是自由軟體最初產生的關鍵原因之一。這是我們社群的基本價值。幾十年來,我們一直為生存、為認可而奮鬥。當我開始使用Linux時,在所有平臺上實現可用的網頁瀏覽器既困難又具有挑戰。(Netscape Navigator當時是閉源。)現在我們實現了,從智慧手機到汽車所有裝置上都執行著GPL授權和BSD許可的軟體。

但是我們卻想要從勝利中尋求失敗,因為這就像我們設法掃除阻止人們真正掌握軟體的障礙,卻抬高了技術門檻,使得進入自由軟體領域的比實際需要更加困難。

我們不再需要製作X Modelines或者使用對應的驅動編譯核心,這是進步。硬體大多能夠被自動檢測,USB序列傳輸器在Linux上工作比在Windows上更穩定,這是進步。甚至印表機和掃描器也可以非常完美地工作,這也是進步。

但對於所有這些,我們通過使用者空間來處理。有些人會遇到社群中的老手也不能輕易解決的未知錯誤,因為老手也一樣困惑。有些未曾出現的bug會突然出現,但現在又不明顯。像這種情況的出現只會讓使用者對 Linux 敬而遠之,而不是讓他們產生興趣。

解決方案

這是一個尷尬的困境,不是嗎?那你該如何走出洞穴而不陷入險境?

顯然,最好的辦法是擺脫陷阱和險境。致力於此的人必須明白簡潔是我們的特性——而且是非常重要的特性。不幸的是,我認為我們已經背道而馳。

類似Enrico Zini seat-inspect 觀點的軟體診斷工具會有所幫助。如果有“ls for polkit”類似的工具,可以降低整體複雜度從而更易於管理,那就太棒了。

其次是詳盡的指南——良好的幫助文件,詳細的日誌,有效的錯誤訊息。如果軟體給出詳細的許可權錯誤,人們就知道去哪裡檢視。如果軟體的幫助文件不僅解釋了洞穴壁的結構,還給出了這個空間是如何與附近所有其他空間關聯起來的話,這將是非常有用的。

現在我不確定我們的問題是因為文件貧乏,還是文件太糟糕,好的文件不可能這樣,因為底層設計非常複雜不能被記錄在小於一本書的文件中(在這種情況下,我們的船沒有出發而是在試水)。

反論點:發展

評論中經常提到的一個主題是這是發展的必經過程。某種程度上來說,我同意這種觀點。我明白udev為何很重要。我明白我們為何希望DE軟體互動友善。但我的觀點是:這在wheezy中就應經很好了。GNOME、XFCE和KDE軟體都能掛載/解除安裝驅動器。我真的不確定這些改善解決了什麼問題。

是的,雲公司對安全有要求。我在一家雲公司任職。我可以向你保證,讓安全更難以稽查並沒有給我帶來什麼好處。

關於systemd

讓我驚訝的是,在討論中systemd出現的頻率很高,儘管事實上我沒有執行systemd-sysv程式。很多人認為新的桌面環境系統似乎是“systemd系統”。我不確定這是否合理,systemd不是我的首選,但是正如我在之前的博文中提及,“jessie 現在還能用”。

結語

我個人的機器仍然執行Debian,而且我也不打算更換系統。它確實還不錯。100美元以下,我使用樹莓派和一些指令碼和軟體搭建了一個家庭音樂同步播放系統。同等條件下,採用Sonos的方案將花費數千美元。我熱愛這個社群以及它的價值。即使jessie釋出時整合了polkit和其他工具,我仍然會使用它,因為它依舊是免費提供的不錯的發行版。

相關文章