Hacker News new | past | comments | ask | show | jobs | submit login

According to the GPL FAQ, there aren't different license requirements for static linking vs dynamic linking. (The reason you can link glibc, stdc++, etc., which are licensed under the GPL, is because they carve out a "GCC runtime library exception" for such libraries, allowing one to choose a different license anyway).

The FAQ also says that if "establish intimate communication by sharing complex data structures, or shipping complex data structures back and forth," then the that is essentially the same thing as dynamic linking, and so the GPL applies to your program as well.

Link to the FAQ: https://www.gnu.org/licenses/gpl-faq.en.html

The relevant FAQ questions:

----

> Does the GPL have different requirements for statically vs dynamically linked modules with a covered work? (#GPLStaticVsDynamic)

> No. Linking a GPL covered work statically or dynamically with other modules is making a combined work based on the GPL covered work. Thus, the terms and conditions of the GNU General Public License cover the whole combination.

----

> When is a program and its plug-ins considered a single combined program? (#GPLPlugins)

>It depends on how the main program invokes its plug-ins. If the main program uses fork and exec to invoke plug-ins, and they establish intimate communication by sharing complex data structures, or shipping complex data structures back and forth, that can make them one single combined program. A main program that uses simple fork and exec to invoke plug-ins and does not establish intimate communication between them results in the plug-ins being a separate program.

> If the main program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single combined program, which must be treated as an extension of both the main program and the plug-ins. If the main program dynamically links plug-ins, but the communication between them is limited to invoking the ‘main’ function of the plug-in with some options and waiting for it to return, that is a borderline case.

> Using shared memory to communicate with complex data structures is pretty much equivalent to dynamic linking.

----

> Where can I learn more about the GCC Runtime Library Exception? (#LibGCCException)

> The GCC Runtime Library Exception covers libgcc, libstdc++, libfortran, libgomp, libdecnumber, and other libraries distributed with GCC. The exception is meant to allow people to distribute programs compiled with GCC under terms of their choice, even when parts of these libraries are included in the executable as part of the compilation process. To learn more, please read our FAQ about the GCC Runtime Library Exception (https://www.gnu.org/licenses/gcc-exception-faq.html).




The FAQ is just the FSF's wishful thinking, and not a legal document.

If your program can fork and exec another GPL-ed program, and exchange complex data structures with it, that is neither here nor there.

All that matters is whether or not you are redistributing the program, and if so, whether that is in accordance with its license, which restricts the manners of redistribution.

If you are not shipping that program, but your own GPL-incompatible program needs it (your program cannot be used unless the user has an installation of the GPLed program) then you're likely in infringing waters, because it could be seen as redistribution anyway. Though it you aren't physically redistributing the GPLed program on the same medium, redistribution of that GPLed program, carried out by someone somehow, has to take place for your program to work. It's as if you are redistributing it "by proxy". If the user doesn't have that program, you have to instruct the user on how to obtain it, thereby turning that user into an agent of redistribution, acting on your behalf.

But if you ship another program which is drop-in compatible with that the GPLed one, which allows your main program to run, then in all likelihood the GPL doesn't have a leg to stand on against you.

If you don't redistribute a GPLed program, in any manner, whether directly or "by proxy", you cannot be infringing on its license.

A GPLed program being combined with yours by the user, in their installation, has nothing to do with you, if that combining isn't a condition of your program being able to usefully execute. That is not redistribution but use, which the GPL does not restrict.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: