mirror of
https://github.com/LCTT/TranslateProject.git
synced 2024-12-26 21:30:55 +08:00
Staying free,GCC BY CNprober. over.
This commit is contained in:
parent
5821b8e045
commit
536e32306f
@ -1,39 +0,0 @@
|
||||
CNprober translating..
|
||||
|
||||
Staying free – should GCC allow non-free plug ins?
|
||||
================================================================================
|
||||
> Arguments in favour of the use of non-free plug-ins in GCC have again been raised on GCC mailing-lists, but are trumped by the arguments for GCC as a vehicle for free software development
|
||||
|
||||
Once again, Gcc and its lack of modularity has been raised as an issue and contrasted with LLVm, the new compiler on the block. GCC is huge and venerable: 5 million lines, 30 years, and growing. LLVM, in contrast, is relatively youthful and modular and allows free and proprietary languages to be added as modules.
|
||||
|
||||
The core of LLVM is ‘open source’. GCC is copyleft and unreservedly free software and doesn’t allow plug-ins or other means to add proprietary extensions to the GCC code. The argument, as delivered by Eric Raymond, is that “FSF can no longer prevent proprietary vendors from plugging into a free compiler to improve their tools. That horse has left the barn; the strategic goal of the anti-plug-in policy has been definitively busted.”
|
||||
|
||||
LLVM has been sponsored by Apple as a replacement for GCC on OS X and Apple hardware and has grown in popularity, especially among users of the BSDs. Advocates of LLVM see it as a putative replacement for GCC in the wider market for applications developers and mobile devices. The argument against GCC is that its complexity, and the commitment of its developers to copyleft licensing, constrains the possibilities for proprietary developers, who do not want to release their language or architectural specifications under a copyleft licence. Apple, of course, has a long history of antipathy to free software, and doesn’t allow applications licensed under copyleft licences to be distributed through its App Store.
|
||||
|
||||
To this extent, the argument between LLVM and GCC is a retread of the historic differences between GNU/Linux and the BSDs, between ‘open source’ and free software. Open source developers allow the code to be reused in any context, free or proprietary. Free software is restrictive in that it insists that the code, and any modifications to the code, must remain free in perpetuity. Advocates of free software would argue that the integrity of copyleft licensing has been instrumental in the spread of GCC, and has taken Linux and free software into places it would not otherwise have reached, and that free software cannot be bought or corrupted by commercial or corporate interests. Open source advocates argue that open source is more free because the user has no restrictions and can do what he or she likes, including developing closed source versions of the code.
|
||||
|
||||
Since the beginning, the GNU Compiler Collection (GCC) was vital to the spread of free software. Compilers were a rare and expensive commodity and the compilers of the proprietary software companies were rife with ‘features’ that were non-compliant with ANSI programming standards. Porting software between different machines and operating systems was an unnecessarily complicated task. GCC, the first truly free cross-platform compiler, commoditised this process.
|
||||
|
||||
GCC was a breakthrough product for applications developers and mobile device developers – not just those who were committed to the idea of free software. Not only was GCC free and portable, its ubiquity and commonality across different architectures made it easier to port software between machines and to expect robust and consistent results – as the likes of John Gilmore, Michael Tiemann and David Henkel- Wallace were to discover when they made GCC and its development the key selling point of Cygnus Solutions, the first company to make money by selling free software.
|
||||
|
||||
The primary technical difference between LLVM and GCC emerges in the separation between the modules that form the ‘front ends’, ‘middle end’ and ‘back ends’ of both GCC and LLVM. ‘Front ends’ are used to interpret the code specific to the translation of a particular language. The ‘middle end’ optimises the translated code. The ‘back ends’ take the optimised code and apply the results to a specific target architecture. LLVM separates these modules into distinct entities, but for semantic and historical reasons, GCC obfuscates the separation between the modules.
|
||||
|
||||
Perhaps untypically for a free software project, it is a difficult process to add a new language or architecture to GCC and the adding of proprietary plug-ins is not allowed. There is little clear separation between the modules, and the path of least resistance is to add any feature under a free software licence. The early ports of C++ and Objective C (via Apple) are cited as examples where the original developers might have preferred to keep the code in-house and proprietary, and instead released the code as free software.
|
||||
|
||||
In contrast, LLVM has allowed, or perhaps even encouraged, the addition and development of proprietary languages and architectures – one example being Nvidia’s NVCC for GPU computing, based on Clang and LLVM. The source code of NVCC is inaccessible to free software or ‘open source’ developers.
|
||||
|
||||
Richard Stallman’s [take on this][1] is characteristically resolute: “In the free software movement, we campaign for the freedom of the users of computing. The values of free software are fundamentally different from the values of open source, which make‘bettercode’theultimategoal. IfGCCwere to change from a free compiler into a platform for non-free compilers, it would no longer serve the goal of freedom very well.
|
||||
|
||||
“The Clang and LLVM developers reach different conclusions from ours because they do not share our values and goals. They object to the measures we have taken to defend freedom because they see the inconvenience of them and do not recognise (or don’t care about) the need for them. I would guess they describe their work as ‘open source’ and do not talk about freedom.”
|
||||
|
||||
The GCC developers are unlikely to compromise on the licensing terms. While LLVM is fashionable among certain sectors of industry, because it is young and new and has been quicker to jump on developing trands in programming languages, the prevailing wind is towards greater openness, and GCC’s resolve to be incorruptible and free from commercial interests, may be the greater asset in the long term. The Unix companies learnt something from the Unix wars of the Eighties and Nineties. Languages and operating systems are tools, and are better open and shared. GCC is free software and belongs to nobody.
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
via: http://www.linuxuser.co.uk/features/staying-free-should-gcc-allow-non-free-plug-ins
|
||||
|
||||
译者:[译者ID](https://github.com/译者ID) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://lwn.net/articles/582241
|
@ -0,0 +1,47 @@
|
||||
CNprober translated
|
||||
|
||||
保持自由 - 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 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[在这里的演讲][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) 校对:[校对者ID](https://github.com/校对者ID)
|
||||
|
||||
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创翻译,[Linux中国](http://linux.cn/) 荣誉推出
|
||||
|
||||
[1]:http://lwn.net/articles/582241
|
Loading…
Reference in New Issue
Block a user