abassign wrote in Tue Jan 16, 2018 12:44 am:In these days I am increasingly convinced that there is no problem to release our modules under GPLv3 +, because, being separate modules, anyone can combine them with other modules with different licenses.
This is not correct. This would only be the case if you had an
API defined for the module, and you would then need to use the GNU Lesser General Public License (
LGPLv3+). Then, and only then, can you do this. Note section 5c of the GPLv3:
5. c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy.
You will have a very hard task to argue in court that your aircraft is not a whole. Let me quote the
Free Software Foundation licensing department:
What Constitutes the Entire Work?
One common way of combining programs is to "link" them so that one program can use routines from another. Developers typically talk about "static" linking, when code from various source programs are copied together into a combined executable which is then made available to users, and "dynamic" linking, when one program isn't linked to another until the two are executed together on a user's system.
With static linking, it is self-evident what code is part of the source code for that entire program. It includes, at least, the source code for all modules linked together in the binary.
Developers often find this point not quite so self-evident with dynamic linking, but the situation is equally clear: if you distribute modules meant to be linked together by the user, you have made them into a combined work, and you must release the entire combined work under the GNU GPL.
In other words: dynamic vs. static linking never makes any difference on the outcome of the analysis.8 The FSF has been advised by several US lawyers on this matter over the years, and the answer is always this one. Unsurprisingly, some lawyers have been willing to defend a different interpretation when it suits their clients, but their arguments are weak and disputed by the majority of experts.
This comes back to the API and LGPLv3+ licensing. You aircraft parts are not defining an API between themselves. FGFS via SimGear provides this API, not the aircraft components! FGFS would actually be classified as an "
interpreter", and then from the
FSF GPL FAQ:
If a programming language interpreter is released under the GPL, does that mean programs written to be interpreted by it must be under GPL-compatible licenses?
When the interpreter just interprets a language, the answer is no. The interpreted program, to the interpreter, is just data; a free software license like the GPL, based on copyright law, cannot limit what data you use the interpreter on. You can run it on any data (interpreted program), any way you like, and there are no requirements about licensing that data to anyone.
However, when the interpreter is extended to provide “bindings” to other facilities (often, but not necessarily, libraries), the interpreted program is effectively linked to the facilities it uses through these bindings. So if these facilities are released under the GPL, the interpreted program that uses them must be released in a GPL-compatible way. The JNI or Java Native Interface is an example of such a binding mechanism; libraries that are accessed in this way are linked dynamically with the Java programs that call them. These libraries are also linked with the interpreter. If the interpreter is linked statically with these libraries, or if it is designed to link dynamically with these specific libraries, then it too needs to be released in a GPL-compatible way.
Another similar and very common case is to provide libraries with the interpreter which are themselves interpreted. For instance, Perl comes with many Perl modules, and a Java implementation comes with many Java classes. These libraries and the programs that call them are always dynamically linked together.
A consequence is that if you choose to use GPL'd Perl modules or Java classes in your program, you must release the program in a GPL-compatible way, regardless of the license used in the Perl or Java interpreter that the combined Perl or Java program will run on.
Note also the following: When combining GPLv3+ content with GLPv3-compatible licensed content, the whole or combination is GPLv3+ licensed. The same goes for GPLv3-only content. This is incompatible with the
current state of the FlightGear project and FGAddon which is GPLv2+.
Regards,
Edward