Linux -> Desktop -> 整合Gnome+KDE 是一個玩笑

來源:互聯網
上載者:User

看這個文章 http://www.linuxfans.org/nuke//modules.php?name=Forums&file=viewtopic&t=121785 的時候順便回了幾句,後來想想不過癮,不如繼續說說我的想法。

OSS(如果沒有特殊指出,則下面 OSS 都指 Open Source Software)-er 們大概不會沒聽說過 RMS 的《大教堂和集市》吧。裡面指出了現代軟體開發的兩個不同模式,一個是所謂的“大教堂”模式——傳統的集中式軟體開發模式;一個是所謂的“集市”模式——OSS倡導的新的開發模式。這兩個模式各有所長,同時都創造了,並且創造著,高品質的軟體;並沒有哪一種模式真正地壓倒性勝出。

但是,縱觀現在的案頭市場,Linux 圈雖然投入了無數的人力物力,似乎成效並不顯著。說起好的案頭系統,看得到的就是 XP,想象中第一的一定是 Mac OS X。Linux 案頭的位置在哪裡?在 freedesktop.org,在  gnome.org 和 kde.org 喧鬧的 mailing list 裡,在 freenode.org 的 IRC 頻道裡,唯獨不在 End User 的心中。ROX-Filer + Ice WM 模仿 XP(極端例子,看看共創 Linux 和紅旗 Linux 吧,呵呵),以及類比 OS X 的 gtk2/qt theme 都是『美化』Linux 的經典範例。這不得不說是 Linux 案頭的悲哀。

相信大家還是用 Windows 系列的比較多一些,就讓我們先回想一下 Windows 的優點好了。我這裡說說我個人的觀點,也許不代表每個人的看法,但我相信這還是代表了一些人的看法的。Windows 的好處是,它展現給使用者的簡單性。安裝過程中需要使用者指定的就是序號、安裝分區和時間,別的都不需要考慮。自動安裝完成就可以得到一個『標準』的、可直接使用的案頭。對於各種傳統型程式而言,都可以很輕易地工作起來。不需要去進行中文化,不需要自己搜尋中文IME,不需要關注配置字型,不需要進行美化,不需要設定 locale 和 GTK_IM_MODULE 等各種環境變數。Everything just works :-)。除了 Java 或者 GTK 程式(很久以前用過少量 gtk1 的程式,gtk2 的沒有嘗試過),各種 GUI 程式都有統一的介面,支援中文處理,相容各種IME。只要滑鼠輕鬆 double click (當然,針對特殊使用者群,可以更改為單擊或者啟動輔助鍵)就可以輕鬆安裝、運行程式,瀏覽檔案系統,開啟、編輯檔案。合適的程式會在合適的時候被調用,一切就像一個魔術。我相信,其中最關鍵的問題就在於它表現出來的統一和簡單。預設配置很好,而自訂的修改會自動作用於所有的程式並且不存在任何問題。

再說說 Mac OS X。學校恰好有一些裝了 Mac OS X 的 emac 開放,而我出於興趣,最近經常趴在上面,看 pdf 看網頁聽音樂。瀏覽器我棄 Safari 而擇 Firefox,發現都是 Firefox,怎麼 OS X 上的 Firefox 就那麼漂亮呢。。。跟整個 Aqua 介面顯得那麼協調而統一。OS X 有不少獨一無二的設計,譬如動態視窗特效,多視窗程序對 dock bar 的利用,統一的位於螢幕頂端的 menu bar,等等。各種程式,包括 Firefox, Microsoft Office V.x, Apple Works, Macromedia DreamWeaver 等,雖然來自不同公司不同組織,但是即使在一起運行也顯得毫不雜亂無章。滑鼠的 focus theme 是 click-to-focus 的,則滾輪的動作完全不會傳遞到 non-focused 視窗去。IME隨處可用,沒有聽說 firefox 中不支援游標跟隨這麼奇怪的毛病。程式之間的調用、剪貼、協作都顯得平滑無礙;搭配美觀大方的主題和各種 fancy 的 eye-candy,整個系統就像一件精美的藝術品。

