11

The case of proprietary programs linking to GPL'd libraries has been discussed thoroughly. However the inverse case - a GPL'd program is linking to a proprietary library - is rarely mentioned.

Therefore my question is: Can I use a proprietary library in my own GPL'd program (which I intend to distribute) without violating the GPL?

Note: I'm assuming the library is an integral part of the GPL'd program and the library's (non-free) license allows me to link it into the program.

5

3 Answers 3

12

The Free Software Foundation's FAQ says this:

I'd like to modify GPL-covered programs and link them with the portability libraries from Money Guzzler Inc. I cannot distribute the source code for these libraries, so any user who wanted to change these versions would have to obtain those libraries separately. Why doesn't the GPL permit this? (#MoneyGuzzlerInc)

There are two reasons for this. First, a general one. If we permitted company A to make a proprietary file, and company B to distribute GPL-covered software linked with that file, the effect would be to make a hole in the GPL big enough to drive a truck through. This would be carte blanche for withholding the source code for all sorts of modifications and extensions to GPL-covered software.

Giving all users access to the source code is one of our main goals, so this consequence is definitely something we want to avoid.

More concretely, the versions of the programs linked with the Money Guzzler libraries would not really be free software as we understand the term—they would not come with full source code that enables users to change and recompile the program.

So although you can "use" your combination of GPL program and proprietary license, you cannot "convey" or "distribute" the GPL program without the proprietary library, unless that proprietary library is a "system library".

The GPL itself defines a "system library" in words that are somewhat incomprehensible to a non-lawyer:

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 think it means libraries that the user will be able to obtain independently without a "vendor lockin".

See this question and its answers about System Libraries.

I am not a lawyer, so this is not legal advice, but just a lay person's opinion.

1

If you own the whole code of the GPL program (it is your choice to offer it under the terms of GPL), you can add the licensing exception ("as an exception, it is allowed to call the proprietary library X").

However you cannot add such exception if you are just adapting or extending some existing GPL program you do not own.

1

If you own the copyright to a piece of work you don't need a license to use it, therefore the GPL license doesn't apply to you (the copyright owner), but it applies to others. If you make your work public, people could use it in private, but they wouldn't be allowed to distribute it, unless they got rid of the proprietary libraries.

1
  • 2
    This does not really apply ("use it in private") because in the Question the OP said "which I intend to distribute". If you publicize a GPL program together with proprietary libraries (and place restrictions on the redistribution of those proprietary libraries), that is almost certainly a GPL violation. Now, if you have your own private libraries (e.g. non-GPL) and use that software in a GPL program privately without distributing the combination, then that's a different situation, but it's not the situation the OP seems to be talking about.
    – Brandin
    Jun 27, 2023 at 6:23

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.