保持自由 – GCC應該接受收費插件嗎?
LLVM已經被蘋果公司採用作為OS X和蘋果硬體上GCC的替代品,並且正在變得流行起來,特別是在BSD系列操作系統的用戶中間。LLVM的擁護者推測LLVM將會在更廣闊的應用程序和移動設備開發市場上成為GCC的替代者。GCC的反對者們的觀點是GCC太過複雜,並且開發者們必須遵守她的『反著作權(copyleft)』。這限制了那些不想在『反著作權(copyleft)』許可證下發布他們的語言或者軟體產品。作為典型,蘋果公司有一個很長的厭惡自由軟體的歷史。他們也不允許遵守『反著作權(copyleft)』的軟體通過他們的App Store發布。
LLVM和GCC之間的爭論其實是GNU/Linux和BSD系列、開放源代碼和自由軟體之間歷史差異的翻新版。開放源碼的開發者允許代碼被以任何形式的使用,免費或者維持版權。自由軟體則嚴格地規定,代碼或者針對代碼做的更新,必須保持永久免費。自由軟體的支持者認為完整的『反著作權』授權有助於GCC的發展,並且已經將Linux和自由軟體帶到一個其他方式無法到達的高度,同時保證了自由軟體不會被收購或者墮落成商業利益。開放源碼的支持者則認為開放源碼更加的自由,因為使用這沒有受到限制,他們可以隨意使用,包括開發非開源的版本。
GNU編譯器集合(GCC)一直是自由軟體發展的關鍵。編譯器是稀有且昂貴的商品,版權軟體公司也充斥著對不符合標準的特性的需求。讓軟體兼容不同的機器和操作系統是一個非必需的複雜任務。GCC作為第一個真正免費的跨平台編譯器,簡化了這個過程。
GCC對於軟體開發者和移動設備開發者來說也是一個劃時代的產品,而不僅僅對於那些自由軟體概念提出者。GCC不但免費和可移植,她跨越不同硬體架構的普遍性和公用性使得更加容易做到軟體的兼容性、魯棒性和一致性。這和John Gilmore,Michael Tiemann和David Henkel-Wallace在開發GCC時發現的一樣。這也是Cygnus Solutions公司主要的賣點,Cygnus Solutions是第一家靠賣自由軟體賺錢的公司。[譯註:Cygnus Solutions是John Gilmore, Michael Tiemann and David Henkel- Wallace創辦的公司,同時也是GNU幾個主要產品的貢獻者]
LLVM和GCC之間主要的技術差異集中在組成『前端』,『中端』,『後端』的模塊分割。『前端』用來翻譯特定的語言。『中端』對翻譯後產生的代碼進行優化。『後端』將優化後的代碼轉化成特定硬體架構的機器碼。LLVM將這些模塊分割成不同的實體,但是由於語義的和歷史的原因,GCC模糊了這些模塊之間的界限。
對於一個自由軟體項目,添加一種新的語言或者架構到GCC也許是一個非常困難的過程,添加有版權的插件也是不允許的。由於模塊間界限非常不明確,最容易的添加方法就是讓添加的特性遵循自由軟體許可證。最初的開發者也許想保持代碼的封閉和版權,但最後不得不將代碼以自由軟體發布。早期的C++以及Objective C就被認為是其中典型的例子。
與此相反,LLVM允許,甚至也許可以說是鼓勵添加和發展版權語言和架構,比如英偉達基於Clang和LLVM的對於GPU開發的NVCC。NVCC的源代碼是自由軟體或者開源軟體開發者獲取不到的。
Richard Stallman對這方面的演講中旗幟鮮明地宣布:「在自由軟體運動中,我們為自由而戰。自由軟體的的價值觀從根本上就和開源軟體不同,後者以寫『更好的代碼』為終極目標。如果GCC從免費的編譯器變成非免費的編譯器,她將不再能夠達成自由的目標。
「Clang和LLVM的開發者不認可我們的價值觀和目標,所以得出了跟我們不一樣的結論。他們反對我們採取的捍衛自由的措施,因為他們只看到這對他們造成的不便,卻沒有看到(或者不關心)他們真正的需求。我猜測他們把他們的工作定義為『開源』,並且漠視自由。」
GCC開發者們不可能在許可證的條件上妥協。LLVM在某些行業的部門非常流行,因為它很年輕很新,在編程語言的浪潮中跳躍式發展著。流行的風向著更加開放奔跑,GCC決心跟商業利益死磕也許是這個長期演進路上的一大助力。Unix公司們從80和90年代的Unix戰爭中學到了一些東西。語言和操作系統都是工具,它們最好是開放和共享的。GCC是自由軟體,不屬於任何人。
via: http://www.linuxuser.co.uk/features/staying-free-should-gcc-allow-non-free-plug-ins
譯者:love_daisy_love 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive