5

I have a project, written in Python, which has lots of different functionalities. I will sell this project to third parties.

I'm calling a GPL3 licensed Python program via a subprocess call in parts of the program, and I'm using its output for some other functionalities in my software. My questions are:

  1. Should I open source all of my main program?

  2. If I need to open my source code, can I do code obfuscation?

  3. Should I get permission from the developer of GPL3-licensed third party code?

7

I'm not a lawyer, but here is my two cents.

1)Should I open source all of my main program?

If the only interaction between your program and the GPL3 program (or any other open source program) is via a Python subprocess call, then I don't believe you are required to open source your program.

See https://www.gnu.org/licenses/gpl-faq.en.html#MereAggregation:

By contrast, pipes, sockets and command-line arguments are communication mechanisms normally used between two separate programs. So when they are used for communication, the modules normally are separate programs. But if the semantics of the communication are intimate enough, exchanging complex internal data structures, that too could be a basis to consider the two parts as combined into a larger program.

Also see https://www.gnu.org/licenses/gpl-faq.en.html#WhatCaseIsOutputGPL:

The output of a program is not, in general, covered by the copyright on the code of the program. So the license of the code of the program does not apply to the output, whether you pipe it into a file, make a screenshot, screencast, or video.

The exception would be when the program displays a full screen of text and/or art that comes from the program. Then the copyright on that text and/or art covers the output. Programs that output audio, such as video games, would also fit into this exception.

From your somewhat limited description, it sounds like your code and the GPL3 code you are using are two separate programs.

2)If I need to open my source code, can I do code obfuscation?

This is kind of a gray area, but in general, I would say that you should not obfuscate your code. From https://www.gnu.org/licenses/gpl-3.0.en.html:

The “source code” for a work means the preferred form of the work for making modifications to it. “Object code” means any non-source form of a work.

If you typically develop with the obfuscated code (i.e. make modifications to your source code), then delivering obfuscated source code is fine. However, if you typically modify the un-obfuscated code and later obfuscate it prior to source distribution, then this would be considered a little dishonest. Whether or not somebody can prove that you don't develop in obfuscated code is another story, but being in this legal gray area is non-ideal.

3)Should I get permission from the developer of GPL3-licensed third party code?

You are not required to get permission in order to use GPL3-licensed code, as long as you are using it in compliance with the license. However, if your usage violates the GPL3, then you can reach out to the copyright holder asking for an exception. Whether or not the copyright holder grants you an exception is their decision.


Please remember that if you are distributing the third-party GPL3 program with your code, then you are required to provide source (and follow all of the other requirements of the GPL3) for that third-party program as well, even if your main program is closed-source. If that third-party is already pre-installed on the end user's device, then you don't need worry about providing source.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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