在桌面Linux的一阵泡沫过去以后,国内的GNU/Linux厂商们把自己的市场战略方向纷纷转向了嵌入式系统开发、定制服务以及OEM市场,希望藉此来获取利润,等待市场的复苏。因为在嵌入和定制服务方面正是
GNU/Linux的优势所在。OEM则是通过在台式PC上预装桌面版的GNU/Linux操作系统来代替Windows操作系统,所以有不少Linux厂商试图在被Windows占领已久的市场上抢得一席之地。最近,我们从一部分Linux厂商公布的数据中得知,该OEM市场的增长情况非常可观。期待桌面Linux大放光彩的人们一边为之庆幸,一边又不得不冷静下来细想:GNU/Linux究竟发展到了什么样的程度?它还需要做哪些方面的工作才能走向大规模的市场化?
自由的利弊与Linux架构
不管桌面Linux市场如何变化,自由软件世界的开发者们总是充满热情,他们按照GNU的思想把GNU/Linux和许多自由软件发展下去,一点点地走向成熟,就像以前Linux在服务器市场获得的巨大成功一样。自由是Linux开发中最大的优点,同时也是最大的不足。优点在于,Linux的开发可以不受太多外界因素的影响,从而得到非常健康的发展;缺点是开发者们由于对外界经常采取不太理会的态度,从而在软件的人性化方面会让普通用户很难接受,这会导致缺乏OEM厂商的支持。一种操作系统软件不管拥有多少先进的特性,如果缺少与用户的亲和力,则很难取得成功。
好在GNU/Linux从起步到现在,其每一个新版本的发布以及最近的很多迹象都在表明GNU/Linux在软件界面的人性化方面不断进步着。下面我们将从一个完整的Linux系统架构来分析其发展趋势。在这之前,我们先需要从图1中了解桌面Linux的系统架构。
在图1中可以看到,图形化的Linux是一个类Unix操作系统。必需采用X-Windows,绕过系统核心直接操作硬件,才能实现高效率的图形能力。与其他桌面操作系统一样,桌面化的Linux也需要大量应用程序的支持,而当前Linux欠缺的就是易用的桌面环境和其上的应用程序,以及对各种在桌面系统中常用硬件的支持。
GNU/Linux核心的变化
当GNU/Linux的核心发展到2.4版本的时候,其结构已经非常清晰和稳定。在接下来的时间里,GNU/Linux的开发者们会不断地为其增加新的驱动程序和新的特性,包括输入设备和多媒体设备的支持。他们希望GNU/Linux除了能在服务器市场一展身手以外,还能真正地成为一个可以放到桌面上来使用的操作系统,也就是它不但需要增强图形界面的易用性,系统底层的功能也要能跟上。这从其核心的2.4.5到2.5版本的发展就能看出来,在更加明确地为设备分类,稳定已有代码的同时,也协调好了类Unix的设备访问方法,保持了系统和软件的一致性,同时也大范围地增加了系统所能支持的硬件设备种类。作为整个操作系统的最底层,这些都为更好地支持基于其上的各种应用做好了铺垫。
图形界面的优化
在发展的初期,GNU/Linux与Windows明显不同的是,它作为一个类Unix的操作系统不是最注重图形界面的易用性,而是把前期开发的重点放在了内存管理、进程调度等系统的基础部分。由于受类Unix系统的传统影响,GNU/Linux在核心里面并没有直接实现桌面系统所必需的图形驱动能力,这对于今天已经离不开图形化界面的普通用户来说,简直是不可思议的。虽然GNU/Linux核心的2.2版本之后都提供了FrameBuffer Console设备,但是也只能提供一些简单的图形能力。值得庆幸的是,与传统的Unix系统一样,自由软件世界的X窗口系统——XFree86给GNU/Linux赋予了实现图形用户界面的能力。
XFree86通过绕过操作系统直接访问硬件的方式来驱动图形设备,获得高效率的加速能力,从这一点来说它非常像一个图形设备驱动程序而不是一个窗口系统,但同时又提供简单的ATOM管理和消息处理的能力,让开发者不至于工作在最原始的环境下。而整个XFree86基于TCP/IP的C/S 结构,能够很轻易地把系统的处理分布化。同时X窗口系统开放的工业标准正是其在Unix世界长盛不衰的原因,但是XFree86却不具备现在大多数流行的图形化操作系统所必需的桌面管理和提供快速开发接口的功能。开发XFree86下的应用程序,很多细节完全需要由开发者自己来完成,这造成了在GNU/Linux平台下应用软件的缺乏。所以在XFree86上的应用一直局限于某些专业领域,自由软件世界的开发者们看到了这些不足,在发展过程中,KDE/GNOME(the K Desktop Environment /GNU,s Network Object Model Environment,K桌面环境/GNU网络对象模型环境)就应运而生。
基于应用的桌面环境
我们在各个时期的GNU/Linux发行版本中可以看到,从GNU/Linux上发展起来的KDE/GNOME和其前辈CDE一样,都能够在X窗口系统下提供良好的开发接口和友好的图形用户界面(不同的是,KDE的底层调用的是商业化的QT,而GNOME是完全开放的GLIB;KDE比较注重界面的华丽,GNOME则比较实用),这不但能够给Linux用户提供一个完整的图形界面,同时还给软件开发提供了一条捷径。事实上针对KDE/GNOME也已涌现出越来越多的应用程序。
随着时间的推移,开发者们越来越意识到图形界面的重要性,他们在开发过程中融入了很多其他图形化操作系统的优点,包括Windows的统一资源管理和一致的用户界面、Mac OS易用的菜单条等。这已经在新版本的GNOME 2/KDE3里体现出来了(图2),我们从中可以看到,除了与早期的软件保持兼容以外,包括打印、图形支持和集中式资源管理都已经初具雏形。而在笔者试用的过程中,新版本不管是易用性还是外观,各方面比起以前的版本都有了非常大的提高。这意味着我们不久就可以看到一些应用界面非常接近现在流行的图形化操作系统的全新GNU/Linux桌面操作系统。
另外,现在有一些像Sun公司这样的大厂商介入到GNU/Linux下应用程序的开发中,而且不断地有各种基于Linux的应用软件计划在启动,这会使用户最常使用到的字处理、多媒体播放、实时通信和网络浏览器等软件越来越丰富,功能越来越完善(图3)。
GNU/Linux标准化的道路
最近,几家比较大的厂商扛着建立GNU/Linux标准的旗号,想联合其他相关厂商成立联盟,以让GNU/Linux走向标准化,从而推动这个行业的发展。那么,标准化的意义何在?
标准化固然有不少很好的地方:可以让开发者更好地去适应平台,并让更多的软件厂商加入这个阵营,更好地发掘GNU/Linux的价值,毕竟GNU/Linux的很多推广工作是由这些厂商来做的。但是从目前的情况看来,这些举动更多地是想保护各个厂商自己的利益,对自由软件世界不能带来多大的影响。首先,在刚开始建立标准的时候就出现了两大阵营,这样会不会造成恶性竞争?其次,在自由软件世界里面,很多开放的、没有标准化的约定都得到大多数开发者的遵守,这也是GNU/Linux能发展到今天的一个最重要的条件; 另外,虽然Red Hat是很多自由软件开发计划的支持者,但是大多数开发者对这些所谓的标准阵营没有任何的响应。甚至在他们的网站上找不到任何的相关消息,这也意味着他们不关心这些举动带来的影响。因为GNU/Linux毕竟是一个很特殊的领域。为什么这样说呢?因为开放和自由对于自由软件世界的拥护者来说,Linux并不是惟一的目标,他们眼中的开放更多的是指开放的系统平台,也就是说各种不同平台间的软件能在源代码这一层做到兼容。这样可以经常最大程度地避免在编写代码过程中的重复劳动。很多自由软件在这些方面都做得非常好,包括GNOME/KDE,它们除了能在Linux下工作以外,还可以在现存的绝大多数操作系统下运行,甚至包括Windows。
今后的主要任务
要想把GNU/Linux桌面化,软件厂商就要去协调硬件厂商,通过合作开发让更多的设备能够在GNU/Linux下工作,并且提供很好的系统管理工具,消除用户对GNU/Linux“难用”的看法。如果能够联合一些国内外的独立软件开发商,发展基于GNU/Linux的应用软件,就能完全体现出GNU/Linux的价值,让更多的用户接受GNU/Linux。
在国内,虽然有很多厂商推出所谓的工作站/桌面版本,充其量也就是削减了服务软件,在易用性方面和Windows相比还是远远不够。也许国内的厂商并没有意识到这一点,在其桌面Linux发行版中主要是做了中文化方面的工作,其他方面还需要相当多的努力。如果国内的Linux厂商迅速地掌握好时机,推出能够胜任桌面工作的GNU/Linux发行版本,就会慢慢让GNU/Linux在国内的桌面化应用进入一个实质阶段。
关于GNU/Linux
GNU是在1984年由Richard M. Stallman发起的自由软件计划,旨在开发一个自由的类Unix平台。GNU是Gnu Not Unix 递归的缩写,意指以Unix为基础,但又不是Unix。在GNU的核心Hurd的开发过程中,Linux核心和GNU的工具合并,成为一个完整的操作系统,而且所有的开发完全基于GNU的开发环境,被合称为GNU/Linux。