Hacker News new | past | comments | ask | show | jobs | submit login
GCC, LLVM, Copyleft, Companies, and Non-Profits (2014) (ebb.org)
94 points by jordigh on Feb 9, 2015 | hide | past | favorite | 66 comments



This article does a good job of explaining the choice of features to implement in GPL software as a political strategy rather than a religion. Especially good timing for this to be brought back up with the recent controversial request by RMS for some LLVM interoperability to be blocked from Emacs. [1]

I enjoy free software, but it is painful to think that I might not be able to use Emacs with software that I consider to be equally free (LLVM) due to political strategies. I know RMS has been through enough of the embrace-extend-extinguish era to be suspicious, but given the quality of free toolchains today and the surrounding communities, I have doubts of this history repeating itself in LLVM.

[1] http://lists.gnu.org/archive/html/emacs-devel/2015-02/msg003...


Oh, it goes deeper than that.

One of the many reasons why LLVM is taking off is because it provides an API that lets programs hook into the compiler, which means IDEs can deeply integrate with the compiler. For example, IDEs can highlight errors based on where the compiler says errors are instead of having to run its own parser for the language.

Why doesn't gcc have this feature?

Well, it was proposed, but it was shot down because RMS doesn't want proprietary tools to be able to hook into gcc. In fact, gcc was deliberately designed as a monolithic application with no API specifically to keep third-party tools away from it.

So yet another reason why people are moving away from gcc is because llvm/clang enables you to have better development tools. GNU is being killed by its own religion.


So why not just make that part of the license? Just require any tool that uses the GCC API, even transitively, to be licensed under something GPL compatible. I know there would probably be a huge number of loopholes to plug but this is really something that should be fixed outside of the actual code.


I was thinking the same thing. Change the GCC license to preclude such use by introducing a variant of the GPL for compilers and similar tools.


Linked from the original article is another piece by the author describing precisely such a license: http://ebb.org/bkuhn/blog/2009/01/27/gcc-exception.html . I'm rather surprised I haven't heard of this before.


Likely because it would be incompatible with GPL. Switching GCC's license to a GPL incompatible license is not a move I think FSF are willing to do.


I got downvoted here on HN for worrying that anti-LLVM politics could hinder the adoption of Rust in GNU projects. Looks like my worry of anti-LLVM politics affecting what gets into GNU projects isn't entirely unfounded.


Yes, I do worry about this, and I started working on rustc backend using GCC.


http://youtu.be/-ItFjEG3LaA

The speaker talks about copyleft and how it's dying, and mentions that he's certain the gcc will one day become irrelevant and die to llvm, due to llvm's commercial support and traction.


The speaker is the same person who wrote the article.


And that is the tragedy of the whole thing. If GCC were the only game in town then RMS' strategy would work. But it's not and all that will end up happening is developers abandoning the GPL for more liberal licenses that they allow them the freedom to do what they need to do get things done.

The end result being the savannah turning into a reservation.


This article has quite some flaws.

It totally ignores that it was the GPLv3 that let Apple move to LLVM - with Apple not being the only company that was kind of okay with GPLv2 but totally avoids GPLv3.

It often looses touch with reality. It absolutely ignores that Apple was a contributor of GCC and some of the LLVM developers were GCC developers before. It goes on and on how LLVM is in a terrible state that will get even worse because of a missing copyleft, when in reality LLVM is thriving because of the many companies that are contributing.


> It absolutely ignores that Apple was a contributor of GCC

Actually, Apple were compelled to contribute to GCC.

That is one of the points of the article.

That an Objective-C compiler exists at all is because of GCC. The fact that we can see and examine the source is because of the GNU GPL.


>That an Objective-C compiler exists at all is because of GCC. The fact that we can see and examine the source is because of the GNU GPL.

Yeah, no. They contribute the same to LLVM -- and even more than they did with GCC--, while still nobody "compells" them.

