This question was originally posted by marcgg on Stack Overflow (second link might be visible to 10k+ only), but was removed there due to being off-topic. It has been preserved here in light of this Meta StackOverflow request.


I want to use a tool (ffmpeg) that is under GNU Lesser General Public License (LGPL) version 2.1 and GNU General Public License (GPL) version 2 for some components.

To do so, I only call it in my software as such:

System.Diagnostics.Process p = new System.Diagnostics.Process();
p.StartInfo = new System.Diagnostics.ProcessStartInfo("lgplSoftware.exe", myParams);
p.Start();

I do not change it, I only use a built version of the software for windows.


Wikipedia says:

A key dispute related to the GPL is whether or not non-GPL software can be dynamically linked to GPL libraries. The GPL is clear in requiring that all derivative works of code under the GPL must themselves be under the GPL. While it is understood that static linking produces derivative works, it is not clear whether an executable that dynamically links to a GPL code should be considered a derivative work (see Weak Copyleft). The free/open-source software community is split on this issue. The FSF asserts that such an executable is indeed a derivative work if the executable and GPL code "make function calls to each other and share data structures," with certain others agreeing (e.g. Jerry Epplin), while some (e.g. Linus Torvalds) agree that dynamic linking can create derived works but disagree over the circumstances.


I am really confused by all this legal things. I would have made my project LGPL as well and released the source, but this is not up to me.

So the question is: can I use it like I'm doing right now or will I be executed by an army of lawyers?

up vote 6 down vote accepted

This answer was originally posted by Josh Kelley at StackOverflow (second link might be visible to 10k+ only), but was removed there due to being off-topic. It has been preserved here in light of this Meta StackOverflow request.


Linking has a specific meaning in computer programming. You're not linking GPL'ed or LGPL'ed code at all, you're only spawning a GPL'ed or LGPL'ed binary, and the GPL and LGPL permit this. Your users are free to use that binary themselves for its authors' intended purposes and are free to download and compile the source themselves, so all of their freedoms are preserved, and you're not in violation of the GPL or LGPL. (This is what the GPL FAQ is talking about by "communicat[ing] at arms length.") This doesn't even violate the spirit of the LGPL and GPL; they tolerate the existence of proprietary software and assume that at some point proprietary programs will spawn free programs and vice versa. (Otherwise, we couldn't run any GPL'ed software under Windows.)

The GPL does require that proprietary and GPL'ed programs "are not combined in a way that would make them effectively a single program." If your program is completely dependent upon GPL'ed executables, such that it wouldn't be usable without them even though it is a standalone binary, then that might place you on shakier ground. (And it's probably time to consult your lawyer to find out for sure.)

Also, although you didn't specifically ask about this, keep in mind that distributing GPL'ed or LGPL'ed software with your software means that you're required to include a copy of the license with your installer and to also distribute the source code. For example, if you package up your application in an installer and include copies of GPL'ed or LGPL'ed executables in the installer, then you're distributing LGPL'ed or GPL'ed code and must make copies of the source code available (either online, by mail-in offer, or by CD, depending on how you distribute your app). Including a link to the upstream project is not sufficient (at least for version 2 of the GPL). Read the GPL and LGPL for exact details.

So the question is: can I use it like I'm doing right now or will I be executed by an army of lawyers?

Yes. I can use it this way in software that I redistribute. My own software can use any license I want, open source or not. And this is a rather common pattern to use FFMpeg this way by spawning its executable in a process such that it does any transcoding I need.

I have to comply with the L/GPL for the FFmpeg binaries of course including attribution and eventual source code redistribution to the recipients of the binaries (and which license applies may depend on which build options I activate when building FFmpeg).

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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