2

I have the following apllication software setup:

  • A numerical simulation "engine" = OpenModelica (which in open source, released under GPL v.3), used to simulate e.g. hydraulic systems;

  • A proprietary GUI (e.g. an Excel sheet with VBA macros, a Python script, a Windows .NET application, ...) that interacts with OpenModelica via its APIs to: load a model, set parameters, run the simulation, get the results. The GUI provides a dedicated user interface to set parameters and visualize the results.

The OpenModelica source code has not been modified in any way.

Is this combination an "aggregate" according to GPL v.3, thus allowing me to distribute in a "bundle":

  • OpenModelica as FLOSS, according to GPL v.3;

  • the GUI as a proprietary copyrighted software,

or would the combination be a "larger program", forcing me to distribute everything under GPL v.3 conditions?

3
  • 3
    I am not familiar with OpenModelica. Could you describe more closely how the proprietary GUI and the GPL software interact over the API? E.g. is the API provided by a DLL that will be linked to the GUI, or is it a REST API, or something else?
    – amon
    Oct 11, 2017 at 10:33
  • You can find an overview of OpenModelica here: openmodelica.org/openmodelicaworld/tools. The OpenModelica Compiler (OMC) can be used from command line or interactively as a Corba object. We've tested VBA (Excel) with the interactive environment provided by OpenModelica Shell (OMShell). We are going to do the same thing, in the Python environment, with the OpenModelica Python Interface (OMPython), which is "a Python based interactive session handler for Modelica scripting".
    – angusmax
    Oct 12, 2017 at 7:56
  • "that interacts with OpenModelica via its APIs" .... is the key element: are you calling OpenModelica code now or in the future? or are you only running OpenModelica as a command line passing arguments and receiving results as stdout/files? Oct 16, 2017 at 3:37

2 Answers 2

3

Whether non-GPL, proprietary software can communicate with GPL software depends on the communication mechanism used. The key question is whether the softwares are independent creative works. As an indicator of this, the authors of the GPL suggest that they form a single work if the softwares share an address space, i.e. are loaded into the same process. However, communication “at arms length” is OK, e.g. inter-process communication.

  • If communication happens by using a command line interface, this is usually OK: the GPL code is executed in a separate process.

  • If communication happens through CORBA, that should be OK because the GPL code runs in a separate process. However, this may be approaching the limits since the proprietary program depends on the exact data structure layout offered by the GPL software.

  • If communication happens through function calls into an ordinary library (like importing a module in Python), then the software is certainly linked to the GPL software. The combined software can then only be distributed under the terms of the library, i.e. here that would be the GPL.

If you need details about understanding one of these communication mechanisms, please ask a specific question focussed on that mechanism.

When the proprietary software and the GPL software communicate in a manner that does not make them a combined work, then you can distribute the GPL software alongside the proprietary software in accordance with the GPL.

4

This is covered under the GPL Plugins section of the GPL FAQ:

If the main program uses fork and exec to invoke plug-ins, and they establish intimate communication by sharing complex data structures, or shipping complex data structures back and forth, that can make them one single combined program. A main program that uses simple fork and exec to invoke plug-ins and does not establish intimate communication between them results in the plug-ins being a separate program

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

By simply running the GPL software in a child process with parameters determined by your GUI and displaying the output, you are not creating a derivative work, so your GUI does not need to be licensed under a GPL-compatible license.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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