Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103718076
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: LINUX

2008-05-06 22:49:42

   来源:开放系统世界    作者:清华大学 李洋

Linux/自由软件项目的编写及维护方式,决定其发展离不开网络社区成员的贡献。从这个意义上而言,一个个项目事实上就像一个个开放的大家庭。它们随时向朋友敞开着大门,吸引着越来越多的参与者。社区的成员们都在为社区的发展而努力,为项目的不断成长而欣喜。那么,一个Linux项目是怎样从萌芽走向健壮的呢?它的社区是如何组织及壮大的呢?让我们从最熟悉的GNOME项目说开去。

什么是GNOME项目

GNOME是Linux及各种主流Unix的GUI桌面系统。目前,在GNOME上面已经发展了许多自由应用软件,如文字处理软件Go、电子表格软件Gnumeric、日历程序GNOMEcal、可与PhotoShop媲美的图形图像处理软件GIMP等。与KDE一样,GNOME项目为Linux在桌面领域的发展及应用起到了至关重要的作用。

GNOME不像KDE那样有许多自己开发的工具,而是比较倾向于集成现有的X应用程序,可以允许用户选用任何一种窗口管理程序(一般是WindowMaker和Enlightenment)。GNOME也有自己的办公软件GNOME Office,它也是开放源代码的免费软件。GNOME的应用开发采用同样基于CORBA的Bonobo,类似Microsoft的OLE2。

GNOME桌面环境包括:

◆ GNOME桌面 applet、capplet、panel、wm interaction(sm、pager、rootmenu等)、desktop(icons,file manager);

◆ GNOME开发平台 GTK+、GNOME Widgets、Component Model、FS、imaging、SM、i18n,主要的技术是bonobo、XML、imaging(包括Gnome-Print);

◆ GNOME Office AbiWord、Gnumeric、GIMP、Dia、Eye Of GNOME(EOG)、GNOME-PIM、GNOME-DB。

更加重要的一点是,GNOME是一个大型的GNU自由软件项目,由许多人通过合作创建。在GNOME社区中,大多数人是自愿参与进来的,只在业余时间对项目进行维护;也有一部分人是通过雇佣方式全日工作的,但只占整个社区很小的一部分。可以说,GNOME的成功乃至未来都依赖着这些社区贡献者们;同时,一些商业公司的加入及扶持也对该项目的发展锦上添花。

组织形式及加入方式

GNOME是由一群志同道合者在网络上维护并协作开发的。参与到社区中的人会发现,所有人在网络上通过E-mail and IRC保持着密切联系,也许跟你进行合作的人正是一位走在技术尖端的开发者。想一想也会觉得这是一件有趣而令人兴奋的工作。这个社区和其它的自由软件社区一样,随时欢迎有志者的加入。想要加入这个社区并不困难,登录到其官方网站,在http://developer.gnome.org/documents/joining-gnome/index.html上有项目的详尽说明和简介。在了解完项目的大致情况后,即可进行申请。

申请加入社区的第一步,就是要求申请者按照GNOME项目的类别来选择感兴趣的领域。事实上,并不只有懂得编程的人才能加入社区,GNOME项目的发展需要各方面的人才,例如图形艺术家、文件编写者、翻译(各种语言,进行本地化工作)、网页设计师、软件测试员、软件打包人员、用户界面设计人员,以及其它类别的工作人员。只要你在某方面擅长,并乐于为社区服务,社区会尽力发掘你的潜力,以便为其所用。一般而言,GNOME项目可供选择的领域有以下几个方面(GNOME的子项目):

◆ 访问程序。这项工作的目的是为了提高GNOME的易访问性,从Gtk+小窗口到终端的阅读用户都可实现访问,并提供多种特殊硬件设备的支持。

◆ 文档。这是GNOME的一项十分巨大的工作,包括用户文档(如程序Manual、用户FAQ、GNOME介绍)和开发者文档(如GNOME技术白皮书、开发者指南、开发者FAQ和API文档)。同时,除了文档的撰写外,还有编辑和索引整理等工作。该项工作目前需要大量人员支援。

◆ 图形。GNOME需要几种不同类别的图形,分别应用在网页、桌面、选单及特殊应用程序中。

◆ 打包。这不仅包括源代码的打包,还包括释放软件包、从CVS更新的程序源码,以及为发行和安装打包。

◆ 质量检验。为了使GNOME尽可能地稳定、高效、低Bug,这项工作必不可少。主要进行程序扩展性测试,挑出Bug并将其报告给GNOME错误跟踪数据库。

◆ 声音。在GNOME的桌面事件、程序、游戏等中都需要不同类型的声音。目前,GNOME的声音系统还仅局限在有限系列中,急需人手来制造出高质量、高表现力的声音。

