lichuang-112 发表于 2004-9-10 13:46:32

GNOME项目的历史--miguel回忆录

目录

   1. 早期的日子
   2. GNOME工程的基础
   3. GNOME诞生
   4. GNOME峰会
   5. #gimp
   6. GNOME标志
   7. GnomeCal
   8. Gnumeric和Canvas
   9. Federico加入Red Hat实验室。
10. QPL
11. 0.99代码冻结
12. GNOME 1.0
13. 十月GNOME (1.0.55)
14. GNOME早期产业
15. GUADEC(GNOME用户和开发者欧洲会议)
16. Bongo GNOME (1.2)
17. GNOME基金会
18. Sun创建GNOME亲和实验室
19. GNOME 1.4
20.

一个关于gnome工程经历事件的不完整的回忆录。也许有一天我会写完它。

早期的日子

GNOME源于一个想改进自由软件的朋友的团队所做的各种尝试,我在这里列出了一些最终导致GNOME工程诞生的设想和计划。 你也可以从Story of Ximian找到相关信息。

GNOME工程的基础

1996年我的朋友Elliot Lee 在Red Hat作为网络管理员工作了一个夏季。我们交换了许多共同感兴趣的与自由软件未来密切相关的看法,彼此都为自由软件的进步贡献了各自不同的成果。在Windows 95传入以后,自由软件世界缺乏一种与之抗衡的技术,我们在对应领域明显滞后了。我为Java Awt的自由软件替代品出一点力(在过去的那些日子,JAVA被寄予厚望,去解决UNIX系统的软件缺乏问题)。

当时我和Ralf Baechle一起将Linux移植到SGI平台的工作,它得到SGI的一部分投资。有时我会花几个小时在其他的自由软件尝试上,这将有助于缩小私有程序与linux之间的差距。我的在SGI的朋友Ariel Faigon提到过自由软件的未来,以及缺乏桌面应用,和OLE模型的问题。

Elliot和我设法组织各种成果去解决linux界面一致性问题。我们的首次尝试是libapp,是一个函数库,用来访问公共资源(设备管理、保留文档最近访问记录、模拟操作以及其他)。但我们从未真正完成这个项目。此时,产生一个象GNOME这样完整系统的主意从问题中浮现出来,我们首先瞄准了简单的任务。

一年前在亚特兰大Linux博览会我遇见了Todd,他对基于Scheme(一种GNU程序语言,类似lisp)的一个完整的桌面系统非常感兴趣。这个项目只延续了一些屏幕截图,我们没能走得更远。

1996年我从UNAM(墨西哥国立自治大学)的Facultad de Ciencias学院最新成立的计算机科学系招募了两个学生。这两个学生就是Arturo Espinosa和Federico Mena。他们在自由软件混合项目上工作,在项目周边我最喜欢的语言在于time Scheme(一种Scheme开发工具)。他们和我一起用自由软件工作,并从事Universidad Nacional Autonoma de Mexico(墨西哥国立自治大学)Instituto de Ciencias Nucleares学院的令人愉快的项目。在那里我们还参与Mexican Linux Users Group(墨西哥人linux用户组)的工作。

在1997年夏天,我的朋友Randy Chapman邀请我去微软面试,在SPARC平台上的Solaris系统开发IE浏览器(由于我曾做过Linux到SPARC的移植工作背景)。那个夏天我去微软面试,并生平第一次见到了Randy Chapman和Nat Friedman 。我们已经通过linuxNet IRC网络相识很久了。

在微软,我学习了ActiveX和COM的原理,我立刻对它产生了浓厚的兴趣。当我返回墨西哥,Federico和我开始为unix设计一种GUI控制的底层架构,我们称之为“GNOME”。他回来后作为 GIMP 的维护者工作,我们的努力目标是在当时能采用TK。这个项目是导致后来变成Bonobo架构体系的萌芽(十六个月后我才开始着手做Bonobo)。

