2008-09-19

[转]KDE综览(前言)

KDE综览(前言)

作者:千里孤坟

作为言之有预的考量,有几个问题是奴家首先要回答的,它们源自于奴家在别处所常见到的质问,这些问题是为对Unix Like系统领域有一定应用经验的人准备的。如果您是新人,且观之即可。这里是观点与观念混杂的地方,您的智慧被要求在困惑时予以区分。

Q:为什么要用图形界面呢?我只用字符模式,这样系统才稳定。

A:因为奴家不是网管,用Unix Like系统也不是为了做服务器,更不以此为目标。

Q:为什么不用窗口管理器呢?在Unix Like系统上如果要用桌面环境的话,还不如用XP吧?

A:不选择窗口管理器,是因为奴家不想做“桌面美化工程”工程师,放弃它奴家会收获更多。针对后一问,很遗憾,奴家否认您的前设“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的强大复杂与图形界面的简便易用妥善结合起来,项目发起人为德国程序员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意味着它面向所有支持XWindow工业标准的平台,几乎所有的Unix Like系统都被涵盖。

自去年中叶发布的Qt4.0起,Trolltech甚至第一次提供了Win32平台上的GPL发布版,这甚至意味着KDE移植到Windows上都变成了可能。基于互利的认识,一家企业为自由桌面在自己的核心产品上作出了它最大范围和可能的让步。

到这时,虽然我们可以公正地说:KDE本身已经是纯正的自由软件产品,而且它和Qt开源版的协议在根本上都是反封闭的。但众所周知,Qt的GPL协议有一个特别的地方(QPL),它只准许同样遵守GPL 协议的软件合法、免费且自由地使用Qt库,但封闭的软件产品若要基于Qt开发还是要缴费的,而且价格不菲。因此这一所谓的“不完全和彻底”的自由软件还是被部分不依不挠的GNU支持者所抵制,在一些自由软件阵营的重要信息渠道里也曾传出公开呼吁程序员们放弃Qt,提倡GTK的声音。事实上由于GTK采用的 LGPL这一比GPL更宽松的版权协议(LGPL协议的存在是绝对必要的,像glibc这样的最底层编程元件假如是GPL的话就几乎意味着GNU系统上不允许任何闭源的商业软件),一套动态链接了GTK库的软件产品被授予的权利包括可以封闭它的源码,可以以商业模式销售,而这一切不用缴纳任何版权费用。显然这样的好事会很轻易获得许多公司的青睐,事实上我们也可以看到不少闭源的Unix Like系统上的软件是和GTK相关的,最常见的有如AcrobatReader 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网页编写标准的一样的桌面应用标准,从个人角度看,也许还包括统一桌面环境这个最终的目的。现在,诸如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在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个,这也是后面将着重涉及的。

每次新的KDE发行版都伴随着三份文档:发布注解、更新列表和需求列表。发布注解是一则新闻性质的公示;更新列表颇为详细,其中较为重要的更改直接陈列在 页面中,较次要的则列举在SVN(KDE组织现在内部采用Subversion代替CVS实行并行版本控制)更新单中。需求列表则是一份对运行平台必要软件(有的还有版本范围需求)支持的说明,并根据需求等级分为Require、Recommand、Optional三个级别,不过实际上这份需求列表在细节上往往是不够完整的。

这里有一份打开所有KDE特性所需用到的部分X扩展列表,一般您没有必要去关注它们是否被安装,近几年的X发行版缺省都会包含它们中最重要的几个,X.org 6.8开始才提供的几个新增扩展都不是非常必需的:

X Composite Extension:仅在X.org 6.8及以上版本Xserver中才提供的图像混成器,KDE在它的支持下可以启用窗口真透明的桌面效果。这是个新的事物,其速度和稳定性都不到可被广泛推介的地步。启用它需要自行承担随时可能发生的崩溃风险。

X Cursor Extension:此扩展将允许鼠标光标呈现动态与更多色彩的主题特效,是桌面美化工程的需要。

X Damage Extension:仅在X.org 6.8及以上版本Xserver中存在的扩展,可对X应用程序提供屏幕与窗口的内容变更的即时消息通知。它被X Composite管理器(基于这种X扩展开发的程序,并非扩展本身)所需,完成写屏效果的动态更新。

X DPMS Extension:此扩展实现显示器的能源节省技术。

X Fixes Extension:仅在X.org 6.8及以上版本Xserver中存在的扩展,用于在后端对X核心系统中可能存在的Bug缺陷进行标址,防止应用程序相关它们的操作导致更严重的后果。它和X Composite扩展的应用有较密切的关联,另外一个细处是在KDE的剪贴板管理器中它被用于降低程序和X的系统资源占用。

X Randr Extension:此扩展用于对显示元素实行旋转、镜像、缩放等处理,它是建构在XRender之上的。两者的结合还可以实行优质的图文混成。

X Render Extension:此扩展用以提供文字阴影、反锯齿字形优化渲染等机制,几乎所有的KDE程序都可以用到它。

X Video Extension:此扩展提供了硬件加速视频回放的特性,对优质的多媒体应用而言是至观重要的支援。

X Xinerama Extension:此扩展提供了多显示输出端的支持,常见于演播场的分屏显示器,kdebase通过它的接口可以正确实现这种功能。

GLX:GLX是OpenGL与X Window之间的连接桥,在加载了OpenGL工业标准模块的X Window环境中,OpenGL可根据应用程序的指示,通过以显卡为主的运算将3D图元转换成2D图像,在KDE里这意味着在硬件加速支援下的高级桌面特效、流畅的OpenGL屏保、优质的3D渲染(kdegraphics包内有程序会用到)以及一些音频播放器视频输出插件的炫目演示都能得以展现,并占用较小的CPU资源。在标准的X发布包中往往已经含了适应部分主流显卡的DRI加速模块,它们基于开源的OpenGL开发包Mesa。如果您使用一些nVIDIA或ATI的显卡,您可以获得厂商提供的闭源驱动以实现更多更快更先进的OpenGL表现(只是不一定更稳定,这主要是针对ATI显卡),但由于它们是封闭的,一旦出了问题,您恐怕只能向厂商去抱怨,并等待他们的解决。

没有评论:

留言须知:
0. 你有權保持沉默,但你所說的將作為此BLOG有人訪問的證據。
1. 支持的HTML標籤:<a href="" title=""> <b> <em> <i> <strong>。
2. 留言留名,不然易被无视。(在“评论”中选择“名称/网址”,网址可以不填)。
3. 原則上我不删除留言,除非那則留言侮辱到你。