Is there a way to call R from a standalone C ++ program without having to reveal the source

we are thinking about using the statistical library package in our application and want to know if R can be used without publishing the source of our application.

Thanks. Tobias

+4
source share
1 answer

You should finally ask a lawyer (or maybe someone from the intellectual property department).

However, here are my 2 ct:

  • This should be possible in the same way as for writing limited source programs for Linux.
  • The solution, which emphasizes the fact that you are talking about two programs, R and yours, will use the R server

  • Wikipedia summarizes the discussion of whether a link means that the result is a derivative work .
    Not surprisingly, the point of view of the FSF is that it does not matter if the relationship is dynamic or static. In the end, they say that if you want to allow a link to a program with a non-free (incompatible) license for a free library, the library license should be LGPL instead of the GPL. However, the Wiki article also gives other points of view.

Here are two relevant snippets from the GPL FAQ:

  • What is the difference between an “aggregate” and other “modified versions”?

    An “aggregate” consists of several separate programs distributed together on one CD-ROM or other medium. The GPL allows you to create and distribute a collection, even if the licenses of other software are non-free or incompatible with the GPL. The only condition is that you cannot release the unit under a license that prohibits users from exercising the rights that each of them will grant to each individual license.

    Where is the line between two separate programs and one program with two parts? This is a legal issue that judges will ultimately decide. [...]

    If the modules are included in the same executable file, they are definitely combined into one program. If the modules are designed to work together in a common address space, this almost certainly means combining them into one program.

    In contrast, pipes, sockets, and command line arguments are communication mechanisms commonly used between two separate programs. Therefore, when they are used for communication, modules are usually separate programs. But if the semantics of communication are quite intimate, exchanging complex internal data structures, this can also be the basis for considering two parts, a larger program.

  • I would like to incorporate GPL-covered software into my own system. I can do it?

    You cannot include GPL-covered software in a proprietary system. [...]

    However, in many cases, you can distribute GPL-covered software with your own system. To do this correctly, you must make sure that free and non-free programs communicate along the length of the weapon, that they are not combined in such a way as to make them effectively one program.

    The difference between this and the “inclusion” of GPL-covered software is partly a matter of substance and partly forming. The essential part is this: if two programs are combined so that they become effective two parts of the same program, then you cannot consider them as two separate programs. Thus, the GPL should cover it all.

    If the two programs remain well separated, such as the compiler and the kernel, or as the editor and the shell, then you can consider them as two separate programs, but you must do it correctly. [...]

+5
source

Source: https://habr.com/ru/post/1480954/


All Articles