Plus Apple released lots of other Open Source stuff, even when not compelled by GPL. Nobody forced with respect to Darwin for example.


> Yeah, no. They contribute the same to LLVM -- and even more than they did with GCC--, while still nobody "compells" them.

This does not negate OP's statement, "The fact that we can see and examine the source [of the Objective-C compiler] is because of the GNU GPL." We have very well-documented and undisputed evidence that NeXT wanted to make the Objective-C compiler proprietary, and that they only backed down after the FSF lawyers determined that that would be a violation of the license.

As far as Apple's open source contributions, according to Saurik, they often fall short even when legally compelled, let alone their voluntary contributions: https://news.ycombinator.com/item?id=2083877


If Apple is "kind of okay with GPLv2", why doesn't it allow GPLv2 apps in the App Store?

In my opinion, Apple was never okay with copyleft (whichever version). There is nothing wrong with a company objecting to copyleft licensing.


Because the App Store prevents people redistributing apps they have bought and that is incompatible with the GPL. They actually did allow them until the FSF sued them[1].

Apple limit redistribution because they want to make it harder to pirate apps. That isn't the choice I'd make for my apps but I can see why Apple feels they need to try and prevent piracy.

Some people have suggested allowing free apps to be redistributed and thus allowing free GPL apps, but the result of that would just be somebody putting up GNU Go for $0.99 and then getting sued by the FSF again. They probably don't think it's worth the hassle of special casing free GPL apps, when users who want them can easily just get them outside of the store.

[1] http://www.fsf.org/blogs/licensing/more-about-the-app-store-...


> but the result of that would just be somebody putting up GNU Go for $0.99 and then getting sued by the FSF again.

Why would the FSF sue in this instance? As far as I can tell it's not about the $0 or $0.99 price - if the $0.99 app provides the a way for users to get the source, it will be GPL-compliant the FSF will be fine with that.


GPL requires unlimited binary redistribution. Since Apple does not want to allow that, the suggestion was to allow binary redistribution just for free apps. If this suggestion is implemented, $0.99 GNU Go is not a free app, so Apple would disallow binary redistribution, and FSF will sue Apple.


This entire thread is news to me. Just the other day I was searching the apple store for "GNU" and "GPL" and came up with almost nothing of note.

So what you are saying is if I wrote, say, a game for the app store, and wanted to release it under GPLv3, Apple wouldn't approve it? Even if I provide the binaries/src on a seperate website linked from within the app but not dependent on apple in anyway whatsoever?

Would it matter on the monetization scheme? eg free, one time payment, in app purchases, all with access to src to be compatible with GPL?

If it's true that Apple doesn't allow GPL'd s/w in the store, I think my hatred for Apple just grew by 10,000 sizes.

edit: Seems to be true, Apple store is completely at odds with GPL'd software, and potentially quite a few other licenses.

https://www.fsf.org/blogs/licensing/more-about-the-app-store...


> So what you are saying is if I wrote, say, a game for the app store, and wanted to release it under GPLv3, Apple wouldn't approve it? Even if I provide the binaries/src on a seperate website linked from within the app but not dependent on apple in anyway whatsoever?

Well, to clarify. You, as a software author, are quite free to release your software under both the GPL and the Apple App Store. This is fine. In other words, you're distributing your software under multiple licenses.

What you cannot do is distribute someone else's GPL'd code as part of your Apple App Store app, because the GPL does not give you the right to distribute the code under the App Store's conditions.


So this is why I can't just have a native OpenSSH client and have to install some random SSH app made by some developer I have non source access to...

Thank you very much for the clarification.


OpenSSH is under a BSD license, so there shouldn't be a problem with it on the app store. However, it doesn't provide a terminal so I don't know how you would use it. It may be included in the app you installed though.


The GPL says, "you must grant people the right to distribute, modify, and study this... or you may not distribute it at all." The app store says, "you may not redistribute this".

Those two terms are incompatible, and neither side is willing to change the terms.


arca_vorago,

