Project GNU來自十年前,由Richard Stallman在網絡討論區的一篇文章http://www.cs.pdx.edu/~trent/gnu/begin發起的。Richard Stallman在這篇文章中明白的說明了他為什么要發起這個計劃。這篇文章就是后來的GNU Manifesto。而Richard Stallman后來成立Free Software Foundation全力投入Project GNU的工作,是FSF的終身儀工。
GNU是GNU's Not Unix的縮寫(GNU是一種大型的哺乳動物--牛羚),在Manifesto內Stallman提到UNIX雖然不是最好的操作系統,但是至少不會太差,而他自信有能力把UNIX不足的地方補全, 使它成為一個優良的操作系統, 就是名為 GNU 的操作系統。
GNU當初的策略就是先發展UNIX現有的程式。(因為確定GNU會是一個與UNIX相容的系統,而UNIX下的標準介面都已經蠻完備了,只要照著標準完成的程式,將來GNU Kernel完成后,立刻可以有所有 UNIX 的公用程式),因此會先有 emacs,gcc等utility出來。 其中gcc更是Project GNU能夠自立更生的主力(不需要依靠Non-Free Software來產生/編譯自己)。
gcc是FSF最有名的程式之一,目前是C,C++,Pbkectove C三合一的compiler。gcc的作法是有一個先導程式(front end),把C,C++,Objective C的語法轉換成一個內部的型式(一個類似lisp的高階組合語言,稱為RTL,或者說先把高階語言轉成一個想像的CPU的組合語言),再由backend對這個虛擬組合語言進行最佳化,最后產生目的CPU(target)的組合語言碼,如此架構下,只要寫好一個新的語言的frontend,那么因為gcc backend己經支援不少架構,該語言立刻就可以在不少不同架構下的機器編繹執行。有了一種新的CPU,也只要完成把虛擬ASM轉換成真正asm的部份,立即就有多種語言的最佳化編譯器。除了C家族之外,gcc還有Fortran 90,ada9x,Pascal的frontend,其中Fortran是最晚問世的 frontend,版本號碼0.5。
說到GNU就不能不說GPL。
GPL -- General Public License
GNU 的精神就是認為軟體的源代碼應該要自由流通,軟體公司該做的,不應該是把源代碼據為己有,賺取發行binary 的金錢,而是整合與服務的費用而已,因為源代碼自由流通的軟件才能讓軟件的品質提高,讓軟件設計師可以自由的與他人交換心得,不受智慧財產權的約束。但是現實的環境是惡劣的,為了怕有好利之徒把自由流通的軟件占為己有,FSF制定的GPL,先依著作權法獲得軟體的智慧財產權,再透過GPL釋放此權力給大眾:只要你遵守GPL,不把源代碼,以及你對源代碼所作的修改據為己有,你就擁有使用GPL軟體的權力。GPL的規定不怎么適用于Library(太嚴格),為了能夠鼓勵更多人使用GNU軟件,FSF另外制定了LGPL--Library GPL,限制比較松一點。
GNU manifesto/GNU General Public License/Library GPL皆可在GNU mirror sites找到(其中GPL放在目錄名為COPYING的文件內,LGPL則在COPYING.LIB內)。另外,FSF每年的1月與7月都會定期公布一份名為GNU bulletin的文件,說明FSF現況與動態。GNU bulletin電子版只公告在gnu announce上。
????????????????????????????????????????????????? 田晟
??????????????????????????????????????????????? 2006-5-9