2

I've a very specific question.

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

And wondered about the following.

My main program uses a permissive license that is compatible with GPL. Now my main program has a plugin system that loads libraries that load different kind of libs. These libs can be GPL or even proprietary or whatever. Now my question is, if my program 100% makes sure that no GPL code is ever loaded when proprietary code is loaded at the same time would that work?

MyProgram -> loads GPL -> unloads GPL -> loads proprietary

To be extra clear: I do not link against any GPL code. It's loaded at runtime, the interface is under my permissive license. When the GPL code is unloaded all memory that was allocated and shared by the GPL code with the main program is freed and can not be used in any circumstance in the non-free module.

To me the FAQ is not clear about the lifetime of how the license is applied.

A little more background: I have a WASM plugin system and have actually no control about what WASM modules are loaded, but there is communication happening between host and guest, so i'd say they form a combinied binary. I guess it's up to the hosters/uploaders of these WASM modules to make sure the module has the proper rights, but since my program is GPL compatible it might not be intuitive that i'd have to explicitly disallow GPL.

Edit: I also don't ship my binary with these WASM modules. It is not directly aware which WASM modules are loaded. My main question thus is, if when exactly the licensing of (A)GPL comes into affect. Is having support for a module that can be GPL already forcing it to be GPL compatible? If I unload the GPL module like mentioned above, how is the situation then? I understand that GPL is mostly about how you distribute the work, in my case I do not actively distribute it tho. I want to make sure that ppl that distribute their modules don't require an expcetion in their (A)GPL license to work with the main program.

3
  • I find it difficult to envision the development process, which complicates the question. Normally, plugins are written to fit into the main framework. In this case, did you write your framework around a GPL plugin? Did someone contribute this plugin but insist it had to be GPL? I'm trying to understand what might be a derivative of what; to know a little more about how this chimera came to be would help me.
    – MadHatter
    Apr 6 at 7:48
  • 1
    I am not very familiar with WASM. Is your system like GIMP with its plug-ins or like Firefox with its Add-ons? How exactly is the communication API between your code and the external libraries? Apr 6 at 7:58
  • 1
    "In this case, did you write your framework around a GPL plugin? Did someone contribute this plugin but insist it had to be GPL?" I nether used GPL for the framework nor do i write plugins. I failed to mention is that I basically have a program that loads WASM modules and then communicates with them. These WASM modules can be installed by a user manually or from a list of server's which host them. I basically just want to make sure the plugins can be both GPL and proprietary. That's why I also mentioned that even tho these plugins communicate with the host, they never do it at the same time Apr 8 at 16:09

1 Answer 1

3

A copyright license "attaches" itself to a copy of an application or its source code at the time that the copy is distributed. That license then remains in force for that copy for as long as the copy exists.

Assuming that your interaction with the plugins is more involved than "start plugin and wait for it to complete", your situation is like this:

  • The main program by its own can be distributed under the permissive license that you chose.
  • The main program can be distributed together with GPL-licensed plugins (and other plugins under GPL-compatible licenses) all under the GPL license.
  • The main program can be distributed together with non-free plugins (and other non-GPL plugins) under the respective licenses.
  • The combination of main program, GPL plugin and GPL-incompatible plugin can exists on someone's system, but it may not be distributed.

To warn users about the licensing situation, you can add something to your documentation along the lines of:

The program can work with plugins under a large variety of licenses. Care must be taken when distributing the main program together with plugins. Due to the nature of the interaction with the plugins, when you distribute the main program together with one or more plugins and one of those plugins is licensed with the GPL license, then the whole bundle needs to be licensed under the GPL license. The license of the main program allows this, but you need to make sure that this is also true for all plugins in the bundle.


If your main program is distributed under a permissive, GPL-compatible license, then plugin authors also don't have to worry too much about their licensing.

If a plugin author want to use the GPL license, that is no problem because the main program has a compatible license.

If a plugin author want to use a proprietary license, that is no problem because the main program has a compatible license.

If an end-user wants to use both GPL and proprietary plugins, that is no problem either, as long as they don't distribute that combination of software to others. They cannot distribute the combination, because they are unable to comply with all the conditions that follow from the set of involved licenses.

5
  • 1
    Depending on the type of communication between the plug-in(s) and the main program, we might even be dealing with 'mere aggregation' as defined in the GPL context, thus the differentiation in the distribution (together / alone) does not need to take place. Unfortunately, the OP has not explained the interaction between the parts, so a definite answer is difficult. Apr 8 at 8:22
  • 1
    @Martin_in_AUT, that is why I explicitly stated what assumptions I made for the answer. If the OP comes back with a statement that the assumption is invalid, then we can update the answer (or write a new one). Apr 8 at 9:03
  • 1
    Hello @BartvanIngenSchenau, I indeed failed to mention one important aspect: The main software does not know about the WASM modules in advance and they are not shipped with the main program. They are downloaded from different servers. Kind regards Apr 8 at 16:02
  • 1
    @einloggennervt, If the main software has no knowledge of which plugins exist and they are also distributed completely separately, you don't need to worry about the licenses of the plugins. Maybe I create a new plugin next week under a license that forbids distribution if it can be combined with a program that is technically capable of loading GPL-licensed plugins. Is it your fault that I could choose such a problematic license? Apr 9 at 6:52
  • 1
    Ok, i guess with your additional information the whole FAQ reads differently and kinda makes more sense now. Since I assume these topics are always a matter of interpretation I find your answer good enough, it explains the most important thing I didn't really get from reading the FAQ alone. So thanks for that Apr 11 at 19:57

Your Answer

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

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