gnu-misc-discuss
[Top][All Lists]
Advanced

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

Problem with GPLv3 FAQ about linking with Visual C++


From: Antonis Christofides
Subject: Problem with GPLv3 FAQ about linking with Visual C++
Date: Mon, 1 Feb 2010 12:24:52 +0200

Hi,

I have a licensing problem (I want to release my Delphi code under the
GPLv3, and I need to know if I need to introduce additional permissions
to link with the Delphi libraries, and whether I can use third-party
GPLv3 code in my code; Delphi is a nonfree commercial IDE, similar to
MS Visual C++ and MS VB). There's a FSF GPLv3 FAQ that summarizes my
problem well:

    I'm writing a Windows application with Microsoft Visual C++ (or
    Visual Basic) and I will be releasing it under the GPL. Is
    dynamically linking my program with the Visual  C++ (or Visual
    Basic) run-time library permitted under the GPL?

The FSF's answer to this FAQ is:

    The GPL permits this because that run-time library normally
    accompanies the compiler or interpreter you are using. The
    run-time libraries here are “System Libraries” as GPLv3 defines
    them, and as such they are not considered part of the
    Corresponding Source.

However, I do not understand how this interpretation can follow from
the GPLv3. Here is what the GPLv3 says:

    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.

(I will be writing "RTL" for "run-time library").

The (Visual C++/VB/Delphi) RTL API can be said to be a Standard
Interface and the (Visual C++/VB/Delphi) compiler can be said to be a
Major Component. While the RTL
  (a) is included in the normal form of packaging of the compiler,
  (b) it does NOT serve "only to enable use of the [executable] work
      with that Major Component" (I understand that this clause does
      not make any sense in this case, it makes sense when the Major
      Component is an OS run-time component).
      The rtl DOES implement a Standard Interface, but is an
      implementation for that interface "available to the public in
      source code form"?

I don't know the details for Visual C++, but for Delphi, you get the
Delphi RTL source code with Delphi if you buy Delphi.  Would this
qualify as "available to the public"?

The bottom line is that if the RTL "normally accompanies the
compiler", as the FAQ says, this does not seem sufficient for
considering it as a System Library; an implementation of the API must
also be "available to the public" in source code form.

What have I understood wrong?

(I also asked licensing@gnu.org about that, but they have not replied
yet and their autoreply understandably explains that they don't always
reply because they have limited resources.)

Thanks for any help!




reply via email to

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