分类: LINUX
2008-05-06 22:48:48
作者:◇ 北京工业大学 李鑫 来源:开放系统世界 | |
| |
凡是使用过Linux桌面的人都记得那只“小脚丫”——GNOME(如图1)。伴随着Linux桌面的发展,GNOME也开始逐渐成为人们熟悉的一套桌面环境。“gnome”的英文原意是“土地神”,而作为开放源代码项目的GNOME则表示“GNU网络对象模块环境”。对于普通的Linux用户来说,它更多的则是一种很好用的桌面系统。 项目起源 1997年8月Miguel(如图2)开始启动GNOME项目的时候,他也许未曾想到这个项目日后会成为各种类Unix平台上的主流桌面系统。开始时,Miguel只是把GNOME宣言的草稿发给了自己的一些朋友,其中包括Richard Stallman、Marc Ewing、Elliot Lee、Erik Troan、Spencer Kimball和Peter Mathis,并在其后与Federico一同在GNU和Linux的邮件列表中发表了这份宣言。 随着GNOME的逐步完善,邮件列表中的一些人逐步成为了GNOME早期的撰写人员。GNOME选择了COBRA作为底层的组件架构,并采用DocBook作为标准的文档格式。在解决了授权问题之后,GNOME的发起人们注册了gnome.org这个域名,并开始提供CVS服务。 形势发展喜人。最初,Federico和Miguel只是用业余的闲暇时间来编写GNOME库。但3个月以后,也就是1997年11月,GNOME项目已经发展到相当的规模。两个主要的发起者—来自墨西哥的Miguel和Federico(如图3),开始全身心地投入到GNOME的开发中来。 GNOME成长史 “十月版”奠定好声誉
图1 GNOME标志 早期的GNOME开发者通常聚集在IRC的#gimp进行讨论。由于参与讨论人数越来越多,管理员不得不从中分割出一个新的频道(channel)#gnome。Jacob Berkman加入了GNOME的开发,并开始修正即将发布的GNOME 1.0中的应用程序以及部分核心代码的问题。对于GNOME的卓越贡献使得Jacob逐渐取代Miguel成为这些代码的维护者。 GNOME 1.0发布之前经历了相当长的代码冻结阶段(发行前的必经阶段)。冻结从1998年11月开始,一直持续到1999年3月的正式发布。这个版本是许多人共同努力的成果,也包括许多“赶工”的成分。Red Hat希望能够在系统中包括尽可能多的先进桌面特性;而另一方面,新特性的引入也肯定造成工期延迟。
图2 项目发起人之一 Miguel de Icaza 1999年3月,在圣何塞的Linux World展上,GNOME 1.0终于正式亮相。这一版本也标志着GNOME 1.0 API的冻结。最初的1.0版本存在不少Bug,但之后的Linux发行版中的版本逐渐修正了这些问题。 此时GNOME已经十分庞大,编译并保持代码最新变成一件困难的事情。由此引发的连带问题是,仓促上阵的GNOME 1.0和1.0a没有经过足够的测试,因而不稳定。这严重地影响了GNOME的声誉。 Red Hat公司从其5.0版本开始,将GNOME作为发行版本的一部分。他们使用了GNOME 1.0系列的一些修正版本,然而这些版本依然很不稳定。与此同时,KDE也作为Red Hat的一部分发布了。 GNOME 1.0系列最为稳定的版本是GNOME 1.0.55。这个版本的主要目标就是稳定,其措施是修正所有报告的问题而不增加新的功能。为了避免在版本号上与KDE进行“恶性竞争”,1.0.55或称“十月GNOME(发布时间为1999年10月)”,最终成为这个GNOME的版本名。由于卓越的稳定性,GNOME GNOME 1.0.55开始被许多Linux发行商收录。这也成为GNOME的一次转机。 尽管没有更改次版本号,但这个版本仍被视作一个重要的发布版本。十月GNOME的影响十分广泛,并且由于极大地改善了名声不好的GNOME 1.0的稳定性,因此给许多用户留下了深刻印象。
图3 项目发起人之一Federico Mena 从“大羚羊”版开始崛起 Bongo是一种非洲大羚羊。GNOME 1.2本身和羚羊并没有什么关系,然而自从上次将GNOME 1.0.55命名为“十月GNOME”之后,人们开始担心这种叫法会很快用完十二个月份的名字从而造成混乱,于是大羚羊成为了GNOME 1.2版本的名字。 这个版本的GNOME主要关注界面的进一步细化,以及对功能的更新和改进。从2000年1月开始,作为GNOME 1.2发布联络人的Jacob,开始按照GNOME UI小组及许多其他开发人员提出的意见,对GNOME的界面进行了全面调整。现在我们看到的许多界面概念都是在那个时候形成的。 这之后GNOME 1.4的主要努力方向是更加稳定、界面更为精细和便于使用、更好的集成度,以及更强大的功能。 对于商业软件和自由软件而言,发布过程都不是一件轻松的事情。GNOME的版本上升并不很快,以至于当它跃升到1.4的时候,已经开始流传关于GNOME永远不会发表一个X.0版本的笑话。由于GNOME自由软件的特质,它能够获得更多的反馈。新开发的故障报告系统使得GNOME开发组能够集中精力修正问题,而且,此时它已经相当的稳定,因此升级已经不再成为问题。 “大羚羊GNOME”是一个影响力空前的版本。在我国,相当多的人都是从这个版本开始接触GNOME的。 2.x系列绽放光芒 GNOME 2开发周期很长,最新的2.2系列是最近才推出的。之所以使用一个X.0版本命名,是因为它包含的许多重大改进已经远远地超越了GNOME 1.x。很明显,GNOME 1.x→2.x并不是一个类似Windows 98→Me的升级。向下兼容和众多耀眼的新功能,以及性能的极大改善让人们升级GNOME的愿望更加强烈。 由于完全使用Unicode,GNOME 2系列能够更好地适应国际化的需要;而统一的配置程序则极大地提高了系统的可用性。值得一提的是,GNOME现在引入了许多Windows系统中的优秀界面设计,如最新开发的文件菜单等(如图4)。GNOME对于界面还有很多独到的创新,相关信息可以在GNOME用户界面开发组的网站(http://developer.gnome.org/projects/gup)上找到。这两个版本是大家比较熟悉的。
图4 GNOME最新菜单设计 背后的功臣 与其它大型开源项目一样,GNOME的成功也是背后无数的开发者共同努力的结果。全球各地至少有300人对GNOME的中央代码库拥有CVS commit权,而其中活跃地进行着开发工作的至少有80人。这其中,不仅有Miguel和Federico这样的重量级人物,许多擅长管理其它方面的开发者也对GNOME的发展起到了至关重要的作用。
图5 质量监控师 Jamin Gray 质量监控师Jamin Gray和Jacob Berkman 早期版本(1.0.x)中,“新生”的GNOME曾经存在严重的不稳定问题。这些问题极大地伤害了GNOME的声誉,因为对许多用户来说,稳定性要比那些新功能更为重要。 Jamin Gray(如图5)目前仍然是发布工程组的重要成员。他曾在一次访谈中提到,用户与开发团队之间的联系,特别是在发布工程过程中的联系尤为关键。熟悉软件开发的读者可能会知道,在软件最终发布之前会有一段时间的代码冻结,而在代码冻结开始后的发布工程(Release Engineering)对于发行版本的品质是非常重要的。 十月GNOME发布之后不久,当时的发布工程师Jacob Berkman开始撰写一套叫做Bug Buddy的故障报告程序。由于故障报告系统的改善,GNOME后来的维护变得更加容易。 目前,GNOME采用的开发模式有一个发布工程组负责最后的发布工程。而Jamin Gray目前仍然是发布工程组的核心人物。 画家Tuomas Kuosmanen (网名Tigert) 在#gimp足够拥挤之前,GNOME的开发者经常聚集到#gimp频道做IRC讨论。Tuomas Kuosmanen (网名Tigert)是在#gimp中的传奇人物之一。他设计了相当多GIMP图标,其中也包括GIMP的吉祥物(Wilber)。GNOME使用了很多由他设计的图标,而Tuomas也为许多GNOME应用程序绘制了标志。正如大家所见,这些图标都相当精致,为桌面增添了光彩。 Windows 95刚推出时,其开始菜单的设计给人们留下很深印象。GNOME也在寻找自己的面板图腾。开发组最终选定了Tuomas网站上一个没有指定给其它应用程序的图标——方框中渐变填充的一只脚。这只脚的图标使用了很长时间。 然而,这只脚也带来了一些问题。DrMike和Rasterman开始担心,由于GNOME使用的这个标志和某个注册商标非常相像,可能会带来潜在的麻烦。Red Hat实验室于是决定赞助一个为期数月的竞标活动。活动得到了相当多的GIMP玩家的支持,GNOME开发组收到了不少上乘佳作。遗憾的是,由于活动要求使用GIMP完成作品,因此开发组未能从这次竞赛中得到矢量图作品。 最后,GNOME开发组还是决定选用Tuomas的作品,仍然是一只脚。不过,这次的图案设计有了很大的变化:这只脚的形状更像一个字母G(它代表了一只左脚,而原先的则是右脚)。这个标志就是现在为我们所熟悉的GNOME图标。 几个关键点 GNOME一直致力于提供一个开放源代码的桌面系统实现。由于KDE所依赖的Qt库在当时没有提供符合FSF的“自由软件授权规则”标准的授权,因而KDE在当时并不是严格意义上的自由软件。 由于需要使用GPL授权,或者至少符合自由软件要求的代码,在最初阶段,许多东西都需要GNOME的开发人员自行编写。现在我们所使用的GNOME采用了很好的组件化设计。这个CORBA的轻量级实现就是GNOME成员的工作成果。 开始,GNOME工作组考察了Xerox的ILU,然而它的授权不是免费的;MICO看起来不错,不过它对于绝大多数人来说太过庞大,而且太慢。最后,Flick的优化编译器被选中来进行改良,并实现了对轻量级CORBA的支持。 在GNOME 1.4中加入的Bonobo 1.0组件架构是Miguel完成的另一项重要工作。ActiveX/COM模型对于Bonobo的影响很深,而后者是建构于CORBA之上的。 未来发展方向 未来Linux系统的桌面将如何发展呢?也许我们还不能得到一个确定的答案。但GNOME以用户为中心的设计,至少可以让它成为一个富于竞争力的桌面系统。 与Linux内核一样,GNOME也使用奇数版本号标记最新版本,而偶数版本号表示稳定版本。最新的2.2版本推出之后,GNOME又开始了新一轮的开发活动。 这个新版本(目前被称作GNOME 2.3)的新功能还没有被最终确定。但笔者认为,以下功能比较值得期待: ◆ 本地化 GNOME内核已经完全Unicode化了,但本地化工作仍然在积极进行中。 ◆ IPv6支持 尽管GNOME并不妨碍我们使用IPv6,但gnome-vfs的目前版本并不使用IPv6。 ◆ 界面的改进 未来,GNOME还将引入全新的消息技术(D-BUS),D-BUS是一项类似硬件中总线的技术,能够实现面对整个系统中所有应用程序的消息广播。这一特性对于桌面应用来说将是非常实用的。 |