此时Kool Desktop Environment project(K桌面环境项目)展示了许多承诺:一个程序员团队开始了一个尝试,用C++基本GUI工具箱为unix带来一个桌面。我写信给我的朋友Erik Troan建议他把那个代码加到Red Hat发行版中,我还写信给Richard Stallman让他知道这个有趣的项目的存在。 KDE 是按 GPL 许可证条款发布的。我分别从Erik和Richard那里得到回信,他们都指出KDE依赖于Qt这一块非自由软件的成果。Qt不允许最终用户修改、重发布和发布修改后的代码,因此违反GPL。

作为一个自由软件狂热者,我联系到Troll科技——Qt的作者,我建议Qt修改许可证方案,使他们既可以继续开公司,同时又授给用户以上权力。但是没有得到回信。当时Troll科技FAQ也包含了关于GPL和忽略双重-许可(dual-licensing)计划的重大错误。 在中断联系之后,我们决定为这个问题做点事。同样令人生气的是事实上KDE开发人员对解析他们FAQ文档以及邮件列表中凸现的问题不感兴趣。

我们评估了做个Qt自由替代品的方案,然而重新实现的效率很低,且要花很久。GNUstep、Wine和LessTif是其他已经尝试重执行一个私有API的项目,而在长期的开发历史之后也仅取得有限的成就。

各种来自LinuxNet网络#linux频道的朋友也是项目的发起的负责任的一部分。

GNOME诞生

更新:我们在GNUstep项目上尝试工作了几天。Francisco Bustamente (bit), Federico 和我将用我们所能得到的所有的东西来工作,但是它太庞大、太慢、太多BUG、太不完善,团队几乎没有组织可言。在反复地基于它来工作的尝试之后,我们终于决定放弃。

于是我们在1997年八月的某一天开始了GNOME项目。公告的草案已经散发给我的各式各样的朋友,也包括Richard Stallman、Marc Ewing、Elliot Lee、Erik Troan、Spencer Kimball以及Peter Mathis。当项目准备完毕,Federico和我向一些邮件列表发布了GNOME项目正式成立的公告:GIMP邮件列表、Guile邮件列表、GNU项目公告邮件列表和comp.os.linux.announce。

Federico和我在我们休闲的时间开始开发GNOME库。他通常更多地在GIMP上工作,而我则更多地工作在X11 IRIX emulation code for Linux on the SGI/Indy. 我们设置了makefile以模拟Gtk+设置。

来自邮件列表中人们的贡献有了一个永久的结果:CORBA已经成为我们组成体系的基础,而DocBook将为GNOME文档的写作所使用。最初,我们找到施乐的ILU(注解:内码统一系统:Inter-Language Unification System,符合 CORBA 设计的一个免费 ORB, 它为不同操作平台上的各种语言提供分散式的物象连结),但它的许可证书不是自由的,所以我们不得不搜寻其他选择:我们尝试了MICO一段时间,但它太庞大,对于大多数的开发者和用户来讲又太迟钝。然后我们找到了Flick的优化编译器,终于Dick和Elliot在它上面开始了工作。

这里指出我们的一个朋友注册了gnome.org并为GNOME提供了CVS服务器。 那年的十一月,GNOME已经产生足够的动力促使Federico和我中断了与其他项目的联系,全身心地投入到我们自己地GNOME工作中来。我们用开发GtkXmHTML 引擎度过了十二月份的假期,而我开始阅读Slashdot。

我们在十二月上旬与Marc Ewing和DrMike在Red Hat公司会了面。为了这次会面,我不得不放弃U2乐队在墨西哥城的巡回演唱会。我记得,那是通过卫星电视实况转播的,但Erik把我拉去跳舞。

Marc创建了红帽子高级开发实验室,这是世界上第一个针对改进GNOME的由开发人员创建的小组。RHAD Labs创建于1998年一月。Marc和DrMike从事于GNOME帮助浏览器;Raster从事于Gdk_Imlib,Enlightenment以及Gtk+主题引擎。那年晚些时候,Owen、Jonathan、Dave和Federico也加入进来。

