GNU計劃

GNU計劃

GNU計劃,有譯為“革奴計劃”,是由理查德·斯托曼在1983年9月27日公開發起的自由軟體集體協作計劃。它的目標是創建一套完全自由的操作系統GNU。

簡介


GNU計劃,有譯為“革奴計劃”,是由理查德·斯托曼在1983年9月27日公開發起的,它的目標是創建一套完全自由的操作系統。理查德·斯托曼最早是在net.unix-wizards新聞組上公布該消息,並附帶一份《GNU宣言》等解釋為何發起該計劃的文章,其中一個理由就是要“重現當年軟體界合作互助的團結精神”。
GNU是“GNU's Not UNIX”的遞歸縮寫,為避免與gnu(非洲牛羚,發音與“new”相同)這個單詞混淆,斯托曼宣布GNU應當發音為“Guh-NOO”(/ˈgnuː/ (幫助·關於)),與“canoe”發音相似。
UNIX是一種廣泛使用的商業操作系統的名稱。由於GNU將要實現UNIX系統的介面標準,因此GNU計劃可以分別開發不同的操作系統。GNU計劃採用了部分當時已經可自由使用的軟體,例如TeX排版系統和X Window視窗系統等。不過GNU計劃也開發了大批其他的自由軟體,這些軟體也被移植到其他操作系統平台上,例如Microsoft Windows、BSD家族、SolarisMacOS
為保證GNU軟體可以自由地“使用、複製、修改和發布”,所有GNU軟體都包含一份在禁止其他人添加任何限制的情況下,授權所有權利給任何人的協議條款,GNU通用公共許可證(GNU General Public License,GPL)。這個就是被稱為‘公共版權’的概念。GNU也針對不同場合,提供GNU寬通用公共許可證(與GNU自由文檔許可證這兩種協議條款。

發展歷程


1985年,理查德·斯托曼又創立了自由軟體基金會(Free Software Foundation)來為GNU計劃提供技術、法律以及財政支持。儘管GNU計劃大部分時候是由個人自願無償貢獻,但FSF有時還是會聘請程序員幫助編寫。當GNU計劃開始逐漸獲得成功時,一些商業公司開始介入開發和技術支持。當中最著名的就是之後被Red Hat兼并的Cygnus Solutions。
到了1990年,GNU計劃已經開發出的軟體包括了一個功能強大的文字編輯器Emacs、C語言編譯器GCC以及大部分UNIX系統的程序庫和工具。唯一依然沒有完成的重要組件,就是操作系統的內核(稱為HURD)。
1991年,林納斯·托瓦茲編寫出了與UNIX兼容的Linux操作系統內核並在GPL條款下發布。Linux之後在網上廣泛流傳,許多程序員參與了開發與修改。
1992年,Linux與其他GNU軟體結合,完全自由的操作系統正式誕生。該操作系統往往被稱為“GNU/Linux”或簡稱Linux。(儘管如此,GNU計劃自己的內核Hurd依然在開發中,目前已經發布Beta版本。)
許多UNIX系統上也安裝了GNU軟體,因為GNU軟體的質量比之前UNIX的軟體還要好。GNU工具還被廣泛地移植到Windows和Mac OS上。
GNU工程十幾年以來已經成為一個對軟體開發主要的影響力量,創造了無數的重要的工具,例如:強健的編譯器,有力的文本編輯器,甚至一個全功能的操作系統。這個工程是從1984年麻省理工學院的程序員理查德·斯托曼的想法得來的,他想要創建一個自由的、和UNIX類似的操作環境。從那時開始,許多程序員聚集起來開始開發一個自由的、高質量、易理解的軟體。

軟體開發


到上世紀90 年代初,GNU 項目已經開發出許多高質量的免費軟體,其中包括有名的emacs 編輯系統、bash shell 程序、gcc 系列編譯程序、gdb 調試程序等等。這些軟體為Linux 操作系統的開發創造了一個合適的環境,是Linux 能夠誕生的基礎之一。以至於目前許多人都將Linux 操作系統稱為"GNU/Linux"操作系統。
一個利用 Lisp 編寫的Emacs文本編輯器,一個原碼級的調試器,一個與 yacc 兼容的語法分析器,一個連接器,和大概 35 個應用程序。有一個 shell (命令解釋器)已經接近完成。一個新的、具可移植性的、有優化功能的C編譯器已經可以自我編譯,並應可以在今年發布。還有一個初具規模的內核但是需要更多的特性以模擬 UNIX。當內核和編譯器工作完成後,我們就能夠發布一個適合軟體開發的 GNU 系統。我們會使用 TeX 作我們的文本編輯器,但是也正在編寫一個 nroff。我們也會用免費的、具可移植性的 X 視窗系統。之後我們會加一個可移植的 Common Lisp、一個 Empire 遊戲、一個電子表格軟體、和其他各式各樣的東西,以及在線的文檔。
開源項目:GNU系列:GNU Emacs,GNU調試器。

特性


GNU 將能夠執行 Unix 的程序,但是不會和 Unix 完全一樣,特別是GNU計劃擁有支持更長文件名、文件版本號、一個不怕死機的文件系統,或許還要有自動文件名補全、與終端機無關的顯示支持、可能最後還要有一個基於Lisp的視窗系統,以使好幾個 Lisp 程序和普通的 Unix 程序能共享同一屏幕。C 和 Lisp 都將成為系統的程序語言。我們會設法支持 UUCP,MIT Chaosnet,及 Internet 的通訊協議
GNU 最初的目標是在有虛擬內存的 68000/16000 系列機器上開發,因為這樣的環境是最容易開發程序來實現 GNU 的運行。剩下來讓 GNU 能在其它較小的機器上運行的工作,將會留給那些希望能在這些機器上使用的人。
GNU不是公共的,毫無約束的軟體(public domain)。GNU計劃允許每一個人修改及傳播 GNU,但是絕不允許傳播者對他傳播的程序再加進其他的限制。也就是說,不允許將修改後的程序據為己有。GNU計劃希望能確保 GNU 所有的版本都能保持自由。
GNU的核心精神是自由與分享,和hacker精神有異曲同工之妙,雖不能說GNU精神就是hacker精神,不過很難把兩者清楚的分開,實際上很多hacker都為GNU做出了巨大的貢獻。對知識的渴求是支持他們探索的唯一動力。

項目工程


Classpath 是一組支持JAVA語言的關鍵庫。
DotGNU是.NET策略的完全替代,由多個軟體計劃組成。
Free Film Project 是一個套完整的工具集,當整合起來使用時可以形成一個完整的虛擬電影工作室。
GPKCS-11 是PKCS#11的一個實現:加密介面標準。
GNU Cobol是為COBOL語言創建一個編譯程序的一個結果。
Gnucomm 計劃目的在於為一般的通訊問題提供更好的解決方案。
GNU Enterprise 的宗旨是為各種商務需求開發一個完整的系統。
GNU GLUE 目的在於建立一個分散式的群件應用框架,這些應用基於新出現的網際網路標準。比如,XML WEBDAV和RTSP,並適用於同步和非同步以及在線和離線操作。
GNU Octal 計劃目的在於建立一組自由組件,這些組件一起作為一個類UNIX系統的數位音樂工作站工作。
GYVE代表``GNU向量編輯器(GNU Yellow Vector Editor)''。它是一個受到Adobe公司的Illustrator和Corel Draw產品的啟發而製作的基於向量的繪圖程序。