◆ 翻译。GNOME要想被世界上更多的用户接受,本地化是亟待完善的工作之一,已被列入GNOME未来发展计划。该工作量是十分巨大的—对于每一种语言,都要进行全面的翻译,包括对话框、选单、每个应用程序的按钮的字符串,以及用户手册等多种文档。现在我们在使用Red Hat 9.0附带的GNOME时,还经常会遇到局部汉化的问题,这正说明这项工作的必要性。

◆ 用户界面。该项目简称GUP,用户界面设计,使GNOME更易于使用和接近。

◆ 网页设计和开发。GNOME网站是社区成员活动频繁的领域,以及外界接触GNOME项目的窗口。因而这项工作也尤为重要。要求开发者懂得PHP、MySQL、WML或其它脚本编写知识。

◆ 程序开发。主要是桌面系统中应用程序的开发。这项工作并不限定参与者一定要在既定的项目中进行选择—有能力的人完全可以重起炉灶,另辟蹊径,从而体现个人的创造力。如果参与这方面的开发,可以有机会与其他优秀的GNOME开发者一起工作、思考,并从他们身上学习更多的经验和知识。

◆ GNOME平台开发。该平台是一系列的库和工具,应用程序便建立在其上。

◆ 开发者工具开发。开发者本身也需要很多开发工具:GUI-builder(如Glade)、IDEs、字符处理工具(gettext)、错误跟踪器、内存编译工具(memprof)、版本修订控制系统(CVS)、构造工具(autoconf、automake),以及许多其它工具。另外,图片及文档作者、翻译人员也需要一系列的工具来完善和保障工作质量。

申请者可在上述的工作类别中进行选择。每个类别都是一个独立的子项目,都有相关的负责人及维护页面。参与者根据兴趣和特长选中类别后,可以进入相关的网页,查看进一步的信息。每个项目的参与方式可能略微不同,但都需要与相关的项目负责人、联系人沟通,一般而言,很快就能收到答复。

此外,GNOME社区还专门准备了一个Todo数据库(/todo/index.php3),列出的是目前GNOME需要进行的工作任务列表。开发者把认为重要的、自己却没有时间去完成的工作列在上面。每个项目都有详尽的描述和联系方式。参与者可以通过浏览这个数据库选择感兴趣和擅长的领域。

当然,对于一个刚刚加入的社区成员而言,可能很难立刻进入角色。在这方面,GNOME社区也考虑得十分周全,比如GNOME的Love项目(),就是帮助刚刚进入社区得成员找到工作任务,并及时获得帮助的一个项目组织。

此外,GNOME社区的网站上面还列出了“如何开始”、“学会开发”、“向GNOME添加应用程序”等指南。

起步及发展历程

目前,世界上有数以千计的Linux及相关自由软件项目有待发展。一个项目从产生到成功承受着多方面条件的约束,适当的成长时机和环境、有能力的组织者和带头人、优秀的参与者、商业基金资助等环节缺一不可。GNOME也不例外。

萌芽

1996年,正值自由软件发展的年代。一个墨西哥籍青年Miguel de Icaza与他的一个在Red Hat公司工作的朋友Elliot Lee,时常在一起讨论有关自由软件的话题,并为促进自由软件的向前发展做着各种努力。在Windows 95推出之后,这两个人都不约而同地感觉到,相对而言,自由软件体系缺乏很多技术元素,使得其在很多领域落在后面。

当时Icaza正在为Linux/SGI项目(由SGI公司提供部分基金支持的一个Linux项目)工作。他不时地抽时间在一些自由软件相关工作上,力图缩短Linux和专有软件之间的差距。在与一位朋友讨论时,其认为自由软件桌面程序缺乏OLE模式的东西的想法,给了Icaza一些启发。他与Elliot Lee一起进行了一些初步尝试,比如,使用libapp功能库来访问应用程序的公共资源(配置管理、近期使用的文件记录、mime句柄等)。虽然这项工作最终并没有真正完成,但却萌发了要生产一整套桌面系统的想法。

当时,KDE项目进展得十分顺利,并且功能已经相对完善。Icaza对此感到十分高兴,并写信给他们建议把KDE的代码纳入Red Hat发行版,还曾致信给Richard Stallman(GNU组织者),让他了解有这样一个有趣的项目存在(KDE当时是基于GNU GPL的项目)。但Icaza很快得到回信:Qt是商业软件,不允许用户修改或发行修改后的拷贝,因而违反了GPL的相关条例;而KDE对Qt的依赖性导致其中的部分程序是非自由软件。

出于对自由软件的热爱,Icaza也曾与Qt的所有者Troll Tech取得联系,希望可以修改Qt的相关许可规则,但是始终没有得到回复。经过一段时间的等待后,他决定自己亲自组织一个Linux桌面系统的项目。

