12

I'm developing a proprietary app that will mainly use a dynamically linked execute a GPL-licensed FFmpeg binary.

I'm wondering if I can design the app in a way that it downloads the binary dependency from a public server either automatically or by clicking on a button, instead of making the users download it by themselves off the internet?

Would this infringe the GPL license?

Mureinik
  • 5,112
  • 3
  • 31
  • 42
Darkstep
  • 123
  • 7
  • I'm slightly confused by your question. You mention a binary, but linking is normally a thing for libraries. Does your proprietary program link to a GPLed library, or execute a GPLed binary? – MadHatter Jan 07 '22 at 20:58
  • Sorry about the confusion. The app will execute a GPLed binary in a shell-like manner. – Darkstep Jan 07 '22 at 21:16
  • I've seen the exact same idea with FFmpeg already done in practice quite a few times, it should be ok. – Alejandro Jan 10 '22 at 12:12

3 Answers3

25

You could, but I wouldn't bother. Your application invokes a GPLed binary via fork-and-exec, and as we have written many times here (example), that means it's likely a separate work for GPL purposes. So shipping a copy of ffmpeg with your binary won't oblige you to release your binary under GPL, and it will ensure you can control the version that people get, and where it gets installed (so your binary can find it).

It's true that you will have GPL obligations in respect of the binary you're shipping, but they're not terribly onerous, and to my mind much outweigh the support liabilities of pointing people off to a separate website to install the GPL binary, with all the many slips that can come between that cup and the user's lip.

MadHatter
  • 48,547
  • 4
  • 122
  • 166
  • 10
    +1 Either you have a derivative work or you don't. If you don't, you don't need to bother with this. If you do, this won't help you. – David Schwartz Jan 09 '22 at 01:36
  • 2
    @DavidSchwartz: If one had a program which downloaded a GPL application and then linked itself into the binary, the only way the program as distributed could be regarded as a "derivative work" would be if it included copyrightable content from the GPL application. The recipient of the application might produce a derivative work, but GPL places no restriction upon the formation of derivative works that are not distributed. – supercat Jan 09 '22 at 17:32
  • 3
    @supercat Just because you download part of your program separately doesn't mean it isn't a derivative work. Nor does it necessarily mean it is. – Deduplicator Jan 09 '22 at 18:29
  • 4
    @Deduplicator: That's irrelevant. What matters is whether the portion that you distribute is a derivative work, not the program as a whole. The GPL only restricts distribution rights. – Kevin Jan 09 '22 at 19:04
  • 1
    @Kevin Restating: Just because the part you distribute is all made by you does neither mean nor not mean that it is a derivative of the part which is separately downloaded. And distributing both together does not change that. – Deduplicator Jan 09 '22 at 19:48
  • 3
    I think a number of interesting points are being made here, but I submit that this comments field is not the place for them. If anyone thinks they have a specific, substantive question to ask, I beg them to ask it as a new question in its own right, and to have the debate there. (Terse translation: if you try to continue this thread here, I will delete your comments.) – MadHatter Jan 09 '22 at 19:54
4

You can easily create an installer which first downloads and installs the GPL-licensed binary and then installs your own proprietary app.

Your question is similar to the one answered here: Best way to include GPL-licensed code in an MIT-licensed library and the answer seems to apply to your problem.

Martin_in_AUT
  • 7,205
  • 10
  • 37
  • Your first sentence sounds a bit like you are saying the order of the downloads matters (GPL app first, then proprietary). Is that indeed what you mean? – marcelm Jan 09 '22 at 10:36
  • @marcelm There is no legal reason for that, just a practical one (the proprietary app will know at the time when it is installed if and where the GPL app is installed). – Martin_in_AUT Jan 09 '22 at 11:29
  • Ok, fair enough! – marcelm Jan 09 '22 at 11:37
-3

You probably need to ask a lawyer.

I recommend having some documented way to be able, in your application, to change the binary path (or the download URL) of that FFmpeg binary.

Consider contacting the FSF and/or the FFmpeg authors.