TranslateProject/published/201409/20140624 Staying free--should GCC allow non-free plug ins.md
2014-11-01 21:02:39 +08:00

39 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

保持自由 - GCC应该接受收费插件吗
================================================================================
> GCC邮件列表中在争论GCC是否应该接受收费插件但是认为GCC是一个免费软件开发的媒介的论调占得了上风
Gcc以及它在模块化方面的缺失又一次作为一个问题被提出来并且和市场上的新的编译器LLVM做了对比。GCC巨大而古老5百万行代码30年研发时间并且还在继续增长。相比较而言LLVM更加年轻更加模块化并且允许所有的语言都作为一个模块添加进去。
LLVM的核心是开放源代码。GCC是反著作权copyleft代表是严格的免费软件她不允许以任何形式收费的插件的代码进入到GCC的代码中。争论的一种意见正如Eric Raymond说的“FSF不可能既阻止持有所有权的供应者添加他们的插件到一个免费编译器中又让这个编译器得到发展。就像马儿已经偏离了跑道反对插件策略的战略目标已经彻底的失败了”。
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 GilmoreMichael 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[对这方面的演讲中][1]旗帜鲜明地宣布“在免费软件运动中我们为自由而战。免费软件的的价值观从根本上就和开源软件不同后者以写更好的代码为终极目标。如果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](https://github.com/CNprober) 校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
[1]:http://lwn.net/articles/582241