I am considering extending a proprietary application so it communicates with an open source program.

This open source program is very similar to Matlab. The user can input commands to execute computations or draw graphics. Also, the user can write scripts. The program provides an API for external applications. External applications can generate variables and assign values to them and they can also execute commands or call scripts via this API. The licence of the program is GPL2.

The proprietary application shall communicate with the GPL'd program via the API or via command line arguments. It will send images taken from a camera to the GPL'd program, call scripts to process these images and accept results.

The user of the proprietary application will be able to select a script and maybe also a file containing parameters of the script. Moreover, the user will be able to create his or her own script and to use the GPL'd program for any purpose.

No matter how the communication is implemented, the exchanged data will be complex. Images will be exchanged anyway. The proprietary application might even send image processing parameters stored in XML files or classifiers such as neural networks to the open source program.

The open source program will be delivered along with the proprietary application on the same storage media. Both programs will be installed on the same computer.

Does GPL 2.0 permit such a scenario?

  • 2
    "The proprietary application shall communicate with the GPL'd program via the API or via command line arguments." - What is the API? Do you need to link the proprietary application with the GPL application as a library? – Brandin Feb 22 '18 at 15:37
  • I just found out that the API is provided via source code files under GNU GPL 2. So API function calls are out of question. However, there is also the possibility to start the open source program with command line parameters such as 'opensourceprogram.exe -e "disp(%pi); exit;" -nb' which will return a result. This means that no linking is necessary. – ImageProcessingExpert Feb 22 '18 at 17:14
  • Is the open source program Octave? – whatsisname Jul 10 '18 at 6:04

Can a Proprietary Application Exchange Data with a GPL'd Program?

Yes, at least in some cases. For example, Internet Explorer can visit a website served by a GPLed app. They also exchange images. (Downloading images, and in some cases, uploading images too.)

From here, I could give you my opinion about your app, but I'm not a lawyer. The FSF has an answer in their FAQ which is probably unfortunately correct:

Where's the line between two separate programs, and one program with two parts? This is a legal question, which ultimately judges will decide.

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

I strongly suggest you read their full answer, but keep in mind that they are generally biased towards reading the GPL's terms to restrict closed-source software. They do suggest though:

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.

  • 1
    Note: Although the FSF states the complexity of exchanged data structures as a determining factor if two programs are independent, but that is a simplification. The real factor is how specific the data structures are for the GPL program. For example, if the GPL program is a drop-in replacement for Matlab, then the complexity of the data structures doesn't say anything when the calling program can't tell if it talks to the GPL program or to Matlab. – Bart van Ingen Schenau Jul 10 '18 at 6:22
  • @Bart van Ingen Schenau. That sounds reasonable, but I can’t find anything to back that up. It might be worth creating your own answer around that idea though. – Patrick M Jul 10 '18 at 10:10

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.