4

First of all, pardon the title, as it's not very clear. I have an application I am writing that is GPLv3, and is in Java, which means that classfiles are generated and linked to for general operation. I am also using a scripting engine which, for performance, links any scripts it runs to my program's scripting libraries(which are class files) at runtime.

Given that a script must be linked at runtime, can a GPLv3-incompatible script be run on the application? Can I legally force the script to be interpreted instead? Just to clarify I'm trying to involve the GPLv3 in restricting non-GPL-compatible licenses to scripts.

The question is whether a technical linking operation functionally equivalent(except in performance) to parsing is actually linking in the legal sense.

Clarification: Scripts will be transmitted to interacting instances of the application. Scripts are loaded from a textual representation in ECMAScript/JavaScript, tokenized and parsed for syntax and then linked. This is what is confusing me. Given the conveyance, is the script being compiled and linked? Or interpreted and the parser actually runtime linking itself?

nanofarad
  • 451

2 Answers2

3

Yes. GPL covers distribution/conveyance only. As your other comment suggests, you want to restrict your users. It doesn't matter that the script is sent over a network. Conveyance (the GPL defined term) requires the transfer of covered works from one legal person to another. Computers are not legal persons.

This is critically important to LGPL. Those libraries are dynamically linked together by each user, and the derived work (loaded in memory) cannot be distributed anymore. But that's no problem because the user wants to use the result, not convey it.

MSalters
  • 9,038
1

In general, GPL'd and proprietary (non-GPL'd, closed-source) code can only be used together when they can be reasonably considered to be separate applications. In practice, what this means is that:

  1. The two applications must communicate at arms length with each other and
  2. Each application must be capable of running without the other.

So if I write a program that processes a Word document in some way, I don't bind Word to the GPL because I still meet the above two requirements. Similarly, if I write a Unix-style test-processing program that you can put in a stdin stout pipe, I can make it GPL without binding any other text processing programs, but still use it in the pipe.

However, if I write a proprietary program that statically links to a GPL'd library, I'm probably not in compliance because my program does not communicate at arms length with the library. If I communicate with the library at arms length (say, with a text-based command interface or maybe dynamic linking), I could still be in violation if my program will not work without the GPL library.

Further Reading
http://www.gnu.org/licenses/old-licenses/gpl-2.0-faq.html#TOCGPLInProprietarySystem
https://stackoverflow.com/a/1394867
Is running an executable as a child process the same as linking a library?
When does independently developed software have to be licensed under the GPL?

Robert Harvey
  • 200,592