12 ms·
It's been a good run, but we're finally seeing the end of free compilers. Over time, using Clang effectively will require proprietary modules from Google, Appl
by tedks 12y ago
It's been a good run, but we're finally seeing the end of free compilers.
Over time, using Clang effectively will require proprietary modules from Google, Apple, et all and the GCC project, long dead, will haunt us from the grave.
We'll tell stories to our children about how when we started learning to program, it was easy to get started because compilers were free, but now the only free compilers are toys, ill-suited for anything but the most basic education.
A special thanks to everyone who helped make this possible by attacking GCC and championing LLVM whenever possible. I hope it's very, very easy for you to write extra modules for your new proprietary compiler.
- kev009 12y agoYeah running FreeBSD on all my systems really depletes my wallet too.
- mahouse 12y agoI'm sorry, but I don't understand. Aren't both Clang and LLVM open source?
- tedks 12y agoNot completely. Proprietary modules and forks of both exist, so in the broadest sense they are not (in the sense of, if I'm ever handed a copy of something calling itself LLVM, I do not know that it is libre software). But worse than that, proprietary modules can be mixed-in to Clang and LLVM. So essential functionality can be hidden in proprietary modules. Imagine that Apple wants to do something nifty for Swift, but doesn't want Google to be able to use it in Go -- they'll release a proprietary module that can be linked into Clang. All free code in LLVM can be forked and made proprietary, and no proprietary code can be reasonably expected to be liberated. So the balance of free to non-free code can only ever get worse. I'm sure that the libre software world being based on a proprietary compile will be a great thing to add into the mix of pervasive surveillance and network penetration.
- danieldk 12y agoNot completely. Proprietary modules and forks of both exist, so in the broadest sense they are not (in the sense of, if I'm ever handed a copy of something calling itself LLVM, I do not know that it is libre software). By your definition, any non-copyleft open source licensed software ceases to be open source 'in the broadest sense' once a proprietary fork exists. Which is just silly, some software is open source according to the open source definition or it is not. Imagine that Apple wants to do something nifty for Swift, but doesn't want Google to be able to use it in Go -- they'll release a proprietary module that can be linked into Clang. People who pick the Apache, MIT, or any non-copyleft open source license do this knowing that proprietary forks or extensions are possible. Not everyone's definition of 'freedom' is the same as the FSF. Also, I would like to point out that the same thing happens in copyleft-land. Companies dual-license their code under a proprietary license and let contributors sign agreements, to shut out competitors and to get people to buy expensive proprietary licenses. Oracle thankfully uses the GPL for such strategies. In fact, they recently relicensed Berkeley DB and Berkeley DB XML under the AGPL(!). I'm sure that the libre software world being based on a proprietary compile will be a great thing to add into the mix of pervasive surveillance and network penetration. Just help me understand. FreeBSD takes the open source LLVM/clang, uses it to compile their open source software. And suddenly it becomes proprietary. How so?
- tobylane 12y agoSomeone who owns and distributes GPL-licenced software is not bound by the licence, they can allow themselves to fork it with a different licence. Apple employs the owner of CUPS, so they could abandon cups and 'start' anew closed-source.
- anon1385 12y ago>Not completely. Proprietary modules and forks of both exist, so in the broadest sense they are not This is also true of GCC. Lots of organisations have private forks and the GPL allows that. More generally, if somebody offers 'compiler as a service' over the internet then the GPL becomes irrelevant and they could add as much private code to GCC as they wanted. The GPL only forces you to contribute back under a very specific and narrow set of criteria. Criteria that the majority of software being written in 2014 doesn't meet. The GPL is largely irrelevant to most software shops these days - they freely incorporate piles of GPL licensed code into proprietary closed source products. They can do so because most new software is internal to organisations or delivered as an internet service. The GPL was designed for a different world. Software freedom has been set back because of people clinging to the GPL as the final word in software freedom. Your kind of GPL centric propaganda results in young developers today thinking they are doing the world a favour by writing proprietary closed source web apps - because they are using FOSS GPL libraries, right? And targeting the 'open' web, right? Do you AGPL licence all the code you write, including website backends? Does your employer? If not you should probably take a close look at yourself and consider that maybe you are part of the 'problem' you are decrying.
- chimeracoder 12y agoOP is being a rather hyperbolic, but it's not really that unreasonable to criticize Clang/LLVM on this issue. Both projects are politically motivated. GCC began explicitly as a project to provide a FOSS C compiler (few if any existed at the time). Clang/LLVM didn't start at Apple, but their development has been heavily sponsored by Apple, whose interest in the project stems from their interest in excising the GPL (and specifically the GPLv3) from their entire development stack. (Notice how the version of bash that ships with OS X is almost a decade old, and is also the last version that was released under GPLv2). The fact that Clang/LLVM are released under a FOSS license today does not mean (A) that they always will be, or (B) all essential functionality will always be[0]. With GCC, being a FOSS compiler collection is their entire raison d'etre - it's right in the name![1] Edit: Reworded sentence to remove ambiguous antecedent. [0] (ie, it's conceivable in the future that nobody will want to use Clang/GCC on its own, but will essentially have to use it in conjunction with another piece of related software, and there's no guarantee that this software will be FOSS. With GCC this is not a relevant concern only because the FSF would never let that happen; it undermines the entire founding point of the project. [1] GNU Compiler Collection
- deleted 12y ago[deleted]
- DrJokepu 12y agoActually, the reason Apple sponsored Clang/LLVM is because Apple engineers were unhappy with GCC's build times[1]. If you need to rebuild an entire operating system (kernel and userland) every day, your C compiler's build performance matters a lot. [1] http://www.imore.com/debug-48-melton-ganatra-episode-ii-understanding-apple http://www.imore.com/debug-48-melton-ganatra-episode-ii-unde...
- CJefferson 12y agoTo be fair to clang, one big motivating reason for starting clang (one of the reasons I got involved in helping clang myself) was the fact that at that time GCC would refuse any patch which made it easier for anyone to get a C++ parse tree out of gcc. clang was designed to do that from the start, and for me this has lead to greatly improved C++ tools.
- Igglyboo 12y agoLLVM has a far more "free" license than gcc does. GPLv3 is indeed less "free" than MIT style licenses regardless of what RMS says.
- chimeracoder 12y ago> LLVM has a far more "free" license than gcc does. The Clang/LLVM license is both a free license as defined by the FSF and an open source license as defined by the OSI[1]. [1] https://en.wikipedia.org/wiki/University_of_Illinois/NCSA_Open_Source_License https://en.wikipedia.org/wiki/University_of_Illinois/NCSA_Op...
- voidlogic 12y agoThat depends on if you are encouraging "free" for societies interests or "free" for individual/corp interests. GPLv3 encourages the former, but not the later. The two interests almost always come into some degree of conflict (although in many ways are compatible). I view the flamewarz between BSDish and GPLvX licenses as similar in spirit to the arguments between laissez faire capitalism and northern European social capitalism.
- danieldk 12y agoFor me personally, important reasons for switching from GPL licenses to Apache are: the Apache license I can read and understand; the GPL is vague in many points, leading to multiple interpretations; and license compatibilities between the GPL and other licenses (and between GPL versions/variants). Also, I don't want to force my ideology (I find FLOSS preferable) on other people, while still giving my software away. However, technical reasons such as the above were 50% of my license choice. Given the vagueness of the GPL, I can fully understand that many companies do not want to deal with that, even if they want to contribute to FLOSS in some way.
- ue_ 12y agoWhat do you find to be vague about the GPL? I've personally never even had to visit the GPL FAQ at gnu.org.
- sneak 12y agoStop this nonsense. Not everything that isn't exactly according to Stallman's vision is the devil. Black and white thinking helps no one. http://llvm.org/docs/DeveloperPolicy.html#license http://llvm.org/docs/DeveloperPolicy.html#license To others: I presume what the parent comment is complaining about is that companies are legally allowed to modify the llvm source and distribute those binaries without source code. This is not a bad thing, unless you're an open source zealot. From the URL above: > We intend to keep LLVM perpetually open source and to use a liberal open source license. and > We believe this fosters the widest adoption of LLVM because it allows commercial products to be derived from LLVM with few restrictions and without a requirement for making any derived works also open source (i.e. LLVM’s license is not a “copyleft” license like the GPL). This is reasonable.
- cliffbean 12y agoThe current leaders of the LLVM project intend to keep it open. They have also traded away a way to encourage others to keep it open in return for wider adoption. Interpret that as you will.
- icebraining 12y agorms himself has "traded away a way to encourage others to keep it open in return for wider adoption" in the past. It's called being pragmatic. It's always fun to see people being more papist than the pope, though.
- tedks 12y agoYes, in some circumstances that's true. For example, recently I think it was a GNU codec library that was released under a permissive license, because there are plenty of proprietary video codec libraries and for a free format to win, a permissively-licensed library is useful. But Stallman put the GCC under the GPLv3. So I don't think your comments re: papacy are terribly on-point.
- DannyBee 12y ago"They have also traded away a way to encourage others to keep it open in return for wider adoption." s/encourage/force/ If you have to force people to do what you want, who cares. Leading is about getting people to go in a direction they may not want to go. Not pushing them off a cliff.
- TallGuyShort 12y agoRemember that time that Apache destroyed software freedom because it wasn't GPL? Me neither.
- angersock 12y agoYeah, and nobody was ever able to move to another web server again, and now we're stuck with Apache forever. Forever.
- idontknow12 12y agoIf you have a competitive advantage why contribute back in any meaningful way? We have seen this type of stuff on Android with Dalvik (where Qualcomm has a special library / modified version of the VM). That's not to say it destroys freedom, but its not ideal for a certain subset of software. The GPL is also not magical in this regard, since you have projects where things don't get up streamed.
- fixermark 12y agoTo flip the thought: If the license forbids you from building a competitive advantage, why contribute at all? There have been issues with GCC for over a decade that go unfixed and unchanged because it doesn't make the most business sense to contribute to it. In the category of interoperation in particular, the GCC project proved to be openly hostile to the notion; they left a wide gap in the market for Clang/LLVM to fill.
- idontknow12 12y agoThe model might differ for copy left licenses, but nothing really prevents it at the end of the day. I think GCC's arcane code base made the situation worse versus business sense. Otherwise Red Hat or MariaDB would be dead. Does it matter if my competitor can take advantage of my bug fix in a compiler? I don't think copy left licenses are a good fit for every project, but there is certain infrastructure in the world where ideally everyone can benefit.
- kllrnohj 12y ago
- bhouston 12y agoI think Clang could see the end of the MSVC compiler except where .NET compatibility is required. Thus this is actually a win for open source software. Seriously, Clang is just awesome in terms of performance, debugging ability and standard support compared to MSVC.
- Corrado 12y agoI wonder, with the recent open sourcing of C#/.Net, would a Clang/LLVM module for them be out of the question? That would make for some sweet ability to port applications around. :)
- qwerta 12y agoFunny, after some exposure to GNU codebase (including GCC) I used to thought, that evil M$ is trying to destroy free software, by poluting it with horrible code.
- blinkingled 12y agoI am not entirely sure why you got downvoted so much - probably due to the 'attacking GCC' part which I disagree with you on, but for what it's worth I agree with your point that proprietary modules and forks are a risk with precedence. For instance Apple came out with A8X which I am sure required special clang codegen optimizations - where is that code? If that continues to sit behind Apple's closed walls then it's already proving OP's point.
- ajross 12y agoExactly. The lack of Apple's release of its LLVM/clang code for its popular platform is a problem. And it might be a reasonable argument to make about copyleft in the abstract (c.f. Apple's very different behavior toward WebKit which was enforced by license). But it's not an argument against clang, which remains a high quality free software compiler and one worth using. And citing the existence of said free software as evidence for the "end" of free compilers seems... weird.
- blinkingled 12y ago> But it's not an argument against clang Well, one could argue that clang and its license are inseparable and if the license enables the reality that more and more higher quality stuff remains proprietary and that the source-available clang version remains a step child or second class citizen then your "high quality free software compiler" point becomes at least partially invalid. If on the other hand GCC's license means more companies contributed in the open and only a single first class product remained equally available to everyone then GCC ended up being a better product than clang.
- ajross 12y agoBut if you made that argument you'd have to make it with facts. :) The plain truth is that clang is free software, and (c.f. linked article) is very much a "first class citizen" in existing free software environments. Apple's variant is not free software, and that sucks. So it seems reasonable to argue that it would have been "better" had LLVM been copyleft. But that only extends as far as the facts on the ground, so arguing that we're seeing the "end of free compilers" seems silly to me.
- DannyBee 12y agoI own the C++ language platforms team at Google (which includes the LLVM and GCC developers). Google literally upstreams everything we produce for llvm/clang. We did the same for GCC, including things we could have kept to ourselves, like LIPO (https://gcc.gnu.org/wiki/LightweightIpo https://gcc.gnu.org/wiki/LightweightIpo) I have a lot of trouble coming up with a case where we wouldn't upstream something. Do you have any evidence for your concern, based on history, or is it all random hyperbole? As both a GCC and LLVM developer, i can tell you that GCC lost entirely of its own accord. PS it's somewhat ironic that Google contributed a lot to GCC, and you complain about it and assert they have poor motives because they decided to move to a different technical solution, yet from what i can tell looking at changelogs, you have never contributed to either GCC or LLVM. If you want the world to turn out the way you want it, you actually have to participate.
- diminish 12y agoGP's concern of proprietary modules seem valid IMHO. Based on your track record and plans ahead can you confirm this is not a risk?
- DannyBee 12y agoWhy is it valid? We have never done so in the 10+ years of working on GCC or LLVM. It's no more valid than me saying "Linus doesn't want to use GPLv3 because he wants to release consumer devices with the kernel and proprietary modules on it". IE it's complete unfounded bullshit with not a shred of intent or data to back it up, and goes completely contrary to the history of his work on the project. In any case, we have no plans to release proprietary modules for clang/llvm.
- tedks 12y agoI don't think Google has poor motives at all. This is the way the wind is blowing. Google is almost certainly right to move to LLVM and you'd be far better situated to comment than I am. Personally, I see something as big as Chrome moving to LLVM as a late-stage indicator of the mass adoption of the platform. I'm young, as you've pointed out, and I've never worked for Google, but I'd bet that this decision wasn't made lightly, and it certainly wasn't made early in the lifetime of clang/LLVM. The people truly at fault for the things I fear, should they come to pass at all, are not the late adopters like Google, but the innovators who decided to put their energy into LLVM, knowing full well how dangerous it could be. I don't and didn't mean to imply that Google is going to stop contributing, or that Google never has. I do think that Google's decisions to contribute upstream are based on business sense, as opposed to morality, and I think that should the day come that it makes business sense for Google to not contribute back, or to release a non-free fork, it'll do that. As others in this subthread have pointed out, Apple has already distributed non-free LLVM modules. The concern I have is that this is possible with LLVM, and it was not possible with GCC. When Apple wrote a non-free Objective-C frontend for GCC, they liberated it because the Free Software Foundation successfully enforced the GPL. There is no legal mechanism to force corporations to contribute back to LLVM, so they do it of their own goodwill, if they do it at all. I think this is dangerous because it can lead to a world where there are no good free compilers. The people who wrote LLVM, the people who championed it early on and contributed to it, they could have realized this too, and they did nothing to stop it. I truly hope they acted the way they did because I am egregiously wrong, and that nothing I'm afraid of will ever happen. To put things in perspective, GCC had one fork in its history already. I think that if it was forked again, redesigned extensively to make it easier to get parse trees and add modules and so on, with the legal requirement that all such modules be free in any distributed compiler, the FSF would eventually, hopefully, accept that as the canonical GCC. It would have been harder to do that than to make LLVM, maybe it would have cost the world a few years of compilers research, but it would have been possible, and it would have made for a more secure outcome.