GNOME峰会

GNOME 0.13, 0.20和0.30已经发布,而且我们在Duke大学主办的Linux世界博览会上做了演示。这也是我第一次介绍GNOME项目(不管我的笔记本在筹备的时候发生多少问题,那次演示是成功的)。

这个也是我自从在微软遇见Nat Friedman之后第一次看见他,那真是非常有趣。他从事于一个为各种终端程序做更多扩展的小玩意上。那玩意最终将让它加入GNOME终端,并证明是每个自封为终端竞争对手的东西所必须具备的。

Marc Ewing和Michael Fullbright组织GNOME高层:在GNOME开发者们都能够到达的地方首次聚会。这是在第三届linux世界博览会之后的几天在Duke大学组织的。各地的GNOME黑客参加了会议,不同的我们聚集在一起探讨项目将可能接受的不同的发展方向。

出席的各地黑客包括:Chris Lahey、Larry Ewing、Adrian Likins、Raster、Tim Gerla、Jonathan Bladford、Rosanna Yuen、Matthew Wilson、Federico Mena、Marc Ewing、Michael Fullbright、Mark Chricton、Jay Painter、Alan Cox。特别值得注意的露面包括David Miller (他到那里得到了一件GNOME衬衫)和Telsa Gwynne (他后来成为文档努力相关的人员)。Elliot Lee在那天晚些时候到达。

除了 Jay,其他人至今仍参与 GNOME 开发。

#gimp

各种与GIMP和Gtk+有关的黑客通常徘徊在irc.mint.net的#gimp频道。许多非常天才的人曾经经过这个频道并对各种问题提供他们的输入和帮助。许多来过#gimp的人会成为GNOME的贡献者。#gimp 也是一个讨论GNOME的好论坛, 它并不过分地吸引那些原本对项目的成就不太感兴趣的人把注意力引到项目上来。

它保持在那个方向,直到#gimp频道里的大多数的讨论已经涉及到GNOME,在那个时候,Zach创建了一个新的#gnome频道,GNOME的大部分讨论也就转移到了新的频道中。

GNOME标志

Tuomas Kuosmanen (Tigert)是我的一个曾经去过#gimp的朋友。Tuomas自己成为一个GIMP用户做了各种标志,针对GIMP吉祥物(Wilber)他也做了一些小图标,看上去非常漂亮的。我们开始在GNOME里使用Tuomas的图标,他为我们不同的GNOME应用软件画了些图标,也画了一些固定的图标(我想出的主意,Eckehard做的,给应用程序增加一致性的外观)

当我们为GNOME面板寻找一个图标时,我们去了Tuomas的网站,我们精选了一个他绘制的还没有任何联想的图标——一个方块中充满气的倾斜的脚掌。这是一个很长时间被用于菜单图标的脚掌。

脚掌生产成了问题,比如有人看见过一个类似的标志样子,DrMike和Rasterman都担心可能会引发问题,因为我们的GNOME大脚看上去和www.bigfoot.com的标志类似。

Red Hat实验室决定在几个月后主办一次为GNOME而设的竞赛,奖品是一台数字图形输入板。标志比赛有一个限制:它是由GIMP人群发起的,因此一个必要条件是制作标志必须用GIMP。这意味着我们不能得到其他的为项目做的vector-based标志。有许多好的建议,它们当中有许多都非常棒。

我们选择了一个Tuomas自己设计的新版本的大脚掌。最大的不同在于新的脚掌看上去包含一个“G”(另一只是只右脚,这只是左脚,G型)。 标志相当漂亮,我们直到今天还在使用它。

GnomeCal

