[Mono-list] Icky... no... evil... (was: BASIC, Compilers and Salutations)

Jay Freeman (saurik) saurik@saurik.com
Wed, 11 Jul 2001 08:09:48 -0500

The more I think about it, the more I believe that this license was never
designed to support interoperability.  If you have GPL source code, and you
want to run as even the remotest part of something that isn't GPL, you are
simply not supposed to due to philosophical reasons.  This means that GPL
software for Windows shouldn't really exist, the philosophy here applying as
"if you are writing free software, you shouldn't be writing it for non-free
operating systems, you shouldn't encourage the non-freedom of it all".  I
had never really even thought about this issue before in its completeness.

I've been reading over the GPL a few times, and I would say "yes, you can't
do GPL work with MS VC++".  The initial thing that hits me isn't even the
runtimes dlls but that runtime code is placed in the actual binary whether
you use the DLL form or not for purposes of initializing global variables.
This is software in every sense of the word that MS has written and has even
included a commercial "just for use when debugging" license to along with
VC++, you can step through it and look at it.

Everything I know about law has been learned from watching court
dramatizations, so I'm no authority, but this is bugging the hell out of me.
The problem ends up getting more basic, though.  It isn't just crtdll.dll
you need to worry about, it is kernel32.dll, and shell32.dll.  It isn't just
VC++, it's Windows itself.  GPL software must link with DLLs and share a
memory space with these DLLs that are a part of the OS no matter what
compiler they were written using, at some point you get to the level of the

(BTW, I just read Sebastian's post, and he brings up this same line in his
message for the LGPL, I'm going to leave my mention of it here, though, as I
can't figure out a good way to edit out the duplicated information without
erasing the above paragraph which I want to keep.)

Now, this stence here is telling:

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.

Now, you could say that you didn't distribute them together.  Until you
distribute the work together, the GPL doesn't seem to apply to the pieces
used.  Using this route you simply can't give people easy installation

*sigh*  This makes me glad I've started switching to BSD :-).  Last night I
took libyahoo, got it compiling on Windows, then built it together with a
Managed C++ wrapper for easily accessing the Yahoo IM from C#.  Released it
to the DOTNET mailing list like 4 hours ago.  I wonder if this means I'm
going to have to take it down and stop offering it until I can reimplement
it from scratch in an entirely separate project in C# under a modified BSD

Jay Freeman (saurik)

----- Original Message -----
From: "John Bäckstrand" <john.backstrand@e-game.com>
To: <mono-list@ximian.com>
Sent: Wednesday, July 11, 2001 7:25 AM
Subject: RE: [Mono-list] BASIC, Compilers and Salutations

> how about crtdll.dll and msvcrt.dll? every .exe made with vc++ uses one of
> these.
> does this mean that its impossible to do gpl/lgpl work with MS vc++ ?