诞生

Icaza从墨西哥国立自治大学计算机科学专业物色了两名学生——Arturo Espinosa和Federico Mena,与他一同从事开发工作,同时他们也在为墨西哥Linux用户协会(Linux Users Group)工作。

在1997年的夏季,Icaza受一个朋友的邀请来到微软,开发基于SPARC的Internet Explorer for Solaris系统(因为其技术专长就是Linux/SPARC)。在微软,他学到了一些关于ActiveX和COM的知识,并开始对这种技术非常着迷。在那里,他还巧遇了一直以来在LinuxNet IRC交流的几个网友。当他再次返回墨西哥时,便与Federico着手设计一套GUI控制的基础构架(基于Unix系统),并将其命名为GNOME。

在最初的尝试中,他们想开发一个Qt程序的替代品。如果重新完成一套API将很可能导致软件效率的下降,而且可能会占用很久的时间。GNUstep、Wine和LessTif是当时在代替专有API方面比较成熟的三个软件。Icaza组织了LinuxNet网络和Linux频道的许多网友,共同参与到这个项目的开发中来。

1997年8月,GNOME项目正式启动。该项目的宣言草稿被送给Richard Stallman、Elliot Lee等多个关心该项目的朋友处进行修改。当项目的前期准备工作完成后,Icaza和Federico便着手在GIMP、Guile邮件列表、GNU项目声明邮件列表中分发了项目声明,以此来吸引更多的人加入。

邮件列表发挥了重要作用,来自邮件列表的参与者们做了很多贡献,队伍很快地扩大到了200多人。参与者们使用CORBA作为组件结构的基础,并使用DocBook来写GNOME的文件系统。在这个过程中,他们经历了尝试和碰壁,终于在技术上摸出了一条路子。

渐渐步入正轨后,初创的几个人注册了gnome.org域名,GNOME的开发重心很快地转移到这个社区中来。同年11月,GNOME社区聚集了足够的能量,Icaza和Federico推掉了其它项目,全身心地投入到开发中来。

很快地,在同年的12月,他们与Red Hat取得合作;1998年1月,共同建立了Red Hat高级开发实验室(Red Hat Advanced Development Labs)。这是为改进GNOME而成立的第一开发梯队。

Red Hat公司的Marc和DrMike也加入进来,帮助从事相关的开发。之后不久,社区上的成员Owen、Jonathan、Dave和Federico也都陆续加入进来……

转折

◆ 受到QPL的影响

1998年11月,Qt 2.0即将发布之际,该软件公布了一个新的许可协议,以便配合开放源码的定义。这项声明使得Harmony(克隆Qt API的免费软件)彻底地垮台,同时也使人们的视线从刚起步的GNOME身上转移到KDE身上。

另一方面,由于发展的时间较短,次年3月发布的GNOME 1.0这一版本中存在了很多漏洞,为其在稳定性方面带来了较坏的名声。面对这些情况,GNOME社区尽可能及时地修补了很多人们反馈的错误,并不断地发布新的软件包来弥补它们。在包含GNOME 1.0.xx版的Red Hat 5.0发布时,一并发布了GNOME的众多Bug补丁程序。在Red Hat的该发行版中,也包含了KDE。

系统的不够稳定及竞争对手给予的强烈压力,使得GNOME社区成员们感到了危机。但是,通过不断地吸取经验教训,他们最终度过了难关。

◆ GNOME基金会的建立

一个Linux项目的发展,需要更多资金及专业人士的支持。同时,也亟待被业界承认。因此,GNOME基金会的建立不能不说是其一个重要的转折点。

随着GNOME的不断完善,很多支持开放源码的公司也加入进来,对GNOME用户环境的开发及基于GNOME的技术开发进行支持。

在2000年8月举行的Linux World展会上,GNOME基金会宣布成立。Sun公司在其Solaris系统中采用了GNOME技术,并在其开放套件StarOffice中继承了GNOME Bonobo组件架构;HP公司将GNOME应用到HP-UX操作系统的用户环境中;IBM更是将其SashXB加速开发环境贡献给了GNOME。

与此同时,GNOME还与Mozilla集成到一起,并吸收了OpenOffice的相关技术。GNOME项目及社区因此而受益匪浅。其中,Sun对于GNOME的承认及支持产生了广泛的影响,其开发团队亦参与到GNOME相关技术的开发研究中来。在2000年9月,Sun公司宣布成立一个可访问实验室(Accesability Lab),帮助增强GNOME。

我们看到GNOME一路走来,从雏形的1.0版本,到奠定声誉的Bongo版本,再到目前十分成功的2.x版本,其社区在不断地壮大,项目性能在不断地完善,为其它Linux项目的发展树立了典范。

阅读(429) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~