Craig Small已经在GNOME的日历应用程序上工作,但是他时间有限,不允许他继续这项工作。于是他给出了一个GNOME开发复杂性的称述,没有在发展这个程序中做出更多的贡献。我准备去提华纳(墨西哥北部城市)为北方一个叫Telnor的电话公司提供Solaris咨询服务。在Telnor我看见一个新版的CDE(在大学的机器中,我们没有用到任何新版的Solaris,我们没有足够的硬盘空间来运行CDE),而这上面有一个非常漂亮的日历软件。

当我回来以后,我建议Federico在10天内写一个日历软件(因为Federico从来不透露他会在周末去墨西哥国立大学的ICN从事GNOME工作;-)。第一天我们盯着OpenWindows日历,那天我们阅读了所有实现日历所必须的相关的标准文档,并开始开发。十天后,我们到了最终期限,我们实现了GnomeCal(Arturo在最后的两天中帮助我们实现日历中的年份的浏览)。这个日历软件有一个非常优美漂亮的内在结构,看上去比从那里出来的任何其他东西都要好看。用户界面也是那么漂亮足以在GNOME早期的那些日子里担此大任。它甚至可以和那些私有的小型日历软件的特色媲美。在当时,我们对Outlook一无所知。

当时,实现一个日历服务器支持看上去像是个好主意,但我们没有时间去做。现在,奇怪的是居然没有一个人去实现一篇以后可能会用上的不那么体面的说明。甚至在今天,CAP控制未被广泛实现。如今有了一个叫做CRISP的CAP简化版本的新尝试。

几年后,我们重新回到日历的开发上。这一次,它将被整合到Evolution群件组,并成为Helix Code商业代码的一部分。

Gnumeric和Canvas

当开发应用程序时,我开始变得很失败。我保持在Tk漂亮的Canvas窗口部件这点上,就像一个非常容易改良的代码的诚实优秀的例子。我们花了无数个小时在撰写回调驱动上,撰写事件驱动,一遍又一遍地重写代码,一遍又一遍地让它布满BUG。我深信Federico深入到了Tk canvas里面。我感觉十分无力,因为我仍然对X的概念非常模糊,要被它击倒了。

Federico花了几天时间学习Tk canvas,然后他又花了几天时间把他学的讲给我听。他做了一个个Tk canvas的执行,他运行了好几个月(对Usenix大会非常及时,我记得整个早餐时间向Marc展示代码,他对开发的状态有增加了一些焦虑。)。

那年Linux大会在德国举行。Marius Volmer提出了一堆关于canvas实现的问题:为描述语言包装canvas不太容易,实际上是非常困难。当我从大会回到墨西哥,我们讨论了Canvas必须要改进的方面。

新的Canvas设计是非常清晰的,它完全地基于GtkObjects和使用GtkArgs而不是像我以前说的那种本地系统(那些是缺损的,非常破旧)。

在这个时候,我开始设计并实现Gnumeric电子表格。Gnumeric成为实现我们自己的canvas条款的第一个应用软件,它也是重点测试canvas的第一个软件。应Gnumeric的要求,我们针对Canvas做了改变和改进。

Federico加入Red Hat实验室。

Federico花了一年时间从大学毕业,而后移居北卡罗莱纳到红帽子实验室从事GNOME工作。他在红帽子实验室的第一个任务是改进GNOMECal日历(GnomeCal)。 本来打算让他在日历软件上实现群件功能,但势在必行,最终期限和红帽子里的其他任务使Federico不能继续这份工作(顺便说句,这事是极端复杂的、提供坏标准的分类齐全的收藏。直到今天,要让一个独立的程序员接受仍然是件困难的事情,如果你希望按照标准的话)。

QPL

大概在1998年十一月,Troll科技宣布了他们的计划(纠正我:是十一月?)在新的许可证下发布Qt的未来版本(Qt2),将遵从开源定义。这个公告事实上有两个方面:它封杀了Harmony项目(这是个Qt API的自由克隆项目);削弱了对于人们为什么支持GNOME而不是等待新Qt库的思考。

   1. 99代码冻结

