0

If program B is licensed under GPL, can a programmer modify it to interact with his own proprietary program, A, such that both programs are separate processes, and then only release the modified source code only for program B?

I was thinking of program B being turned into a "black box" for program A, but instead of it being a function it's a completely separate program.

I'm not seeking legal advice, I'm trying to understand more about free software and its complications without being too technical. Unfortunately, the GPL faq talks about linked libraries and other things I haven't covered yet in school, so it is difficult for me to wrap my mind around the "general" case here.

2 Answers2

1

First, it does not matter if you change B afterwards as long as you publish your modifications under GPL again. B could have been written (and published) that way by the original author, before you already started to create A.

So your situation is probably one of the two scenarios described in the GPL FAQ under

or

(pick your choice which one fits better to your case).

When you read the two sections, you see the critical point in both cases is if the communication between the free and the non-free program is done just by "fork and exec" (or whatever equivalent the OS you are using provides). If, however, the two pieces of software "make function calls to each other and share data structures", you are violating the GPL (that is actually how I would interpret the FAQ, but IANAL).

Doc Brown
  • 218,378
0

You take GPL-licensed program B, modify it, and release the result under GPL. That's just what you should do. No matter what A does with B as long as A is in independent program.

The tricky question is what happens if your proprietary program doesn't do anything useful unless there is also B running and you write and distribute a wrapper (say, W) which makes it easier for the user to run A and B together. Than the entire A+B+W package could be considered a derived work and legal difficulties can arise. Possibly, the safest way would be to tell the user that they have to get B themselves and start it the right way so that A can run. If that's not practical it could (depending on the situation) indeed be necessary that A (or at least W) is also open-sourced or you find an alternative to B which does not have the license restriction.