Subject: Cygwin & Microsoft's EULA, was: Re: Dispelling BSD License Misconceptions (fwd)
From: Chuck Swiger <>
Date: Thu, 18 Jan 2007 12:20:42 -0800

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  
becomes a
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,  
and so
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,  
>> including
>> 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: [1]) 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?