您的位置:首页 > 运维架构 > Linux

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

2005-06-28 01:48 316 查看
看这个帖子 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 的好处是,它展现给用户的简单性。安装过程中需要用户指定的就是序列号、安装分区和时间,别的都不需要考虑。自动安装完成就可以得到一个『标准』的、可直接使用的桌面。对于各种桌面程序而言,都可以很轻易地工作起来。不需要去进行中文化,不需要自己搜寻中文输入法,不需要关注配置字体,不需要进行美化,不需要设置 locale 和 GTK_IM_MODULE 等各种环境变量。Everything just works :-)。除了 Java 或者 GTK 程序(很久以前用过少量 gtk1 的程序,gtk2 的没有尝试过),各种 GUI 程序都有统一的界面,支持中文处理,兼容各种输入法。只要鼠标轻松 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 窗口去。输入法随处可用,没有听说 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,多少的泪水多少的欢笑。再看看输入法,想想 XIM 和 GTK_IM_MODULE 的冲突,想想 qt 输入法模块的支持,想想…… 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 联系我,或者写信给我 :-)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