Explained in other words
Explained in other words
Posted Jul 28, 2009 0:45 UTC (Tue) by gjmarter (guest, #5777)In reply to: Explained in other words by coriordan
Parent article: A new GCC runtime library license snag?
So either the requirement that the complete source must be GPL2 is somewhere else in the license, or the problem is that Sections 1 and/or 2 of GPL2 are incompatible with the GCC license somehow.
Can you shed some light on that?
Posted Jul 28, 2009 0:56 UTC (Tue)
by coriordan (guest, #7544)
[Link] (35 responses)
The problem is section 2b:
b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
So when section 3 says "must be distributed under the terms of Sections 1 and 2 above", section 2b kicks in. And I can't comply
with 2b because I can't make the GCC runtime libraries source code
available under "this License" when "this License" means "GPLv2".
The GCC runtime library exception only solves the problem of
distributing binaries.
Posted Jul 28, 2009 1:23 UTC (Tue)
by JoeBuck (subscriber, #2330)
[Link] (33 responses)
I consider the clause "unless that component itself accompanies the executable" to be a major flaw in GPLv2, and it seems to be the nit. RMS wasn't thinking of entirely-free OSes when he wrote that; he was thinking of proprietary OSes throwing the kitchen sink into "system libraries" and shipping them separately to go with GNU software, I think.
The claim is that the violation happens if a distro includes git and
the libgcc runtime on the same disk. Note that there's no violation
if you download git as a .deb or RPM.
Maybe the workaround is for git and similar GPLv2-only projects to change their license. Say that the license is GPLv2, except that the phrase "unless that component itself accompanies the executable" is considered to be removed.
Posted Jul 28, 2009 1:47 UTC (Tue)
by gdt (subscriber, #6284)
[Link] (21 responses)
Maybe the workaround is for git and similar GPLv2-only projects to change their license. That depends who holds the copyright. In some important projects there is no copyright assignment. In those projects to alter the license you need to find all of the authors (and perhaps their employers, their estates, their divorced partners, their major creditors) and obtain their agreement to the change. People in these comments find it difficult to even understand the licensing problem, so the motivation for the massive amount of work to obtain the permission of many people for a license change doesn't seem likely. Even then, all it takes is a significant contributor to say "no".
Posted Jul 28, 2009 2:00 UTC (Tue)
by JoeBuck (subscriber, #2330)
[Link] (20 responses)
Posted Jul 28, 2009 2:10 UTC (Tue)
by dlang (guest, #313)
[Link] (19 responses)
question: before the most recent change to the runtime exception, did it have the same problem with the GPLv2, or is this a result of the new language put in to try and block proprietary GCC modules?
Posted Jul 28, 2009 3:55 UTC (Tue)
by JoeBuck (subscriber, #2330)
[Link]
Posted Jul 28, 2009 16:54 UTC (Tue)
by khim (subscriber, #9252)
[Link] (17 responses)
This is result of switch to GPLv3. And it's pretty unlikely FSF will go
back on that change. You can tweak exception as much as you want - it'll not
fix the problem. The only solution is to offer libgcc under "GPLv2 or later"
terms and clearly FSF don't like this solution - it wants to drop GPLv2
altogether.
Posted Aug 1, 2009 23:26 UTC (Sat)
by cas (guest, #52554)
[Link] (16 responses)
no, that's NOT the only solution. it's not even the right solution, or even one of the right solutions.
the problem is with git, not with gcc.
if git wants to make use of the gcc runtime code, then it is up to git to have a compatible license. it can do that by switching to GPL v3 or by adding an explicit extra permission to its license allowing it to be linked to and distributed with GPL v3 code.
This kind of extra permission is NOT at all unusual with GPL code or software that links to GPL code. e.g. I remember several years back that many Qt & KDE programs had to have extra permission because the Qt license at that time was not quite GPL compatible.
Posted Aug 2, 2009 0:56 UTC (Sun)
by dlang (guest, #313)
[Link] (6 responses)
Posted Aug 2, 2009 4:58 UTC (Sun)
by khim (subscriber, #9252)
[Link] (4 responses)
Have you read the GPLv2 license? It has separate paragraph dedicated to
this this problem: If authors of Git ignored cautions embedded in
the
very text of the license they are using - then how the hell can you blame
anyone else? Git authors knew the license will be changed - it's
written in the text of the license attached to Git. They knew how to
avoid troubles - again, it's written in the very text of the license
attached to Git. They chosen to ignore all this - it's their right, FSF
gave this right to him (unlike MPL or CC licenses GPL does not have
autoupdate option embedded in the license itself), but the consequences of
their choice are theirs to
resolve... And the license does not make it easier to ship proprietary programs -
if proprietary license include linking-prohibition similar to GPLv2 it can
not be used will GCC also... So no, it's hard to blame FSF here: they thought about the problem 18
years ago, they offered the solution back then - but Git authors rejected
the solution. That's the problem.
Posted Aug 6, 2009 10:23 UTC (Thu)
by SEMW (guest, #52697)
[Link] (3 responses)
Posted Aug 9, 2009 12:08 UTC (Sun)
by khim (subscriber, #9252)
[Link] (2 responses)
Yes this is what millions of authors do every single time they release
something. Some licenses don't even include opt-out - like widely used
Creative Commons licenses, for example. If Git developers don't like to delegate legal problems to FSF they should
solve them themselves, don't you think? If they are big enough to ignore
advice (included in the text of license they selected, no less!) they
should be big enough to deal with fallout...
Posted Aug 12, 2009 12:26 UTC (Wed)
by SEMW (guest, #52697)
[Link] (1 responses)
I've just skimmed through several sample creative commons licenses, and can't see any "or later version" clauses, let alone mandatory ones. The page for all licenses before the current one even explicitely say "A new version of this license is available. ... No works are automatically put under the new license...". Are you sure you're not mistaken?
> If they are big enough to ignore advice (included in the text of license they selected, no less!) they should be big enough to deal with fallout...
Are you suggesting that anyone -- the git authors, Debian, the FSF, whoever -- knew about this before very recently? If you're saying that this side-effect was known when the git authors chose the license, then say so explicitly; the article certainly does not give that impression (and even explicitly says that, in the FSF's case, "This is a perverse result that, probably, was not envisioned or desired...").
Posted Aug 14, 2009 10:37 UTC (Fri)
by khim (subscriber, #9252)
[Link]
Is this a joke? Have you read the legal
code? Version upgrade is emebedded in the text of the license and it's not an
option. Sure, you can not change the license for original work, but should
you add one line to it... you are free to upgrade. Kind of. FSF knew about the problem in general back in 1991 - that's why
it included paragraph
9 in first place. Then some people decided that they
don't trust FSF enough to allow combining of their code with FSF's code
released under new GPLv3 (and later) licenses. Fair enough - but then
obviously they are the only ones who can say if libgcc's code is Ok with
them or not. If they knew nothing about licensing and ramifications then
why they fiddled around with this stuff?
Posted Aug 2, 2009 11:17 UTC (Sun)
by xoddam (subscriber, #2322)
[Link]
The Linux Kernel, version 2.6, warns its users that kernel-internal APIs may be revised from time to time for technical reasons (and for the purpose of removing cruft in the kernel) in the file Documentation/stable_api_nonsense.txt.
The GPL, version 2, wants its users that the licence text may be revised from time to time for legal reasons (and for the purpose of advancing free software) in its paragraph 9 (it's Paragraph 14 of version 3).
But it's the Linux kernel developers, and fellow travellers like the Git and Busybox developers, who have chosen not to support version 3 of the GPL.
It's a bit like a vendor of commodity hardware (say, a GPU) whose driver is not yet in-tree deciding they will never, ever support Linux kernel APIs after some API change made in kernel version 2.6.29. That's their choice. But *someone* will want to use that hardware with a later kernel, so *somehow*, the incompatibility will be resolved by someone who cares.
Posted Aug 2, 2009 8:27 UTC (Sun)
by nix (subscriber, #2304)
[Link] (5 responses)
What you're saying is 'if you want to be compiled with compiler X, you
This seems seriously skewy to me.
Why can't the FSF take a leaf from Bison (again)?
Posted Aug 3, 2009 10:51 UTC (Mon)
by khim (subscriber, #9252)
[Link] (4 responses)
ICC does not have this problem since it's not distributed with Git. Me too, but that's what the license says... Huh? They did. Bison has the same problem GCC does. The only difference
lies in the fact that Git does not use Bison.
Posted Aug 3, 2009 22:34 UTC (Mon)
by nix (subscriber, #2304)
[Link] (3 responses)
That you're even asking this question indicates that you've completely
Posted Aug 4, 2009 8:26 UTC (Tue)
by khim (subscriber, #9252)
[Link] (2 responses)
Yes. And still ICC does not have a problem where GCC does. Why? Because
ICC's license forbids distribution (runtime libraries can be redistributed
while ICC itself can not) and so ICC is not distributed on the same
medium as git! This fits the GPL exception to a tee: However, as a
special exception, the source code distributed need not include anything
that is normally distributed (in either source or binary form) with the
major components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies the
executable. Yes, but it does not change the fact that parts of libgcc ends up in git
executable. GPL gives no exception for "compiler-inserted calls", instead
it gives exception for "anything that is normally distributed (in either
source or binary form) with the major components (compiler, kernel, and so
on) of the operating system on which the executable runs" - but this
exception is not valid if "that component itself accompanies the
executable". GCC accompanies the executable while ICC does not - that's
why we have problem with GCC, but not with ICC. Since these parts are
needed to recreate binary they are part of the "complete machine-readable
copy of the corresponding source code" and now the question is: must these
parts be distributed under GPLv2 or do they fall under "special
exception". If they fall under exception then Git can be redistributed
with GCC for sure, if not - then you can not redistribute Git and GCC on
the same medium. Only copyright holder of git can clear this confusion and
FSF is not Git's copyright holder so I can not understand why eveyone waits
for FSF's response...
Posted Aug 4, 2009 21:05 UTC (Tue)
by nix (subscriber, #2304)
[Link]
*sigh*
Posted Aug 7, 2009 13:27 UTC (Fri)
by DOT (subscriber, #58786)
[Link]
Posted Aug 6, 2009 5:57 UTC (Thu)
by lysse (guest, #3190)
[Link] (2 responses)
Aside from finding the idea of a C compiler requiring a runtime library slightly strange, presumably git doesn't particularly care which runtime code it makes use of? In which case, surely the appropriate thing for git to do is incorporate a copy of the last GPL2+-licensed version of libgcc into their own codebase, optionally customise it to suit, and simply compile with whatever option says "no default runtime, please" in future?
Or am I missing something here...?
Posted Aug 6, 2009 8:08 UTC (Thu)
by johill (subscriber, #25196)
[Link]
Yes. It's not feasible to maintain thousands of packages that way, and makes no sense technically either -- improvements of the runtime lib would never make it into that program, etc.
Posted Aug 7, 2009 23:17 UTC (Fri)
by nix (subscriber, #2304)
[Link]
The compiler generates the calls into this library as it sees fit, and
Posted Jul 28, 2009 7:47 UTC (Tue)
by mjw (subscriber, #16740)
[Link] (9 responses)
So, it would be good to get this explicit clarification somewhere on gcc.gnu.org.
Posted Jul 28, 2009 8:32 UTC (Tue)
by epa (subscriber, #39769)
[Link] (8 responses)
Posted Jul 28, 2009 9:09 UTC (Tue)
by mjw (subscriber, #16740)
[Link] (7 responses)
What seems to be happening is that instead of taking these as clarifications of the intent of v2, they are taken as some kind of fatal flaws in the old text. Instead of taking v3 and using it as a guide to the intend of v2.
Things would be much easier if people saw v3 as just a clarification of the text and intent of what v2 always already was about.
Posted Jul 28, 2009 12:10 UTC (Tue)
by epa (subscriber, #39769)
[Link] (6 responses)
Posted Jul 28, 2009 12:25 UTC (Tue)
by mjw (subscriber, #16740)
[Link] (4 responses)
Posted Jul 28, 2009 20:07 UTC (Tue)
by epa (subscriber, #39769)
[Link] (3 responses)
Posted Jul 28, 2009 20:12 UTC (Tue)
by hppnq (guest, #14462)
[Link]
Posted Jul 29, 2009 8:07 UTC (Wed)
by mjw (subscriber, #16740)
[Link] (1 responses)
IMHO, unless a copyright holder explicitly tells you to ignore the stated intent of the license drafter, you can safely ignore that possibility.
Posted Jul 29, 2009 17:54 UTC (Wed)
by dlang (guest, #313)
[Link]
Posted Jul 28, 2009 21:08 UTC (Tue)
by kleptog (subscriber, #1183)
[Link]
It basically all it means is that all constituent parts must meet *at least* the requirements of the GPL2 but it may grant more rights. The problem being that whatever GCC is doing grants less.
Messy, but I'm not sure if there's any easy solution here (other than the FSF blinking).
Posted Aug 1, 2009 23:14 UTC (Sat)
by cas (guest, #52554)
[Link]
easily fixed in a hypothetical GPL v2.1, or in an addition to the git license:
"... unless that component itself accompanies the executable AND is not licensed with a Copyleft-style license such as the GPL v3 or any compatible Free Software license"
or making it a new sentence might make it clearer/less clumsy:
"... unless that component itself accompanies the executable. This exception does not apply if the component is licensed with a Copyleft-style license such as the GPL v3 or any compatible Free Software license".
> Say that the license is GPLv2, except that the phrase "unless that
there's a reason for that exception. it's to prevent people from subverting the intent of the GPL and merging it with proprietary code by claiming that they are merely aggregating the work.
Posted Jul 29, 2009 10:29 UTC (Wed)
by mjthayer (guest, #39183)
[Link]
I am assuming that the distributions have local changes to the code, otherwise they can distribute under the terms of section 1, which are more liberal than 2b. This seems to come down to the question of whether the runtime library counts as part of the derived work. Section 3 seems to require the source to the runtime to be included (mandated by both sections 1 and 2). However, if the runtime is not part of the derived work, then the terms of section 1 seem to be sufficient.
IANAL should be implicit in licence discussions unless stated otherwise :)
Explained in other words
GPLv2 states:
but there is an exception
However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.
What this means is that your git distribution is completely legal: the gcc runtime library is a major component of the operating system on which the executable runs (even for non-GNU systems, the compiler counts as a major component). Or, almost ...
Finding copyright holders
It works both ways; getting a change to the runtime library exception terms, if it's decided that this is what is needed, is also going to be an extremely laborious process.
Finding copyright holders
Finding copyright holders
The original idea was that the runtime license would just become GPLv3 plus the exception that was there before, but this was delayed while the plugin language was worked out. It's possible that even without the plugin language there would be an issue, because GPLv2 is quite restrictive.
Finding copyright holders
No, that's not the plugin exception...
Before the most recent change to the runtime exception, did it
have the same problem with the GPLv2, or is this a result of the new language
put in to try and block proprietary GCC modules?
No, that's not the plugin exception...
> clearly FSF don't like this solution - it wants to drop GPLv2 altogether
No, that's not the plugin exception...
Who to blame?
9. The Free Software Foundation may publish
revised and/or new versions of the General Public License from time to
time.
Such new versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later
version", you have the option of following the terms and conditions either
of
that version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of this
License,
you may choose any version ever published by the Free Software
Foundation.Who to blame?
It's not exactly blank cheque
It's not exactly blank cheque
> even include opt-out - like widely used Creative Commons licenses, for example.
Have you actully read the license?
I've just skimmed through several sample creative commons
licenses, and can't see any "or later version" clauses, let alone mandatory
ones.
You may Distribute or Publicly Perform an Adaptation only under
the terms of: (i) this License; (ii) a later version of this License with
the same License Elements as this License; (iii) a Creative Commons
jurisdiction license (either this or a later license version) that contains
the same License Elements as this License (e.g., Attribution-ShareAlike 3.0
US)); (iv) a Creative Commons Compatible License.
Are you suggesting that anyone -- the git authors, Debian, the
FSF, whoever -- knew about this before very recently?
Stable copyleft licence nonsense
No, that's not the plugin exception...
GCC. All git did was be written in C.
have to adjust your license to fit'. Several major Linux compilers (icc
and GCC, for instance), have incompatible licenses, so you're saying that
it should be impossible to have any program on Linux which can be compiled
with both compilers and the binary then distributed.
No, that's not the plugin exception...
What you're saying is 'if you want to be compiled with compiler
X, you have to adjust your license to fit'. Several major Linux compilers
(icc and GCC, for instance), have incompatible licenses, so you're saying
that it should be impossible to have any program on Linux which can be
compiled with both compilers and the binary then distributed.
This seems seriously skewy to me.
Why can't the FSF take a leaf from Bison (again)?
No, that's not the plugin exception...
binaries* if git binaries compiled with ICC are distributed, in *exactly*
the same way as libgcc is incorporated into git binaries.
failed to grasp the problem, and indeed the rationale for a special
license for libgcc :( nobody is worried about someone distributing source
for libgcc along with Git, and Git does not intentionally call into
libgcc. The *compiler* inserts calls to libgcc into the object file, and
this is then resolved by linking with libgcc. libgcc is necessarily
GCC-specific: ICC uses something different.
No, that's not the plugin exception...
ICC's *runtime libraries* are distributed with (incorporated
into) *git binaries* if git binaries compiled with ICC are distributed, in
*exactly* the same way as libgcc is incorporated into git
binaries.
The *compiler* inserts calls to libgcc into the object file,
and this is then resolved by linking with libgcc.
No, that's not the plugin exception...
missed that.
Does the ICC runtime library allow for relicensing under GPL version 2? That's what needs to happen for the problem to go away. The component that needs to fall under the exception is the ICC runtime library. But that code is injected into the program at compilation time. So that component accompanies the executable, which means it doesn't fall under the exception. Therefore, the ICC runtime library needs to be 1) open source, and 2) licensed under the GPL version 2. I don't believe that is the case, so Git -- compiled with any recent compiler -- cannot be legally distributed.
No, that's not the plugin exception...
No, that's not the plugin exception...
No, that's not the plugin exception...
No, that's not the plugin exception...
calls (e.g. long long maths on 32-bit systems); there is the startup code
(on Linux a complex dance of cooperation between GCC and glibc); and there
are things like binary decimal support, which has a sizeable runtime
library. There are even more nasty things like C++ exception handling,
which if it is to work across shared library boundaries needs shared data
structures and shared code to touch those data structures. (You might
think this is irrelevant to C, but C++ code can throw across C function
calls with GCC, as long as the C translation units were compiled
with -fexceptions: the relevant parts of the unwinding machinery are thus
in the C runtime library, not in the C++ one.)
links the library to the object files it generates. It's completely
compiler-dependent and often compiler-version-dependent too (although for
obvious reasons backward compatibility is very strictly maintained).
I think this is the right interpretation of the "nit". There was a similar uncertainty about OpenSolaris, which mainly uses the GPL-incompatbile, but free, CDDL license. Which apparently Eben Moglen clarified:
but there is an exception to the exceptiuon
During the discussion, Eben Moglen took special care to assert
that he always believed the GPL v2 should be interpreted in the way
GPL v3 now makes explicit - it was never the intent to prevent
aggregation of otherwise unrelated code because of the GPL being
triggered just because a system function or C runtime was invoked. I
found that clarification especially valuable.
http://www.opensolaris.org/jive/thread.jspa?messageID=21134&h;#21134
Applies to any copyleft licence
Applies to any copyleft licence
Applies to any copyleft licence
Applies to any copyleft licence
Applies to any copyleft licence
One has to assume that the intent of the person who choose the license was to try and understand the intent of the person who wrote it. ;-)
Applies to any copyleft licence
Applies to any copyleft licence
Applies to any copyleft licence
Applies to any copyleft licence
but there is an exception
> [...]
> RMS wasn't thinking of entirely-free OSes when he wrote that;
> component itself accompanies the executable" is considered to be removed.
Explained in other words
>
>b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.