I develop a software that consists of a core application and several optional modules. I would like to license the core and all modules that were developed by me under the GPL v3.0. In addition to that, I would like to force anyone who develops a new module to also use the GPL v3.0 for this module. Since every module requires the application core, is there a way for me to extend the license of the core to force the licensing of all modules in such a way? Would such an addition count as "supplemented terms" or as "further restrictions" as defined by section 7 of the GPL?
Questions related to open-source licensing are best asked in https://opensource.stackexchange.com however:
The GNU GPLv3 (being copy-left) already requires what you are wanting to be required.
- Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: ...
c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it.
If making a module for your application requires utilizing your application’s libraries to any extent, then the module is "based on" your application. Anyone wanting to create a module for your app will be unable to do so without licensing that module, in whole, under the GNU GPLv3 (or later versions if you permit it).
If I write a plug-in to use with a GPL-covered program, what requirements does that impose on the licenses I can use for distributing my plug-in?(#GPLAndPlugins) It depends on how the program invokes its plug-ins. If the program uses fork and exec to invoke plug-ins, then the plug-ins are separate programs, so the license for the main program makes no requirements for them. If the program dynamically links plug-ins, and they make function calls to each other and share data structures, we believe they form a single program, which must be treated as an extension of both the main program and the plug-ins. This means you must license the plug-in under the GPL or a GPL-compatible free software license and distribute it with source code in a GPL-compliant way. If the program dynamically links plug-ins, but the communication between them is limited to invoking the ‘main’ function of the plug-in with some options and waiting for it to return, that is a borderline case.
No supplementary terms are necessary.
You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License.
When the GPL refers to "Further restrictions", it is referring to restrictions on the rights of the software’s receivers. Since the whole point of the GPL is to "free" the software for its receivers, requiring that work based on the software is also free would be in line with the GPL’s purpose of enforcing software freedom and "limiting the limitations" imposed on subsequent conveyed works.