7

Supposed I have written a server in Node.js that I licensed under AGPLv3. Now, if somebody takes my code and modifies it, this is a derivative work. So far, so good.

Supposed my server has the ability to load .js files from disk and run them, e.g. to provide something like a plug-in interface. The interface is designed in a way that the files do not require anything from the server, the binding is only the other way round: The files only contain functions that are being called by the server.

Does this make the additional .js files a derivative work, too?

I find this question quite hard to answer because all the stativ-vs-dynamic-linking-and-binding does not apply here, because the server as well as the additional files are just .js files laying around on disk, and their connection is only established at runtime by the Node.js engine, because the server simply calls require on the files.

So, as said: Does this make the additional .js files a derivative work, too?

Please note that while Does a host application's license apply to plug-ins written for it? is definitely helpful, it doesn't answer my question, since it leaves the main part of my question unanswered:

I find this question quite hard to answer because all the stativ-vs-dynamic-linking-and-binding does not apply here, because the server as well as the additional files are just .js files laying around on disk, and their connection is only established at runtime by the Node.js engine, because the server simply calls require on the files.

IMHO JavaScript and Node.js are different here, as you publish and distribute the code always only as source, never as binary. So the term linking here does not make too much sense, except at runtime (what also means that you don't really have a choice on how to link).

2

Tough question. I'd say that if the the plug-in does not use code from your software, then it is not a derivative work but a good lecture can be this: https://www.drupal.org/about/licensing, where there is a good explanation (Drupal call the plugin "module") about the topic.

2

I believe requiring .js files is definitely a dynamic linking. It's not much different from linking a library in your project for the use of library's functionality, which would be considered using the library as a plugin by GPL:

Linking a GPL covered work statically or dynamically with other modules is making a combined work based on the GPL covered work. https://www.gnu.org/licenses/gpl-faq.en.html#GPLStaticVsDynamic

Your question is not clear. Are the JS files your own written work as part of the server project? Then they probably are GPL and if somebody takes their source code it's also GPL. If somebody is taking the server and not taking the JS files then it's still the GPL. If someone takes all of them then they all GPL. If you release JS files as separate modules then you can license then with MIT, for example.

Requiring a JS file is absolutely a linking. You can statically link Node.js modules too by compiling a Node.js program.

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.