TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
Posted May 24, 2014 19:44 UTC (Sat) by jb.1234abcd (guest, #95827)In reply to: TechView: Linus Torvalds, Inventor of Linux (Huffington Post) by simlo
Parent article: TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
> the movement among some people in the BSD camp spending a lot of efford
> replacing GPL'ed components with BSD licensed components just because
> they are GPL. That is not a constructive behaviour.
> To support LLVM in the BSD camp because they want to get rid of a GPLv3
> compiler in their distribution, and not because LLVM is a technical
> better compiler, I simply can not understand from rational and practical
> arguments. The GPL is isolated to the compiler itself, not the whole
> distribution.
I think you should have followed LLVM v GPL discussion at the time FreeBSD
adopted LLVM.
The reasons for dropping gcc were:
- gcc switched to GPLv3 licence, which is more restrictive (gcc-4.2 was
the last compiler with GPLv2).
The gcc-compiled binaries can not be licensed freely under any licence
you like (binaries will be linked against libraries which are part of
the compiler, and the viral nature of GPLv3 means that the resulting
programs have to be licensed under GPLv3).
- clang has more modular architecture that is easier to develop and extend
- clang has better debugging and diagnostics, both for users and compiler
devs
- clang has fewer extensions (and even these could be less necessary).
Gcc has accumulated many "extensions" - many were/are there for a reason,
many can be ignored or turned off (however, doing so breaks various
programs either when building or running)
- also, the libstdc++ library that is GPLv3 licenced was removed and
replaced
LLVM v GPLv3 questions have not been decided in court (if ever), so any responsible dev or business should stay away from it.
Even if so, in which court ? Of which jurisdiction?
Even if one jurisdiction says something it doesn't mean all other countries would agree.
So the only answer a lawyer can give you is "nobody knows".
So businesses are rightfully justified in being fearful of GPLv3-covered
code and the output of GPLv3-covered compilers (like gcc).
Posted May 24, 2014 21:42 UTC (Sat)
by madscientist (subscriber, #16861)
[Link] (15 responses)
That is completely false. All the libraries that are part of the compiler have special exceptions which allow them to be used in proprietary programs as a result of being built with GCC/binutils. In fact, virtually every Linux distribution comes with a compiler which is GPLv3 licensed (GCC 4.2 is very old now), and proprietary programs created with these compilers are distributed every single day.
If that weren't the case then no one could have created binaries with older versions of GCC either: there's no significant difference in the amount of "viral-ness" in this respect between GPLv2 and GPLv3.
There are zero licensing restrictions on binaries created with any version of GCC, including the latest ones, unless you do something very unusual like modify GCC's internal libraries.
Posted May 24, 2014 22:21 UTC (Sat)
by jb.1234abcd (guest, #95827)
[Link] (14 responses)
Yes, we are aware of it:
Also:
Posted May 24, 2014 23:47 UTC (Sat)
by madscientist (subscriber, #16861)
[Link] (13 responses)
I have no opinion on whether anonymous "people" want to "get involved" or not, or what they feel about "clear separation between GPL and BSD" (is there any other sort of separation? I'm not sure what this is supposed to mean).
I'm commenting your 100% wrong assertion that "The gcc-compiled binaries can not be licensed freely under any licence you like". That is a factually incorrect statement.
The FSF (which as you're probably aware is the sole copyright owner for GCC and as such is the only entity with standing to initiate legal action for copyright infringement) has placed a legally binding exemption to the GPL into the software. They have further provided a "simple English" statement as to what they believe and intend the exemption to mean. What you think it means, or I think it means, or even what lawyers or the courts think it means is totally irrelevant unless the FSF initiates a legal action, and they've made clear that they don't consider compiling programs with GCC and distributing them under a license which is not compatible with the GPL (any version) to be infringement of GCC's copyright.
And if you don't trust me then note that, as I pointed out, companies with far more to lose, and with some of the most savvy and risk-averse legal teams around, have no problem distributing proprietary programs built with GCC.
> Finally, GCC is GPL version 3 licensed, which requires developers who
This is clearly true, and in fact actually intended and expected. That's the entire point of HAVING the GPL, regardless of version: this objection was just as true with the GPLv2; where were all the complaints then? Oh yes, it wasn't until the increased patent protections were added in GPLv3 that "people" seemed to get upset...
However, although that is a true statement it is absolutely irrelevant for this discussion.
Posted May 25, 2014 1:37 UTC (Sun)
by khim (subscriber, #9252)
[Link] (3 responses)
Yes, sure. I'll show you. Right. It's Ok to distribute a program linked to libstdc++.so because of Runtime Library Exception. It says quite clearly that You have permission to propagate a work of Target Code formed by combining the Runtime Library with Independent Modules, even if such propagation would otherwise violate the terms of GPLv3, provided that all Target Code was generated by Eligible Compilation Processes. But what about libstdc++.so itself? When you distribute it you distribute something build not from combination of Runtime Library and Independent Modules, but something built solely from sources of the Runtime Library! Exception is not in play and pure GPL applies. Which, as we all know, includes anti-Tivozation clause. Which means that BSD OS with libstdc++.so included is affected by GPLv3: one must provide a way to replace libstdc++.so on the device because that's requirement of GPLv3 and Runtime Library Exception is not in play. Does it look like The GPL is isolated to the compiler itself, not the whole distribution? I think not. One could cope with this problem by refusing to provide libstdc++.so (that's how Android solves this problem, e.g.), but it's clearly simpler and more robust to not ship libdtc++ at all and use libc++. Which implies LLVM.
Posted May 26, 2014 14:41 UTC (Mon)
by andza (guest, #72692)
[Link] (1 responses)
Posted May 26, 2014 22:45 UTC (Mon)
by simlo (guest, #10866)
[Link]
I understand that FSF want to avoid that people lock down devices with crypto. But I have a problem with mandating to document a way to update the GPLv3 parts:
A typical practice within embedded is to make a complete filesystem image including GPL'ed and non-GPL'ed parts and mount it read-only. The only way to update the system is to update the full image, through a very specific upload procedure, for instance via a USB stick or via ftp.
Or the user shall be able to build his own image and from the bits already on the device + the newly build libstdc++.so.
Neither solution are practical for the device manufactures - which might be some small company making a small Linux device, it does not have to be a big phone company.
I would prefer that FSF softenes the language, such that it shall be forbidden to make obstacles to updating GPL parts by using crypto or checksums to avoid booting the modified software, but not mandating that there should be an manual for how to update it.
PS. I work with embedded Linux, but it does not fall under "User Products", so I am not worried about it.
Posted May 27, 2014 11:59 UTC (Tue)
by madscientist (subscriber, #16861)
[Link]
You are arguing a straw-man here. I made no comments about "whole distributions". Yes, it's true that even though GCC's license doesn't apply to your binary that doesn't mean you can distribute libstdc++.so itself without obeying its licensing restrictions, which are GPLv3. But, that has no relationship to what the original poster claimed, and what I was replying to, which was:
> The gcc-compiled binaries can not be licensed freely under any licence
However, regarding your issue you have these options: either don't distribute libstdc++.so yourself and rely on the distribution to provide it (that's what virtually all GNU/Linux proprietary programs do), or distribute libstdc++.so yourself and obey the licensing restrictions for that library (which still do not apply to your binary, and are not more onerous than GPLv2 except in very specific circumstances where things like TiVo-ization come into play), or don't distribute libstdc++.so as an independent library (that is, statically link libstdc++.a).
Posted May 25, 2014 8:13 UTC (Sun)
by jb.1234abcd (guest, #95827)
[Link] (8 responses)
> This is clearly true, and in fact actually intended and expected. That's
Let me ask this question.
Additional Ref:
Proprietary loadable kernel modules
Has Bionic stepped over the GPL line?
Posted May 25, 2014 9:29 UTC (Sun)
by khim (subscriber, #9252)
[Link] (4 responses)
Because GCC Runtime Library Exception is structured that way. You can create a proprietary extension for GCC, but then you'll be forced to replace libgcc and libstdc++ with something else. Doable, but… switching to LLVM is easier.
Posted May 25, 2014 10:14 UTC (Sun)
by jb.1234abcd (guest, #95827)
[Link] (3 responses)
You have permission to propagate a work of Target Code formed by
Why is the GPL requirement for source code availability enforced in case of
Posted May 25, 2014 13:06 UTC (Sun)
by simlo (guest, #10866)
[Link] (2 responses)
GPLv2 does not allow distribution of Linux kernel modules along with the kernel. But I am free to download what ever code and load into the kernel on my machine, but if I give my machine away I would violate GPL. But due to the kernel community's weaker interpretation it is not enforced.
Posted May 25, 2014 14:36 UTC (Sun)
by khim (subscriber, #9252)
[Link] (1 responses)
Libraries themselves are GPLv3+, not LGPLv3+ (there are some LGPLv3+ libraries in package, but the main ones: ligcc and libstdc++—are GPLv3+). And since bits and pieces are embedded into the executable without this exception you'll not be able to build anything except for GPLv3+ programs. As I've said before: technically speaking, propriatery exceptions are not forbidden—but you could only use them to compile GPLv3+ programs. There are FAQ which explain how that works in more details.
Posted May 27, 2014 12:27 UTC (Tue)
by madscientist (subscriber, #16861)
[Link]
If you don't use proprietary extensions to GCC when you create your binary then the program is not subject to the GPL, as we've been discussing.
And yes, one of the main goals of the exception clause (the reason it's so complicated) is that the FSF wants to specifically not allow (or at least make infeasible) using proprietary extensions with GCC. If you want to add proprietary extensions to your compiler then by all means, you should be using LLVM. I believe this is a loss for free software, but obviously others disagree.
Posted May 27, 2014 12:20 UTC (Tue)
by madscientist (subscriber, #16861)
[Link] (2 responses)
The shortest answer is, because the FSF and Linus interpret things differently. That's why my previous point about licensing only mattering if someone actually takes legal action is important.
Although the Linux kernel has thousands of copyright holders, with (sometimes wildly) diverging views on how the GPL applies to proprietary modules (for example, there are kernel developers who _do_ believe that all kernel modules must be distributed under the GPL), all Linux copyright holders seem content to go along with Linus's interpretation, which is (as I understand it) that if your kernel module only uses a particular set of well-defined APIs, then it is actually not a derived work of the kernel and so the GPL (as a copyright license) cannot legally apply to it.
If the FSF were the copyright holder to the Linux kernel it's likely that they'd interpret this differently and either completely disallow proprietary modules or else feel compelled to publish a specific, legal exception clause allowing them in particular situations, as they do with GCC's libraries.
Posted May 27, 2014 12:57 UTC (Tue)
by jb.1234abcd (guest, #95827)
[Link] (1 responses)
Considering the above w/r to "uses a particular set of well-defined APIs",
Ref:
Posted May 27, 2014 13:16 UTC (Tue)
by Cyberax (✭ supporter ✭, #52523)
[Link]
Linus and other developers have always stated that the kernel GPL does NOT cross into userspace.
Posted May 26, 2014 21:49 UTC (Mon)
by jwakely (subscriber, #60262)
[Link] (3 responses)
You're wrong.
Posted May 27, 2014 1:11 UTC (Tue)
by raven667 (subscriber, #5198)
[Link] (2 responses)
Posted May 27, 2014 8:26 UTC (Tue)
by khim (subscriber, #9252)
[Link] (1 responses)
Posted May 27, 2014 10:42 UTC (Tue)
by raven667 (subscriber, #5198)
[Link]
Aren't you saying the same thing I am saying, that if you include GPLv3 software on a firmware image that the hardware must then allow for user-created firmware images to be installed where at least the GPLv3 software may be modified in that image.
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
> you like (binaries will be linked against libraries which are part of
> the compiler, and the viral nature of GPLv3 means that the resulting
> programs have to be licensed under GPLv3).
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
> which allow them to be used in proprietary programs as a result of being
> built with GCC/binutils.
http://www.gnu.org/licenses/gcc-exception-faq.html
Despite that (subject to interpretation by lawyers - see my previous post) many people do not want to get involved. They want to have a clear separation between GPL and BSD (or others).
http://en.wikipedia.org/wiki/Clang
"Finally, GCC is GPL version 3 licensed, which requires developers who distribute extensions for (or modified versions of) GCC to make their source code available, whereas LLVM has a BSD-like license[10] which permits including the source into proprietary software."
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
> distribute extensions for (or modified versions of) GCC to make their
> source code available
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
I have no opinion on whether anonymous "people" want to "get involved" or not, or what they feel about "clear separation between GPL and BSD" (is there any other sort of separation? I'm not sure what this is supposed to mean).
What you think it means, or I think it means, or even what lawyers or the courts think it means is totally irrelevant unless the FSF initiates a legal action, and they've made clear that they don't consider compiling programs with GCC and distributing them under a license which is not compatible with the GPL (any version) to be infringement of GCC's copyright.
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
Now if the user wants to update libstdc++.so, either some kind of ftp, scp access have to be given to the user, the system needs to be mounted rw. The hardware might even not support that.
The way "device hackers" would be able to update it as they would for a non-crypted GPLv2 device, but not normal persons.
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
> not the whole distribution? I think not.
> you like (binaries will be linked against libraries which are part of
> the compiler, and the viral nature of GPLv3 means that the resulting
> programs have to be licensed under GPLv3).
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
> distribute extensions for (or modified versions of) GCC to make their
> source code available
> the entire point of HAVING the GPL, regardless of version: this
> objection was just as true with the GPLv2; ...
What is the difference, from GPL point of view, between a proprietary
module added to GPLv2-licensed Linux kernel, and an extension added to
GPLv2/v3-licensed gcc, both compiled with GPLv2/v3-licensed gcc ?
My understanding is that both are "extensions". Then why they are treated
differently ?
http://lwn.net/Articles/434491/
http://lwn.net/Articles/434318/
...
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
What is the difference, from GPL point of view, between a proprietary module added to GPLv2-licensed Linux kernel, and an extension added to GPLv2/v3-licensed gcc, both compiled with GPLv2/v3-licensed gcc ? My understanding is that both are "extensions". Then why they are treated differently ?
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
...
1. Grant of Additional Permission.
combining the Runtime Library with Independent Modules, even if such
propagation would otherwise violate the terms of GPLv3, provided that
all Target Code was generated by Eligible Compilation Processes. You
may then convey such a combination under terms of your choice,
consistent with the licensing of the Independent Modules.
...
a gcc extension but not close-source proprietary kernel module ?
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
> module added to GPLv2-licensed Linux kernel, and an extension added to
> GPLv2/v3-licensed gcc, both compiled with GPLv2/v3-licensed gcc ?
> My understanding is that both are "extensions". Then why they are treated
> differently ?
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
is then, by analogy, Google Android's Bionic libc free from violating Linux
kernel's GPLv2 ?
http://lwn.net/Articles/434318/
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
That's very strange fantasy but some legal departments imagine that it's true and forbid use of GPLv3 software on that basis. You must be able to replace GPLv3 parts of the image, but it says nothing about the rest. Even more, GPLv3 quite explicitly says access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. If network in question whitelists all versions of binaries which could be used on it (presumably for security reasons) then it's Ok as far as GPLv3 is concerned.
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)
TechView: Linus Torvalds, Inventor of Linux (Huffington Post)