Hacker News new | ask | show | jobs
by alanzeino 5220 days ago
While I don't discount that perhaps GPLv3 was in fact the reason Apple broke free; for the most part every talk I've seen an Apple engineer (or Google, since they contribute too) give hasn't mentioned the GPL issue.
5 comments

Back in the day there were rumours that Intel has a gcc fork inhouse, and since it doesn't distribute it, it doesn't need to share it. Basically the same thing that is happening on GOOG apache-linux android etc, only GOOG offers services that do not involve the distribution of their custom GPL fork. AAPL is a platform company, so needs to distribute devkits for their platform, because that made MS powerful in the first place.
Naturally, engineers talk about engineering, not about politics. What the companies think, I do not know. Has anybody ever asked the likes of Apple, Google, or Adobe whether licensing was a decisive factor in choosing to work on LLVM/Clang?

My guess would be that the choice would have gone the same way if gcc were BSD (although then, Clang might have been a gcc fork), but that it did not help that it was GPL, as their lawyers could not guarantee that incorporating GPL in their libraries would be possible without releasing them as GPL. I would not blame them, as there is little jurisprudence related to that issue, and certainly no worldwide agreement.

A lot of Apple's choices come down to preferring an ecosystem under permissive licences. They promote llvm over gcc, tmux over screen and zsh over bash, switched their server distribution from MySQL to PostgreSQL. I'd be surprised if you found examples of them going in the reverse direction.

The more blatant example is the restrictions they impose on code they don't ship: their app store policies make it impossible to distribute GPL code.

> Clang might have been a gcc fork

I feel the most fundamental motivating factor for the llvm project was Clang.

The gcc code generator could be improved, but is fundamentally usable for all things it needs to be used for. But the static analysis that Apple wants to do really is fundamentally incomparable with gcc.

>I feel the most fundamental motivating factor for the llvm project was Clang.

eeh? iirc LLVM precludes Clang by atleast 5 years and LLVM was initially created to replace GCC's backend while using it's frontend (in fact during most of it's lifetime LLVM has relied entirely on GCC as a frontend and it still uses it through the dragonegg GCC plugin).

This is true in actual functionality. But Apple's motivation for contributing to llvm has certainly been to replace the entire gcc toolchain from day one. It was just clear that having a new backend was going to be required to do that, and also a bit easier to implement in the beginning. Apple would have little to no interest in llvm if the plan wasn't to completely replace gcc from the beginning.
>Apple would have little to no interest in llvm if the plan wasn't to completely replace gcc from the beginning.

Sure, I have no doubt that Apple's sponsoring/stewardship of llvm is entirely fueled by them wanting a full toolchain which they can incorporate into their proprietary solutions and Clang is obviously a result of that (it's functionality reflects exactly what Apple want, C, C++ and ObjC support).

That said llvm was already 5 years into the making when Apple came and hired Chris Lattner (one of the original creators of llvm) so they have no say on the initial aim of the project which again was to be a backend replacement for gcc.

I thought it was generally acknowledged that Apple was committed to removing GPL software [1] and was doing everything to avoid GPLv3, even keeping outdated software to avoid it.

[1] https://news.ycombinator.com/item?id=3559990

I guess the reason for Google to start contributing to Clang and using it for their tools is the availability of the frontend. As far as I know the GCC developers made it extra hard to separate the frontend from the compiler because they feared that people would use it on proprietary backends. But this really left us in a situation were for decades people couldn't work on creating amazing static analysis, autocompletion, refactoring tools for C and C++. In the end this decision probably did more damage to the free software movement. GCC now comes with a plugin interface and with the Clang frontend available I hope that this will change quickly.
It could be embarrassing to admit that you're duplicating a huge amount of effort for essentially non-technical reasons.