It's not so much that Apple won't allow it as Apple's terms and GPLv3's requirements are incompatible with each other, and neither Apple nor the FSF is willing to budge.

I'd suggest looking into the VLC debacle. VLC used to be in the App Store, and some VLC developers threatened to sue because Apple was distributing VLC in violation of the GPL.


App Store TOS does to a license what a virus does to a binary; they both inject themselves with no respect to what already exist.

Apple's terms are incompatible with any license which do not allow additional terms to be injected. This mean any license, be that proprietary, copyleft, or permissive. If you don't have the authors permission to add additional restrictions, Apple's terms are legally prohibiting you to use it in App Store.

But from a practical point, only GPL apps has so far been pulled from App Store. Proprietary apps are permitted if the author permits the additional restrictions, and permissive licensed apps are so far being left alone, regardless of the arguments from people like Theo (http://undeadly.org/cgi?action=article&sid=20070913014315).


> when users who want them can easily just get them outside of the store

How? Don't you need to get a developer license and all that jazz?


If you want to sign the app, then yes. For the time being, it is an option to be able to run non-signed apps. You can currently ok selected apps by ctrl-clicking the app and using "Open" on the popup menu then answering "Ok" to the warning.


It seems to me that many developers are against GPL projects because "I want to use this software at work, but I can't because it's GPL". This always seemed ironic to me because I think it is the workplace that should be blamed, not GPL projects.


While I sometimes wish it were not the case, most companies do not exist to improve the world... The purpose of most companies is to make profits, not to advance free software. Making software freer can often cost companies profits, hence, this is sub-optimal. As such, one can hardly blame the workplace for the restriction, since it may indeed be in the company's (and, to some extent, their employees') best interest. Perhaps no one should be blamed for the inability to use GPLed projects: it's simply a conflict in goals.


Paying employees paychecks costs companies profits, but employees love paychecks so companies make deals. Many employees in the software industry, and almost all of LLVM developers, love software freedom, so companies can make deals here too.

I think the primary problem is that Apple (IMO, irrationally) refuses to make deals with GPL projects.


