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://www.gnome.org,在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數據庫(http://www.gnome.org/todo/index.php3),列出的是目前GNOME需要進行的工作任務列表。開發者把認為重要的、自己卻沒有時間去完成的工作列在上面。每個項目都有詳盡的描述和聯系方式。參與者可以通過浏覽這個數據庫選擇感興趣和擅長的領域。 當然,對於一個剛剛加入的社區成員而言,可能很難立刻進入角色。在這方面,GNOME社區也考慮得十分周全,比如GNOME的Love項目(http://mail.gnome.org/mailman/listinfo/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。