Cygwin & Microsoft's EULA, was: Re: Dispelling BSD License Misconceptions (fwd)
chuck at codefab.com
Thu Jan 18 20:20:42 UTC 2007
On Jan 17, 2007, at 7:02 PM, Matthew Flaschen wrote:
[ ...earlier portions of the thread reformatted to avoid deeply-
nested quotes... ]
CS> Just because a program calls printf() does not mean that it
CS> derivative work of GNU libc when dynamically linked on a Linux
CS> any more than that same exact same program source code becomes a
CS> derivative work of the original C library on a BSD platform, of
CS> Microsoft's Visual-C++ DLLs when dynamically linked on Windows,
CS> forth for every platform that supports an ANSI-C library.
MF> I think Microsoft's EULA for these DLLs would offer a very different
MF> interpretation of copyright law. I think all of these licenses
MF> derivative works, and this has blinded you to the fact that they
MF> restrict them.
CS> If your position is correct, would you care to explain how Cygwin
CS> redistributes GPL-licensed software compiled for Windows without
CS> afoul of the GPL-immiscibility of the Microsoft EULAs?
MF> I think the EULAs allow derivatives to be distributed under any
MF> as long as the DLLs themselves are not distributed.
>> Absolutely not; this isn't a matter where you have to guess, go to:
>> ...and choose your favorite version of Visual Studio. One version of
>> the EULA states:
[ ...Microsoft EULA snipped for brevity... ]
>> You can't mix this EULA with the GPL under any circumstances,
>> the exception mentioned in GPL #3.
> Why not? I think this exception ensures the DLLs wouldn't fall under
> the GPL; thus neither i or ii should be violated.
Microsoft EULA's not only impose many additional constraints which
are not GPL-miscible, the M$ EULA explicitly forbid one to create a
derivative work of "Redistributable Code - Visual C++: Microsoft
Foundation Classes (MFC), Active Template Libraries (ATL), and C
runtimes (CRTs)" in conjunction with an "Excluded License", which the
GPL obviously is.
Your position is (or was) that a program which dynamically links
against the standard C library constitutes a derivative work of the
standard C library; if your position is correct, then Cygwin
constitutes a derivative work of both the Windows DLLs which it loads
and Cygwin's GPL'ed source code. However, Cygwin could not be
redistributed unless it complied with both the terms of the GPL
(which most of Cygwin is under, see: ) and the appropriate
Microsoft EULA for the platform; which would not be possible since
the two licenses are not miscible.
It's conceivable that the portions of Cygwin which invoke Win32 APIs
are not under the GPL, but exist as a "shim" to connect the Microsoft
specific code with Cygwin's GPL'ed internals. However, notice that
this approach is precisely the same that nVidia's proprietary drivers
do in order to produce a Linux kernel module.
Why is it OK for Cygwin to use a shim to dynamically link against
Windows DLLs and redistribute the result, but not OK for nVidia to do
the same when linking against the Linux kernel?
More information about the License-discuss