为Linux打造图形世界——GNOME内幕揭秘 邢国良(编译) 1999年 第46期 09版 微软不会想到,一个小小的正在攻读大学学位的系统管理员,会挑战其引以为豪的图形操作系统技术。米古·德·伊科泽(Miguel de Icaza ),26岁,正在墨西哥城攻读数学专业,正是在他的领导下,分布于各地的250名程序员经过14个月的开发,推出了Linux下的图形用户界面——GNOME 1.0。GNOME是GNU项目的一部分,它并不是为精通计算机的黑客和程序员而开发的,它的目标是让每一个普通用户方便地使用Linux。GNOME已得到了占Linux市场份额最大发行商Red Hat的支持,现在GNOME下已有大量应用软件,包括文字处理软件Go,电子表格软件Gnumeric,日历程序GNOMEcal,堪与PhotoShop媲美的图形图像处理软件Gimp等,而这些优秀软件几乎都是免费的。可以预见,GNOME的推出必将对Linux走向主流桌面应用起到推波助澜的作用。   下面是FEED杂志对GNOME开发小组领导者米古·德·伊科泽(下简称ICAZA)的独家访谈录。(^460901a^) #1GNOME的开始   FEED:GNOME项目是怎么开始的? ICAZA:原来有一个项目,是为桌面应用开发自由软件平台,而长期以来,自由软件者一直忽视了这方面的工作。开发的第一个平台称为KDE,但是当时KDE存在许可协议问题,由于使用了非开放代码,它违反了GNU为自由软件制定的的通用软件许可协议GPL,因此KDE的基础并不可靠。   当时是1997年8月,自由软件者已为KDE工作了七个月,完成了一个相当不错的桌面程序,但他们遇到许多困难,其中之一就是许可协议问题,非常棘手。另一个问题是KDE基于单一的编程语言——C++,程序员被迫采用唯一的语言为其开发应用程序。所以我们开始了一个新项目,完全从头开始,因此没有许可协议问题。我们采用了一个非常优秀的工具包,加速了开发进度。我们的目标是实现一个语言独立的桌面平台,最后,我们成功了。   GNOME支持十二种编程语言,如C、C++、Scheme、Lisp、ObjectiveC、Pascal等,我们想使GNOME成为非常容易编程的系统,程序员不必都采用面向对象的语言,一般说来这样的语言非常复杂。程序员也不用为开发不同的应用程序而学习不同的技巧。我们想把应用程序的开发工作变成小事一桩,从而可以极大地丰富GNU的应用软件。   FEED:照你说来,如果我读GNOME的源代码,是否会看到十二种语言写成的的代码?   ICAZA:实际上,GNOME的代码大部分是由C或C++写的,所有的参加项目的程序员都偏好这两种语言,我们也支持其他语言。   FEED:按你的想法,生活在美国的一个妇女可以从RedHat买Linux操作系统,安装在她的家用电脑里,然后在上面运行GNOME?   ICAZA:正是这样。 #1观念的转变   FEED:困难之处在于你怎样可以说服普通用户转向GNU的世界——GNU这个名称一般用户听起来是这样古怪? ICAZA:我想这是市场推广人员考虑的问题。 FEED:你手下有市场人员吗? ICAZA:没有,我想发布Linux的人会做这些工作。我看到开放系统有许多卖点,比如说人们可以根据喜好随意修改软件,另外可以自由修正软件BUG,这在专有系统中是不可能的。 FEED:不是程序员的人可以修改GNOME么? ICAZA:不可以。同样,你不能亲自去修房间里破的水管,但你可以雇人去修水管。所以,你可以雇程序员修改软件。过去的一个月,我一直在为Gnumeric(GNOME下的电子制表软件)提供收费技术支持,我为需要的人提供维护或增加软件功能服务,他们可以打电话给我。 FEED:你对哪些服务收费? ICAZA:看情况而定,如果软件的BUG影响到所有用户,我将免费服务,但如果只是涉及软件某一特性,我会按项目收费。 FEED:你将微软视为你的敌人吗?或是你认为是否有一种理想情况,人们为需要的软件付费,而软件没有BUG? ICAZA:即使你为一个软件花很多钱,并不意味没有BUG,微软就是一个很好的例子。BUG总是无处不在。我并不认为微软是我的敌人,软件非常容易制作,而微软的产品价格超出本身价值。100美元对一个操作系统来说太多了。 #1开发的工作   FEED:有多少程序员参加了GNOME核心代码的编写工作? ICAZA:很难说,我可以告诉你有多少人拥有CVS的写权限。CVS是一个可以使我们以小组方式协同工作的系统——它是源代码的中心库,基本上每个人拥有一个源代码库的拷贝,每人把修改的代码发回中心库。CVS代表“一致版本系统”。   现在共有256人有CVS写权限,包括有直接写权限者和把代码发送给可信任的维护者(他们起着代码过滤的作用)的人。 FEED:你怎么吸引优秀的程序员为GNOME工作? ICAZA:这是一个有趣的问题,在KDE出现以前,我们认为UNIX缺少很多框架特性,其中之一是部件编程——其关键是我们可以提供可用来编写字处理器的部件,程序员可以扩展并加入应用程序中。整个GNOME桌面是由部件构成的,它并不是一个密不可分的庞大的应用程序。 FEED:这是否意味着我可以由一个简单的字处理器,一个可嵌入的拼写检查模块和一个使界面更漂亮的设计模块组成我的软件? ICAZA:是的,我们很看重设计模块,它是一个GUI(图形用户界面)设计器,现在它已能工作,但还未最后完成。我们有一个和PhotoShop类似的程序,称为Gimp(GNU图形处理程序的缩写)。至于你问的如何使人们为此工作,实际上,Gimp吸引了全世界的广泛注意力,因为它是一个编写非常优秀的软件——非常简洁,设计巧妙,可与PhotoShop媲美。   GNOME的最初声明出现在Gimp的邮件列表中,然后出现在GNU和KDE邮件列表中,以招募开发者。看来这一招非常有效,我们从这个列表中得到了许多对图形开发非常有经验的人,也招到了许多语言设计人才,我们努力尽早发布GNOME的雏形,以展示我们的进展。没花几个月我们就已开始把小的模块集成在一起。(^460901b^) #1打开一个新世界   FEED:GNOME和其他窗口管理器,比如说Enlightenment或FVWM等改变了UNIX系统桌面外观和操作的程序有什么不同? ICAZA:这儿有一个重要的区别,一方面GNOME是一个开发应用程序的框架,同时我们提供了大量的应用程序——如日历、电子表格、图形程序。我们正在提供并使用这些工具,这就是在GNOME1.0中将看到的。Enlightenment和FVWM仅仅是窗口管理器,它仅能帮你管理桌面和移动窗口而已,而GNOME走得更远。只拥有这些装饰性的功能还不够,我们缺少应用软件——这也是自由软件系统所缺少的。 FEED:也就是说,GNOME提供了到目前为止的自由系统所缺少的应用程序? ICAZA:如果你运行GNU系统,所有你看到的只是XWindow系统(一种带“窗口”的UNIX系统的图形接口),你得到一个带终端的窗口,你必须真正了解UNIX才能使用GNU-Linux系统。有了GNOME,用户不需知道关于终端和计算机的任何知识。这才称得上是面向普通用户——家庭用户或是儿童和文秘工作者,他们并不是程序员,而UNIX是面向程序员的系统。   我并不认为GNOME1.0已万事俱备。认真说来,我并不认为它是你所看到的最漂亮的用户界面,但这是自由软件,我们可以修改源代码,并根据用户的反馈不断提高系统质量。 FEED:你认为在自由软件中存在一种什么精神? ICAZA:人们因为各种各样的原因来做自由软件,并共同推动社会发展,我不认为专有软件很好地起到了这种作用。可能是因为我的数学背景,我把软件开发看作是科学研究,我不认为人们可以剥夺别人拥有他们的知识的权利,并标价出售这些知识。软件应像知识那样被人类共享。 #1GNOME GNU GNOME计划是在 1997年8月首次宣布, 之后经过大约一年的开发, 在整个世界范围内估计有二百名程序员参与了这个计划的开发工作。   GNOME是GNU 网络对象模型环境( GNU's Network Object Model Environment ) 的缩写, GNOME 提出了一系列 UNIX 世界中没有的观点:   提供一个统一的用户界面; 提供用户友好的工具, 以 UNIX 为基础, 更强有力; 产生一个组件编程和组件重用的标准; 提供一个统一的打印机制。 GNOME 的主要目标是提供一组用户友好的应用和一个易于使用的桌面环境。 同大多数 GNU 的应用一样,GNOME 设计成可以在几乎全部的类UNIX 操作系统中运行。