On 9/5/2012 8:58 AM, Keith Marshall wrote:
> The author of Console2 uses MSVC to build it, and he refuses to even
> contemplate any alternative. His builds are dependent, (or at least
> were when I evaluated it), on MSVC specific DLLs, which Microsoft have
> declared to be non-distributable without a paid-for developer licence.
> Since we do not have such a licence, we cannot legally redistribute such
> packages [*].
> [*] I suspect that his use of, and dependency on such non-distributable
> components may actually place the developer of Console2 in violation of
> the GPL, (under which he purports to distribute). IANAL, but how can he
> confer the right to redistribute, (as is required by the GPL), when his
> package depends on non-distributable, non-free components?
GPLv3, if I understand correctly, mitigates this issue by defining
"System Libraries" as:
> The "System Libraries" of an executable work include anything, other
> than the work as a whole, that (a) is included in the normal form of
> packaging a Major Component, but which is not part of that Major
> Component, and (b) serves only to enable use of the work with that
> Major Component, or to implement a Standard Interface for which an
> implementation is available to the public in source code form. A
> "Major Component", in this context, means a major essential component
> (kernel, window system, and so on) of the specific operating system
> (if any) on which the executable work runs, or a compiler used to
> produce the work, or an object code interpreter used to run it.
> The "Corresponding Source" for a work in object code form means all
> the source code needed to generate, install, and (for an executable
> work) run the object code and to modify the work, including scripts to
> control those activities. However, it does not include the work's
> System Libraries, ...
and in section 6:
> A separable portion of the object code, whose source code is excluded
> from the Corresponding Source as a System Library, need not be
> included in conveying the object code work.
So, as long as the console2 devs don't actually distribute the msvcrt
runtime DLLs and simply expect the end user to manually go to
microsoft.com to get the appropriate vcredist package, I think they're
in the clear -- under GPLv3. (Now, if they DO include those DLLs, then
*they* are not infringing -- and *I* can avoid infringing by removing
those DLLs from the package before I distribute them; but if I don't do
that, and redistribute the binary packages WITH the msvcrt dlls then I
would be infringing unless I, too, had an MS developer license. As it
turns out, their binary packages do not include the msvcrtXX.dll runtimes).
But that's all academic, because it seems Console2 is under GPLv2:
GPLv2 is completely different because under that regime, system
libraries basically meant stuff usually distributed with the operating
system -- which explicitly did NOT include the various msvcrtXX.dll
runtimes. So they weren't excluded from the "set of stuff you need to
distribute source code for" under the viral nature of the regular GPL.
I'm not sure what the situation is if, with source code under the GPLv2,
you distribute your compiled binary but do NOT ship the msvcrtXX.dlls,
even if MS gives you permission. Under GPLv3 you're in the clear, but
that runtime is NOT considered a system library under GPLv2, so it is,
just by virtue of linking, considered part of the "derived work" you
have created from the GPLv2 source code. So even if you don't ship that
"part" of the derived work, somebody would still have the right to ask
you for the source code of ALL of the "derived work" -- including the
msvcrtXX.dll you did not actually distribute!
This, in fact, is exactly the situation the Console2 devs are in. And
it's the situation WE do not want to be in.
IANAL, etc etc etc.