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?

  • 3
    "I have an application that is GPLv3" - you mean, you are the author of that software and have full control over the license? Or are you just using that software, and someone else has control over the license? Please clarify, in the current form your question is IMHO very confusing. – Doc Brown Sep 8 '13 at 13:12
  • @DocBrown I own said application, but am not willing to dual-license the entire application, or relicense to LGPL. I must apologize for being unclear, as I had it worded properly and then somehow ended up removing that before posting. – nanofarad Sep 8 '13 at 19:41
  • If you own the copyrights for the application, you can do whatever you want with it - you are not going to sue yourself because of a license breach, I guess? – Doc Brown Sep 8 '13 at 20:02
  • 1
    Maybe the answer to this former post fits to your question: programmers.stackexchange.com/questions/102875/… – Doc Brown Sep 8 '13 at 20:08
  • 2
    @Martin Schröder: We are on Programmers.SE here, the scope of SO is irrelevant. – chirlu Sep 9 '13 at 2:49

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.


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
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?

  • This is an interesting answer, but it really doesn't answer my situation exactly, as my application is in-between. The GPL application is at "arms-length" with the scripts but may be run without GPL-incompatible scripts(due to the existence of GPL default ones), however the scripts, written specifically for this application, will only run on it due to its runtime libraries. These scripts are originally designed to script my program and only my program. – nanofarad Sep 9 '13 at 22:13
  • Sounds like the only real question is whether or not the scripts themselves are GPL. I'd say it probably doesn't matter all that much, if they're just glue between the applications. If there is a doubt, contact the FSF or a licensing lawyer. – Robert Harvey Sep 9 '13 at 22:16
  • They're not glue, as there is no second application involved. They're written by users of my application(or provided by users from an external source that licenses in a GPL-incompatible manner) and must link to my GPL-licensed libraries(or else I couldn't link them to the rest of my GPL-licensed program) for performance reasons. Interpreting and parsing just won't cut it here. The question is whether a tehnical link functionally equivalent(except in performance) to parsing is actually linking. – nanofarad Sep 9 '13 at 22:18
  • So they're user scripts. I don't see how licensing applies to those at all, since users in all likelihood will not be distributing those scripts outside of their organizations. (will they?) The GPL only affects distribution (what the FSF calls "conveyance"). – Robert Harvey Sep 9 '13 at 22:23
  • Yes, they will. For technical reasons scripts are needed to be transmitted over the network to interacting instances of the application(even if the scripts themselves are open-source but not GPL compatible). It's understood that script source will be transmitted. Another curiosity is that the script is interpreted and linked from that direct interpretation. – nanofarad Sep 9 '13 at 22:24

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.