The article seems to offer a hint:

  the earliest publicly discussed major GPL violation
  was by NeXT computing when Steve Jobs attempted and
  failed (thanks to RMS' GPL enforcement work) to make
  the Objective C front-end to GCC proprietary.


There's a little more information about that exchange at http://clisp.cvs.sourceforge.net/viewvc/clisp/clisp/doc/Why-... (Stallman brought it up when enforcing the GPL on another free software project: "They had wanted to distribute the Objective C parser as a separate proprietary package to link with the GCC back end, but since I didn't agree this was allowed, they made it free.").

It sounds like Stallman wasn't entirely sure the GPL would have prevented Jobs from doing what he wanted, but was convinced by a lawyer that the FSF would have a strong case ("It seemed to me at the time that it was [legal] ... but since the result was very undesirable for free software, I said I would have to ask the lawyer. What the lawyer said surprised me; he said that judges would consider such schemes to be 'subterfuges' and would be very harsh toward them. He said a judge would ask whether it is 'really' one program, rather than how it is labeled.").


I think the primary problem was the FSF doubling down on copyleft with gplv3. I think at that point companies realized they'd need to take a more active role in how things are licensed.

And despite LLVM's and clang's history with Apple, it is most decidedly not an Apple project any longer. The LLVM foundation handles that. Looking at commits Google is a likely contender for the biggest overall contributor at this point.

I think this is a good example of mutually assured collaboration amongst companies. Sure some stuff gets split off and made proprietary, like the nvidia shader compiler, but overall more goes into it than out.

I agree with Linus on gpl v2 and gpl v3, v3 is off into the crazy territory. https://www.youtube.com/watch?v=PaKIZ7gJlRU

If anything I'd say this is an example of how taking too extreme of stances even if well intentioned, and I'll even grant them as "right on their own merits" can backfire in the end. RMS can consider llvm/clang an attack on gpl if he wants, but in the end I only see it as developers wanting to have improved tools and are willing to collaborate to do it. the fact that clang-format exists is a good testament to how gcc isn't doing itself any favors with its political stance in regards to being useful in other categories.

But all thats just like my opinion man.


> I agree with Linus on gpl v2 and gpl v3, v3 is off into the crazy territory.

That's... not what Linus said. To paraphrase, he doesn't like the anti-tivoization clause for his own code because he would rather get driver patches from Tivo that he can use on other hardware than prohibit them from using Linux, and he doesn't like how the or any later version clause is being used to make nontrivial changes to the license, which is why he didn't use it to begin with.

Linus exaggerates kind of a lot. People need to understand that. He said that he "hates" GPLv3, by which he apparently means only that he prefers GPLv2 for Linux, and then goes on to say that GPLv3 may be a great license and he has no problem with people using it for other software.

And I still don't see anything in GPLv3 that you would expect anyone to find shocking or highly objectionable. It's basically just patching the unintentional holes people have discovered over time in GPLv2. 99% of people would never even want to do any of the things it prohibits over the GPLv2.

But as the article notes, some proprietary software companies like to spread FUD, and so a lot of FUD has been spread.


Linus also chose GPLv2 for Git. Why?


Because he doesn't like the anti-tivoization clause for his own code.

I suggest watching https://www.youtube.com/watch?v=5PmHRSeA2c8 as it gives a up-to-date view which all the necessary qualifiers in one single talk. I especially like the (paraphrasing quite a bit) "GPLv3 is a fine license, GPLv3 is a horrible license, and I like to overstate things if you haven't noticed. For my own code I just want changes back. GPLv2 is a license that does this and nothing else, which is why I use it for my own projects.".


So I exaggerated myself in the "crazy territory" comment, regardless its basically how I feel about GPLv3.

So what FUD specifically is there about GPLv3 then? How is the anti-tivoization clause helpful to companies then? It honestly reads to me as a doubling down on copyleft.

I've talked to a few lawyers and they basically consider GPLv3 a contract that isn't worth bothering with.

Which basically reads to me GPL as generally used code will eventually go by the wayside. If legal people won't buy off on it there is no chance I could convince managers to use it. Net result: less GPL used, user/overall freedom reduced. Dunno I don't see the v3 license as being a good thing. Maybe it plugged holes, but it ensured the ship will hit an iceberg in the future.


> I've talked to a few lawyers and they basically > consider GPLv3 a contract that isn't worth bothering with.

Presumably they gave you a reason, along with a sizeable bill?

You seem to have misunderstood the intent of the GNU GPL.

The intent is not to help companies.

The intent is to ensure that users (i.e. us) have continued access to Free Software.

How does the 'anti-tivoization' clause help in that? Imaging you had a device: a TV, a phone, whatever.

It is discovered that the device is actually spying on you; if the device used [1] GNU GPLv3 software you would be entitled to both the source and the keys.

You could then correct this 'mis-feature' and stop the device from spying on you.

If the device used software only under the GNU GPLv2 then you would be entitled to only the source. If the device rejected your attempt to upload new software then too bad.

[1]: A vast over-simplfication, but I hope my point is illustrated.


> I've talked to a few lawyers and they basically consider GPLv3 a contract that isn't worth bothering with.

That isn't a reason. Lawyers don't have magical powers to reason about the business implications of legal documents, the interesting thing they can tell you is how the law will treat the words, e.g. if some part of the document would not be enforceable or would do something you wouldn't have expected from reading it. It would actually be interesting if they said something like that, because that would be a reason. Ask them for a reason. Otherwise it's just FUD.

It is quite obvious that if your intent was to produce a tivoized product then GPLv3 is not your friend, because that was the point. But most people don't want to do that, so why should they care?


Generally the lawyers say the need to divulge keys in hardware is the biggest problem. That's a clear problem for a hardware company trying to secure things.


I guess that depends what you mean by "secure things." If you mean tivoize then no kidding. But what kind of actual security requires the device owner to be unconditionally locked out of the device? It seems to be working as intended.


Backplanes generally that communicate state would be one example. It is mostly things that users shouldn't care about and can easily break things if they try poking about.


I still don't understand why it would be necessary to unconditionally lock the users out. Nobody says you have to encourage them to do it, but why get in their way? If people want to shoot themselves in the foot, it's their foot.


>Apple (IMO, irrationally) refuses to make deals with GPL projects.

That isn't true. Apple actually proposed integrating LLVM into GCC: https://gcc.gnu.org/ml/gcc/2005-11/msg00888.html

Also, I see a lot of people repeating the mistaken idea that Apple are opposed to GPLv3 due to the patent clauses. Even RMS is repeating this[1]. It's not the case: https://news.ycombinator.com/item?id=8868994

[1] http://lists.gnu.org/archive/html/emacs-devel/2015-02/msg004...


Swift will show the LLVM supporters the benefits of its license model.


And that would be exactly what benefit? Proprietary front-end, running on limited number (1) of host systems, producing code for limited number (1) of targets?

Yes, that will show them. /s


I think you missed the sarcasm in the parent post.


You are right.


All this discussion about the GPL being the only way to protect users seems to be ignoring the fact that the GPL is largely irrelevant in the web era. All of us are using proprietary software that contains GPL code every single day. We can't see the code because the GPL has no effect on networked applications.

That seems to be a much more important battle to fight, rather than trying to stop people using GCC for code completion and refactoring in emacs.


Isn't that exactly what AGPL is trying to stop?


None of those web companies will use agpl software.


Well. Lots of them use mongodb though.


mongodb has a licence exception to allow people to use it without releasing the code for the rest of their app: https://news.ycombinator.com/item?id=8966182


Yes, but no-one's using it.


Massive implementations of Odoo/OpenERP in some of the largest corporations and public entities of some countries beg to disagree :)