在1998年十一月我们开始为GNOME 1.0冻结代码。我们为了融合Raph Levien的反锯齿canvas工作,数次打破了冻结。有不同的兴趣混合在这里:一方面,红帽子需要一个桌面环境,另一方面,为了使之成为可能,各地的黑客们已经工作了很长的时间。把反锯齿canvas加入到GNOME的标准版将难以解释,这会稍微耽误发布。

GNOME 1.0

GNOME 1.0版是1999年三月发布的。它是在加利福尼亚州圣何塞举办linux世界博览会期间公布的。这个版本表明GNOME 1.0版API冻结。这个版本包含几个BUG。运行在linux发行版中的第一个GNOME版本就是由GNOME1.0衍生出来的,其包括超过普通1.0的改进。

GNOME变得难以构建和赶上时代潮流,这导致一些软件只在1.0版本中做点短暂的测试,而给GNOME 1.0一个不够稳定的坏印象。这个版本已经在面板中包含了一个非常基本的CORBA支持,一个不错的对象激活系统(不是最佳,但基本能用。GNOME 1.4中被OAF取代,2.0中被bonobo-activation取代,2.4中被libbonobo取代)。

我们修复了人们报告的BUG甚至可能的问题,然后我们不停地发布新包(一发现问题就发布修正Bug的包,这永远是个惯例)。红帽子在他们的5.0的操作系统上搭载了GNOME 1.0.xx版本, 这个版本包含一大堆的Bug修复,但是它仍然不很稳定。他们也在这个发行版中包含了KDE。

十月GNOME (1.0.55)

这个版本是Elliot Lee在红帽子整理的。这个版本的目的是修复所有陷入困境的人所报告的错误。但是这时,新的GNOME bug 跟踪系统已经使用了一段时间了,它帮助开发人员捕捉问题并在版本中修正。这个版本的GNOME相当稳定,任何人可以从各种linux发行版的卖主那里获得一份。

Elliot的工作是制作一个强大的对GNOME有利的发行版,于是这个版本就疯狂地开展了。十月GNOME 1999年十月。版本号1.0.55 与GNOME核心包以及二进制软件地主版本号相符。版本名字与数字遵循了这样一个事实,即我们视图避免与 KDE 项目的版本号竞争。因此,使用了1.0.55这个标记,“October GNOME”关键字用于指代这个版本。

GNOME早期产业

1999年十月,两个以GNOME为基础的公司在美国合并:Eazel和Helix Code。两家公司始终都是既经营GNOME的各个基础设施部分又经营GNOME桌面的各个组成部分。Eazel是由Andy Hertzfeld、Bart Decrem以及Mike Boich创立的。Helix Code是Nat Friedmand和我创立的。你可以阅读 Helix Code的历史 。

Eazel的主要中心是文件管理器和文件管理向导服务;Helix Code起运了一个叫做Helix GNOME的GNOME预包装版本,它的中心放在在Evolution中包含个人向导服务。

Bertrand在2000年第二季度成立了Henzai。他的公司聚焦于在PDA设备上的GNOME。

Gnumatic在2000年组建,从事金融软件业务,由Linas Veptas领导。Gnumatic生产GnuCash,一种Unix下的个人理财软件。

GUADEC(GNOME用户和开发者欧洲会议)

Mathieu Lacage在2000年三月在法国巴黎组织了GNOME用户和开发者欧洲会议 (GUADEC)。GUADEC 最初只是由Havoc、Federico和me一个为法国电信的学生精心策划小型研讨会。我和Mathieu讨论计划中的把GNOME用户和开发者欧洲会议变成一个大型GNOME会议的获得募捐的可能性。 在他同意时,我开始从美国和德国各地的自由软件公司筹集资金。Mathieu与公司和发起人一起在法国做着同样的事。到最后,我们为四十个核心GNOME开发人员来法国四天的行程设法筹集足够的资金。