同樣是我們學校,FEIT(工程和資訊技術系)的機房中清一色的 Knoppix。按理說,這個直屬 FEIT 的機房應該受到最多的關注吧?搭配傳說中最強大最穩定最……宇宙霹靂無敵的 Linux,應該是天下最強大的機房了吧?為什麼當我點開 Mozilla / Firefox 看學校網頁的時候,英文字型那麼難看呢(我都不忍心去嘗試開啟 CSDN 了)?—— AntiAliasing 沒有開啟。Mozilla 為什麼啟動失敗?——從 Konsole 運行看看錯誤輸出吧,再不行 strace 之。什嗎?Killed by SIGSEGV?我……認命了。Linus you rule! 去 Sir 或者 Fans 搜尋一下『中文』,聽聽苦難中呻吟的可憐人民吧。。。想要中文?準備好乾糧和睡袋,準備好經曆滄桑。從 patch 到 configure 再到 make install,多少的淚水多少的歡笑。再看看IME,想想 XIM 和 GTK_IM_MODULE 的衝突,想想 qt IME模組的支援,想想…… Oh my god!

GNU/Linux 是一個開放的系統,任何人都可以去加入它的開發。這樣的開放性帶來的優點是不言而喻的——無數的程式員共同推動它的成熟。但是它的缺點呢?太多的選擇,太多的可能性,非常容易令一個非技術使用者感到無所適從。GNU/Linux 是一個信仰驅動的軟體工程,每個人都有權力去實現自己的夢想。但是,如果強迫一個使用者去接受每個開發人員的夢想的產品並且自己挑選一些適合自己的,他們必然會無所適從。我有很多朋友,用 Real Player 聽了幾年的歌卻不知道 Real 公司的大名;用 XP 掃雷多年而根本不瞭解 NTFS 或者 ClearType 技術;成天使用 Word XP 處理文檔卻不清楚 Word 和 Microsoft 兩個名詞的關係。。。Who cares?就算沒有一個『Tech People』,系統都會自動解決問題;最嚴重不過一個 reboot。系統背後隱藏了各種各樣的秘密——COM, DCOM, DDE, 。。。Tech People 或許對此津津樂道,甚至去寫/買什麼 Undocumented Windows 這樣的書來滿足自己的窺視欲……但是對於 End user 而言,這個系統的好處就在於它隱藏了自己的複雜性,提供了統一的觀感並且幾乎是『強迫』性地讓你接受它。當一個人沒有選擇的時候,他要麼就爆發出自己真正潛在的創造力或者破壞力,要麼就能隨遇而安。而當他面臨真正的無拘無束的自由的時候,也許他只是面臨無所適從的尷尬。自由終究只是一個夢想罷。

GNU/Linux 是一個偉大的嘗試——它在死氣沉沉的傳統軟體行業的荒漠上開闢了一片新的田地,一個不同於以前所有秩序的混沌世界。它創造了無數的機會,無數的主意,無數的可能性。製作 Distribution 是一種從混沌中整理出秩序的嘗試——選擇一些,放棄一些;整合 Gnome 和 KDE 則是也是類似的嘗試。它們都在試圖改變混沌的狀態,試圖規整這些混亂的線條。但是,自由的人們是不會放棄自己的追求的(苦笑)。就算 Gnome 和 KDE 真的整合甚至合并了,誰去讓 FVWM 和 XFCE 都憑空消失?誰有能保證不再出現一個特立獨行的項目?沒有人能保證,因為每個人都有自己的自由:)嘗試規整混沌的結果就是導致更多的混沌的誕生——混沌是生命力最強的存在。

