[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: README.woe32, GPL, and the Win32 binaries

From: Kenneth J. Davis
Subject: Re: README.woe32, GPL, and the Win32 binaries
Date: Wed, 14 Jan 2004 09:58:27 -0500 (Eastern Standard Time)

This is my take of your view:

It is my understanding that the only portion of the GPL that allows the
distribution of a GPL'd program to omit source for certain portions is this

"The source code for a work means the preferred form of the work for making
modifications to it.  For an executable work, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the executable.  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."

The key point being that source does not have to be provided for for
_anything_ that is a major component of the OS.  This does not state the
component must be shipped with the OS, only that it is a component _of_ the
OS.  It also further gives examples of these components to include

BH> msvcrt.dll is not the same thing because it is usually distributed with
BH> Windows. Whether that includes old Windows95, is not relevant.
BH> > Do you not consider the crtlib to be normally distributed
BH> > with MSVC or is MSVC [a compiler] not a major component on Win32 
BH> The crtlib _is_ distributed with every Windows installation, therefore the
BH> GPL's exception applies to binaries that link to it.
BH> MSVC is not a part of Windows; you have to pay extra for it.

Your views seem to indicate you believe linking with MSVCRT.DLL is ok only
when it is shipped with the OS, and linking with MSVCR70.DLL is not ok ever
(unless  a future version of Windows happens to ship with it) and that
linking with MSVCRT.DLL for the purpose of a program to run on Microsoft
Windows 95 is a violation of this clause, as it is not provided with Win95
 [I'm ignoring OS updates which may provide it for Win95].

So basically your view boils down to if the component is not shipped with
the OS, then you must provide source or you are in violation of the GPL.
Please correct me if I am mistaken.

If one follows this view (and not my view that the compiler, any compiler,
constitutes a major component of the OS), then any MSVC compiled program
that uses it's C runtime library is in violation.  I say this because, if a
program is linked with the CRT library statically, then it clearly is a
violation (the crt source can not be distributed under GPL compatible
terms, after all if it could we wouldn't be having this discussion), and
if it doesn't, it still links with the C startup code [unless you are
unique and have written your own], which as far as I know is under the same
restrictions as the rest of the C runtime library.  To broaden your claim,
any GPL program compiled with a non Microsoft compiler (e.g. Borland's) is
going to be in violation, as their c runtime most definitely is not going
to be distributed with any version of the OS.  This is not limited to
various C compiler venders, consider also Visual Basic, Delphi (Pascal),
etc. as those runtimes are also not distributed as part of the OS. Thus, if
I consider your view as correct then just about every GPL program on
Windows is in violation, and the GPL is not an appropriate license to use
on any OS whose various compilers' runtimes are not available under a GPL
compatible license.

Hence my personal view, the compiler is a major component of any OS
(regardless of which compiler it is -- within reasonable restrictions), and
as such it's runtime (a part of the compiler) is applicable to this one
exception of source in the GPL.  Therefore it is ok to build using MSVC
version 7 or later, and have a binary that relies on that compiler's

Distributing the c runtime library with a GPL program has its own issues,
which is where EULAs, the runtime's actual license, etc. come into play.  So
as long as one does not distribute the runtime with the GPL'd program and
the runtime's license does not restrict its use to requiring a program to
ship with the runtime, a program is not violating the GPL by linking to a
given compiler's runtime.  Clearly distributing MSVCRT.DLL, MSVCR70.DLL, or
probably any other Microsoft runtime, with a GPL'd application is going to
fall under the 'unless that component accompanies the executable' part, and
so is not possible without violating the GPL and probably Microsoft's

While I do not say my argument is 100% correct, it does at least make sense
to me, and is why I hope you are wrong. Please show me where my assumptions
are wrong, logic is incorrect, or any other factor you think I am
misunderstanding or ommitting.

Thank you, 
Jeremy Davis 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]