首先是场面话:本文以 GPL 协议发布
KDE 综览(Part 1)
──为 Unix Like 系统上奴家最喜欢的桌面环境 K Desktop Environment──KDE 所写
作者:千里孤坟
重要名词注解(正文中已有的不纳入):
Unix Like:泛指所有继承了 Unix 血统的操作系统,即六大商业 Unix、基于 BSD 内核的和
基于 GNU/Linux 内核的系统等等。文中一般指基于 GNU/Linux 的系统。
KDE:请先跳过 FAQ 区读取下正题开头几段以获取概念。
GNOME:GNU Network Object Model Environment,另外一个 Unix Like 系统上通
用的大型桌面环境,创始人是一名墨西哥程序员。
作为约定,奴家一般不打算将名词注解专门从正文中提取出来解释,目的是希望您在阅读过
程中保持连贯性,这一篇只是个特例。
前言
作为言之有预的考量,有几个问题是奴家首先要回答的,它们源自于奴家在别处所常见到的
质问,这些问题是为对 Unix Like 系统领域有一定应用经验的人准备的。如果您是新人,且
观之即可。
这里是观点与观念混杂的地方,您的智慧被要求在困惑时予以区分。
Q:为什么要用图形界面呢?我只用字符模式,这样系统才稳定。
A:因为奴家不是网管,用 Unix Like 系统也不是为了做服务器,更不以此为目标。
Q:为什么不用窗口管理器呢?在 Unix Like 系统上如果要用桌面环境的话,还不如用 XP
吧?
A:不选择窗口管理器,是因为奴家不想做“桌面美化工程”工程师,放弃它奴家会收获更多。
1
针对后一问,很遗憾,奴家否认您的前设“XP 的桌面环境就是比 Unix Like 上的好”。XP 是
2002 年的产品,而现在的 KDE 是 2005 年的产品,奴家无论从理智还是感情上都确认
KDE 桌面胜于 XP。
Q:为什么不用 GNOME 呢?界面更加柔和,C 架构让它速度快得多,而且 GNOME 简洁不
像 KDE 那样复杂。GTK 已经是公认的标准,GNOME 是自由桌面的领导者。GNOME 和
GTK 底层已经完全超越 Qt 了,KDE 还有前途么?(奴家决定把这·一·类问题统一回答)
A:为什么不用 GNOME 呢?界面更加柔和──在界面上,奴家偏好欧化水晶风格,当然
Ubuntu 的 GNOME 那种脱俗的“人类”风格如果放在 KDE 上奴家一样喜欢。
C 架构让它速度快得多──在速度上,奴家所知的一个现状是 KDE 越来越快。
GNOME 简洁不像 KDE 那样复杂──易用性的不同取向不是人机工程学的范畴能限定
的,您有权自主决定,但奴家不保留自己的意见:正因如此,KDE 是理想化的
GNU/Linux。
GTK 已经是公认的标准,GNOME 是自由桌面的领导者──在标准上,奴家承认 GTK
的发展前景更明朗,但 GNOME 现在只有说是 GNU 品牌的领导者才是名副其实的。
GNOME 和 GTK 底层已经完全超越 Qt 了,KDE 还有前途么?──在底层技术上,奴
家承认在某些地方如字体替换机制,Pango 这个 GTK 所用的国际化文本渲染引擎的优势是
Qt 未达到的。在前途上,奴家相信当一块涂有面包油的面包落地时,重的一面朝上的几率
更大。
Q:KDE 太花哨了,不是吗?
A:华而不实的东西才可以叫花哨,您能证明 KDE 华而不实吗?
Q:KDE 好像很不稳定?
A:个别软件的现象给予承认,但在普遍上,请当心不要被那些对 KDE 态度有问题的发行版
打包所误导了,一个会给您留下好印象的初体验媒介至关重要。
Q:说到底,像 Linux 这种“专业系统”真的适合拿来做个人桌面么?
A:所谓道听途说。
引子毕,进入正题。
KDE,作为一个产品,它是“K 桌面环境(K Desktop Environment)”的英文简称,其中
的 K 如同 GNU 中的 G 一样,没有明确的含义。它是以 Qt 这个 C++的跨平台图形界面开发
库为底层设计出的一套在 Unix Like 系统上运作的大型桌面环境套件,它现在支持
Linux、BSD 以及许多商业 Unix。最初它是为了替代 CDE(CDE 基于 Motif,而商业的
Motif 开发包非常昂贵)而诞生,并将 Unix 的强大复杂与图形界面的简便易用妥善结合起来,
2
项目发起人为德国程序员 Matthias Ettrich,发起时间为 1996 年 10 月。现在,它所承载
的意义也越来越多。
KDE,作为一个组织,它于 1996 年在德国成立,是非营利性的。它在法律上代表了 KDE
计划,并负责接受外界捐赠等社会行为──不过至少到现在为止,它还是较穷。不似
GNOME 开发组那样,后面有越来越多的资本持有方的支持。这并不是说 KDE 孑然一身,
不过它的后台比 GNOME 要少,这在相当程度上是 Qt 的影响。
KDE,作为一个象征,它在世界上有许多拥簇者,不过这只是一个狭义的说法。从一种国际
意义上来说,KDE 的背后是欧洲,GNOME 的背后是美国。从商业意义上来说,背后的事
物更加盘根错节。这种对比即使令人不适,但它确实存在。当然在不同的圈内人和圈外人眼
中,它具备不同的观念导向性。
若说 KDE,几乎必然要涉及 Qt,有些人认为 Qt 这个有商业公司背景的产品是 KDE 的致命
弱点和死穴,甚至在部分 GNU 狂热信徒口中或跟风者眼中,它就是 KDE 的原罪。
回追历史渊源,Qt 的确曾是一套纯正的商业产品,正是因为这点引发了 96~97 年前后的
Unix Like 系统桌面环境开发者的观念冲突、混战以及随之而来的大分野。在自由软件思想
的一些最原教旨主义的维护者的作为中,GNOME 应运而生,由于它以 GTK 这一从一开始
就是完全开放的图形界面库作为底层,因此获得了大批 GNU 精神忠实拥护者(同时也扩展
到了 RH 等商业公司的协助)的支持。毫无疑问,我们可以设想当年出于这一“哲学”层面的
对立会导致多少口舌之争。不过值得肯定的是 KDE 也同样拥有它的骨干支持群体和开发人
员,并且在稳步的发展中连带使 创建 Qt 的挪威 Trolltech 公司获得了更多的关注,
Trolltech 和 KDE 两个机构出于彼此共同利益的考量,他们试图解决 Qt 的版权问题这一长
年来被人诟病的隐患,到 2000 年后期,Qt 正式接纳 GPL 协议,并伴随 Qt 的免费版本发
布,这个源码包的命名就包含如下字样:“qt-x11- free”,X11 意味着它面向所有支持 X
Window 工业标准的平台,几乎所有的 Unix Like 系统都被涵盖。
自去年中叶发布的 Qt4.0 起,Trolltech 甚至第一次提供了 Win32 平台上的 GPL 发布版,
这甚至意味着 KDE 移植到 Windows 上都变成了可能。基于互利的认识,一家企业为自由
桌面在自己的核心产品上作出了它最大范围和可能的让步。
到这时,虽然我们可以公正地说:KDE 本身已经是纯正的自由软件产品,而且它和 Qt 开源
版的协议在根本上都是反封闭的。但众所周知,Qt 的 GPL 协议有一个特别的地方
(QPL),它只准许同样遵守 GPL 协议的软件合法、免费且自由地使用 Qt 库,但封闭的软
件产品若要基于 Qt 开发还是要缴费的,而且价格不菲。因此这一所谓的“不完全和彻底”的
自由软件还是被部分不依不挠的 GNU 支持者所抵制,在一些自由软件阵营的重要信息渠道
里也曾传出公开呼吁程序员们放弃 Qt,提倡 GTK 的声音。事实上由于 GTK 采用的 LGPL
3
这一比 GPL 更宽松的版权协议(LGPL 协议的存在是绝对必要的,像 glibc 这样的最底层编
程元件假如是 GPL 的话就几乎意味着 GNU 系统上不允许任何闭源的商业软件),一套动态
链接了 GTK 库的软件产品被授予的权利包括可以封闭它的源码,可以以商业模式销售,而
这一切不用缴纳任何版权费用。显然这样的好事会很轻易获得许多公司的青睐,事实上我们
也可以看到不少闭源的 Unix Like 系统上的软件是和 GTK 相关的,最常见的有如 Acrobat
Reader 7.0,IBM 推出的 SWT 采用的图形构件也只支持 Motif(为了在 Unix 上通用)和
GTK,国产的永中办公套件 Linux 版采用了 GTK,而基于 Qt 的在 Unix Like 系统上的闭源
产品国内用户比较熟识且名气较高的或许就一个 Opera 浏览器。GNOME 由于它的 GTK 底
层的缘故,也获得了许多商业公司在财力和人力上的支持。而 KDE 获得的实际援助则主要
来自欧洲的一些 Linux 服务商,Mandriva、SuSE 算是其中几个主要的后盾。比较微妙的
事情是 GNU/Linux 发行版的重要成员之一 SuSE 的开发组的一批核心团队虽然来自德国,
但后台 Novell 却是美国公司。
但不管怎么说,也许很多一般用户和程序员没有意识到:是 GNOME 而不是 KDE 助长了自
由桌面的商业化。
在一个公开场合评论这两个自由桌面代表的好坏不是奴家打算做的,不过在以上这些叙述之
后仍然有些内容可以列举:
RedHat 这一开源业界的巨头之一仍然是 GNOME 的坚定支持者,GNOME 官方的服务器都
是给 RH 托管的。而 RH 产品里的 KDE 打包质量一直不是很可靠。
Debian 对 GNOME 的支持力度高于 KDE,在许多细节上您可以看出来,比如 Splash。
Ubuntu 的 DistroWatch.com 排名远远高于 Kubuntu,而且前者的特色显然多于后者。
Mandriva 这个欧洲 Linux 发行版代表之一采用 KDE 为默认桌面环境。
Novell 宣布自 SUSE10 以后的所有 SuSE 企业服务器版和 Novell Linux 产品都改以
GNOME 为缺省桌面环境,KDE 库的技术支持仍然被保留。
Slackware 已宣布不再将 GNOME 集成在自己的发行版产品中,因为它的维护、打包和整
合测试过于困难。
在中国国产 Linux 发行版中,除中标和华镭默认使用 GNOME 外,其他产品的默认桌面环
境都是 KDE。
红旗的 Qt 是最特别的,红旗研究院的少数民族文字显示、排版支持如藏文、维吾尔文相关
研究项目也都是基于 Qt 的改造。
另一个值得推敲的差异是,注意区分 Qt 和 KDE,GTK 和 GNOME。
有理由还要提及 freedesktop.org,这是个自由桌面标准化的组织,其标准制订的参与者
包括 KDE 和 GNOME 双方的开发人员,目的是创建一套类似 W3C 网页编写标准的一样的
桌面应用标准,从个人角度看,也许还包括统一桌面环境这个最终的目的。现在,诸如
4
udev+HAL+D-Bus 的卷管理标准、xdg 菜单标准、GStreamer 多媒体框架标准这些可经
常见到的词汇都是 freedesktop.org 的产物,它们解决问题的方式现在似乎是带来了更多
问题,但这么做是否成功奴家暂时并不抱反面态度。Freedesktop.org 眼中的自由桌面不
仅包括 GNU/Linux,也包括 BSD 等系统。不过到现在为止,它们的权威程度和事实约束力
还不如 W3C,至少 KDE 和 GNOME 之间的关系现在还不能说真的说是和睦融融,延伸到
用户这一级就不用说了。前些 时候 GStreamer 从 0.8 到 0.9 的升级就造成 API 不兼容的新
闻令好些人批判了一通。
和所有桌面环境一样,GNU 系统的自由桌面都有共通的一套底层架构图,大致上可以这么
归纳(不提及 GNOME1.x 版本):
Kernel<GNU C Library(GLIBC)<X(XFree86/X.org)<GUI 程序设计框架<桌面环境
在字体渲染方面:
FreeType2+Fontconfig< Xft(包含在 X 中)<Qt<KDE(理论上 Qt 可以不用 Xft 后端)
FreeType2+Fontconfig< Xft(包含在 X 中)<GLIB2<Pango<GTK(≤2.6)<GNOME2(≤2.10)
在 Xft+FreeType2+Fontconfig 这个字体后端体系里,最后完成字体渲染部分的是
Xft,Xserver 中的一个组件。 FreeType2 负责从字体中读取字形,结合 Fontconfig 中的
匹配设定(它可以精确设定字体参数的微调)描绘出一个文字点阵的信息, 粗、斜体等特
殊渲染也需要这里的参与,FreeType 可以根据机器算法或字体本身含有的粗、斜体字形对
原有字形的点阵重新安排,最后将这套信息传递给 Xft,由它将这个点阵再传递给应用程序
画到屏幕,到此一个字体的显示才算完成。
在 GNOME2.12 以后,Cairo 这个 freedesktop 的桌面渲染成像技术应该将会被更广泛地
应用,GTK2.8 版本已经默认使用 Cairo 库作 2D 渲染后端了。这可以为 GNOME 带来更广
泛的图形与文本处理能力,比如竖式菜单等。
至于各种基于 X 的扩展,如 OpenGL 支持、Xinerama、X Render 等也是不可少的。还有
包括许多传统的 Unix 底层库,如 Zlib(数据压缩处理库)、OpenSSL(开放的 SSL、TLS
等安全功能支持包)、CUPS(通用 Unix 打印系统)等等,它们和桌面环境并没有必定的
关联,但桌面环境的完整实现不可能少得了它们。
下文对 KDE 发行版的叙述,以当前最新的 KDE 3.5.5 版为准。
KDE 的每一个版本发布都含有约 80 个包(不计针对上一版本的源码包补丁),不过其中有
60 余个是语言包,对于一种语言环境的用户来说需要的只是其中个别几个,剩下的程序软
件包则是 19 个,这也是后面将着重涉及的。
5
评论0