GUADEC会议是成功的:它帮助世界各地的GNOME开发人员能够相互了解; 在会议中开发人员、投稿者、翻译人员的文档撰稿者之间高带宽通讯真正推动GNOME前进成为可能;一个项目的全景能够说明更多人更多的事物在这一刻实现同步。

有两个以GNOME为基础的公司Eazel和Helix Code在会议中表现了一番。我们最终失去了Elliot Lee,他没有走完全程。

这次会议是那年晚些时候Bongo GNOME版本成功的基础。

这封信发送给了世界各地的 GUADEC的发起人。

Bongo GNOME (1.2)

GNOME 1.2是主要的用户界面,升级和改进版。

在2000年一月Jacob Berkman开始在gnome核心中并入用户界面改进代号,这意味着来自GNOME UI小组和他、George以及其他各种黑客的各种主意加入到系统中。这个版本还包括memprof (mem buddy)为首次和将起到重要作用的用Glade GUI设计工具构建的应用程序,(当然也包括实现此目的的Glade和Glade库)。

在延迟了一个月之后,Bongo GNOME在2000年五月发布。这个版本原先假定命名为“四月GNOME”,后因延迟被迫被命名为“五月GNOME”。但是人们觉得在短短几年内我们就会用完月份数,在称呼某个版本与以前的版本时就会有点困难了。因此我们坚决地为Bongo GNOME版本和所有的被采用的包标识为1.2作为其版本号。

GNOME的这个版本也至少与他们年前运行的GNOME 1.0相兼容:每个应用程序都被重新编写,GNOME 1.0 API能够不加任何修改地运行在GNOME 1.2。Foobar菜单也出现在这个版本中,来自用户界面分组的输入可以在桌面的周围看见。

Helix Code公司提供了编译好的测试包,支持7个运行于 Intel 或 PowerPC上的Linux发行版,以及一个Solaris版。这就是著名的Helix GNOME发行版。

GNOME基金会

在2000年八月在加利福尼亚州圣和塞召开的linux世界博览会上GNOME基金会宣布成立。这里是公告的连接。

新闻中展示了广泛的覆盖面。

各种公司加入进来继续GNOME用户环境和基础技术的开发。在基金会公告之后,许多来自始创成员的倡议公布:

·Sun微系统采用GNOME技术作为他们Solaris系统上的用户环境。

·惠普采用GNOME作为他们HP-UX操作系统的用户环境。

·Sun将在他们最新的开源StarOffice套件移植Gtk+工具包,使之与GNOME Bonobo构成 体系整合在一起。

·IBM为GNOME贡献了 SashXB极速开发环境。

·GNOME将采用 Mozilla,并将其整合为桌面策略的一部分。

·GNOME项目将采用OpenOffice技术。

这些公告只是一个大的描绘中的一部分:Eazel的文件管理器出现在GNOME 1.4;Helix Code的Evolution群件组出现在GNOME 1.4。加之Gnumatic、VA-Linux、TurboLinux的支持。

在这里指出Sun对GNOME的许诺是非常广泛的:他们的团队围绕GNOME从事各种技术。Nautilus和Evolution整合在StarOffice中在linux世界博览会上做了演示。

Sun创建GNOME亲和实验室

在2000年九月,Sun宣布成立一个亲和实验室以帮助改善GNOME以方便那些没有技术的人使用。

GNOME 1.4

GNOME 1.4 版本工程师是Jacob 和Maciej。这个版本将包括第一次作为GNOME的一部分的Bonobo组成体系,也将包含新的文件管理器Nautilus 和Evolution 组件套。

来源:http://www.gnome-cn.org

cnhnln 发表于 2004-9-10 23:39:21

看看

黑企鹅 发表于 2004-9-12 15:20:15

贴了一遍又一遍啊.... :mrgreen::mrgreen:
页: [1]
查看完整版本: GNOME项目的历史--miguel回忆录