但是,GNU/Linux 的現狀已經基本定型了:沒有一個強大的核心,沒有誰佔據決定性地位,沒有一個統一的目標和方向。要想在這種情況下對 Gnome 和 KDE 進行整合,難度應該是想當大的。在我看來,我們應該向另外一個方向嘗試。吸取 Win/Mac 的長處——統一、堅固、簡單的表面和隱形複雜性——和 Linux 的優勢——免費的技術力量,然後創造一個新的存在。不要拘泥於 FSF 的 software list 上的各個項目。從它們那裡得到各種點子和代碼,然後按照 GPL 的許可進行自己的整合、再製作。由一個團隊,或者一個公司,進行技術和經濟方面的決策,確定項目的發展方向。開發可以不斷借鑒各種 OSS 的代碼(只要不違反 GPL 或者相應的協議),但是只是在細節層次依賴它們。最終的目的是形成一個穩定的、簡單的軟體開發平台。只有出現這樣一個穩定的狀態(反面例子:Gtk/Gnome 的代代更迭……),才能吸引更多的程式員開發各種針對 end user 的程式。最終的使用者可以不在乎所謂的網路通透性,可以不在乎最偉大的架構設計和最靈活的擴充性。他們只相信自己的眼睛——一個能輕鬆啟動並執行程式就是一個好的程式;而一個需要經過編輯設定檔、仔細調整各種配置並且從各種隱秘的細節中控制行為的程式絕對不會是一個好的程式。當一個穩定的開發平台形成之後,我相信很多的程式員會被吸引來開發各種使用者程式,而豐富的使用者程式才是吸引使用者、搶奪案頭市場的關鍵之所在。GNU/Linux 的完全自由的代價是放棄了統一的規劃和穩定的發展。我不是說 GNU/Linux 是個錯誤,而只是說,其實還有另外一種可能。

假想中的這個系統應該有一個穩定的 API。即使這個系統還是基於 Linux 核心,我們也應該把 Linux 核心的變化屏蔽在一般的軟體開發人員視野之外。不要緊緊跟隨 Linux 的發展,只利用那些已經成熟穩定的東西。devfs -> udev, dnotify -> inotify, /dev/poll -> epoll api,這樣的故事太多了,我們必須避免。利用那些已經完全成熟但是仍然非常有價值的技術,將它們融和在一個統一風格的 API 中。我曾在某個論壇看到過有人問 Linux 的『官方線程實現』是什嗎?我說是 pthread 庫,但是人們卻很容易誤解為 pthread 只是一個『第三方』的庫。就因為這個庫在開始時候是獨立於 Linux 和 glibc 發展的,保持名字給一些開發人員帶來了太多的困擾。從 LinuxThread 到 NPTL 的變遷帶來的困擾也是一樣的。我們應該用一組統一風格的 API 將這些種種變化隱藏在背後,讓開發人員相信,只要使用這一組 API 就等於得到成功啟動並執行保證。不必擔心使用者系統的多樣性(就算不說使用者自己編譯核心或者 Gentoo 這樣的極端情況,各個主流髮型版之間,或者某個髮型版的版本之間,多少都有各種不相容的情況出現),不必擔心太變態的使用者硬體體系(首先我的案頭設計就是針對 X86 / X86_64 的,而且完全可以學習 Mac 的方法,從專門針對完全特定的系統開始)。API 應該體現這個系統設計的統一性,從命名方式、編譯依賴等各個方面給程式員一種感覺(至少是一種錯覺),就是這個系統是一個完整而完美的體系,不應該也不可能被剝離成片段的集合。

相比 Linux,這個系統應該有一個不同的哲學:針對一個問題的解決方案只要有一個就夠了——我們只要把這唯一的解決方案做到更好就可以了。GNU 項目之間是競爭模式的,這樣的項目有生命力,但是生存條件也更惡劣。如果讓開發人員都專註於協作開發一個解決方案,也許能讓這個解決方案具有更好的實現,更強大的生命力。更明顯的好處是,使用者不必面臨交流的困難。一個人說『寫報告的那個東西』,不會有人問『是 AbiWord 還是 OOo?』然後被告知是『TeXMacs』,大家即使不知道名字也會心知肚明是哪個東西。這樣不僅減少了開發人員勞力的重複,也簡化了使用者的交流。這樣應該對誰都更好吧。

下面半年我會繼續考慮這個想法,並且試著學習閱讀代碼,分析現有的 GNU 項目。我會把我的想法、心得整理在這裡(http://blog.chinaunix.net/index.php?blogId=6862)和 CSDN (http://blog.csdn.net/Wolf0403)。如果有好的想法、建議和意見,都可以在這裡、CSDN 聯絡我,或者寫信給我

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.