Nobody cares for those. We're talking at the level of Google YouTube, Facebook etc here.


This is a "No True Scotsman" fallacy.


"No true Scotchman" only applies if someone purposefully constraints the set that he talks about to win an argument, not when he had some typical Scotish qualities in mind in the first place (as opposed to outlier characterists) and merely clarifies that.

Some AGPL installations of a niche software ain't exactly refutation of the parent, unless by "nobody" he meant actually "absolutely 0 people", which I don't think anybody did. Nodody is a stand-in for "not significant numbers".

What percentage of projects announced and featured in HN in the last 5 years use that licence?


It's not worth it reasoning with this guy. I had a very similar situation with this guy. I asked him "are you claiming X", which he said was a strawman, then refused to explain what he was claiming and called me a sockpuppet.

https://news.ycombinator.com/item?id=8940531


man, talk about your sour grapes. two days after the thread was frontpaged, even. anyone that reads the link will see how your post was an obvious strawman. You even finished the thread saying "I'm done". and now you're on an unrelated thread, clearly not being done with it.

Nice to see you again, though.


You're right, I was curious whether it was just me you played the insane game of "pretend what they said is fallacious then when they explain why they're wrong call them an astroturfer".


Seems to be only you, from the looks of my posting history. Perhaps you should have checked there before making an ad hominem?


My post wasn't an ad hominem. You don't know what ad hominem means. And no, it isn't just me, I can see there are many others you add to "your list" and incorrectly call out as being fallacious.

Once again, here is your (incorrect) logical fallacy naming game.


see, now I'm in this for pure entertainment purposes. it's been over a week, and you're still trying to play the "last word" game.

not only is it sour grapes, but you're still making baseless accusations. I was correct about you in the first thread, and your continued participation in this one keeps proving I was correct.


Does anybody remember Laforce Stevens anti-GPL spam circa 2007? Were they contracted by Apple at that time?




Consider applying for YC's first-ever Fall batch! Applications are open till Aug 27.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: