Lets say I'm using Node-Webkit, an MIT licensed app runtime. Now, let's say I decide to include a Javascript library which is GPL licensed: while I do not modify the downloaded JS file, I do write my own code making use of the library's functions. I plan to sell the final obfuscated executable and I'm wondering: what's the final license of the complete software? Do I only have to release the GPL library or does the GPL license apply for all the code I wrote? What happens to Node-Webkit's MIT license?
MIT License – Do You Have to Release Code of MIT Licensed Software Using a GPL Library?
gpllicensing
Related Solutions
To answer the third question first, the fact that your program uses a library licensed with license X does not necessarily mean that your program must also use license X.
For permissive licenses, like BSD, you are completely free to choose a different license for your own code.
When the library uses a strong copyleft license, like GPL, then you can avoid a lot of legal questions and uncertainty by using the same license for your code.
The reason for this is because copyleft licenses require you to distribute the entire product that makes use of the copyleft licensed source under the copyleft license conditions. So, when you distribute your program, the GPL conditions of having to provide source code apply to both your code, the PyQT library and the additional BSD-licensed library that you use.
Neither the BSD nor the GPL license prevent you from asking money for your program, but they also don't forbid anyone to buy the program from you and redistribute it further without asking money for it.
The reason that PyQT is available both with the GPL and a commercial license is to make it possible to write commercial applications based on PyQT without having to release your source code.
Since you're making a derivative work of GPL-licensed software, your combined work would need to be licensed under the GPL as a whole. However, if you don't want to distribute your work, you are in no way compelled to shared your changes.
The GPL FAQ has this to say on keeping your modifications private:
Does the GPL require that source code of modified versions be posted to the public?
The GPL does not require you to release your modified version, or any part of it. You are free to make modifications and use them privately, without ever releasing them...
But if you release the modified version to the public in some way, the GPL requires you to make the modified source code available to the program's users, under the GPL.
Thus, the GPL gives permission to release the modified program in certain ways, and not in other ways; but the decision of whether to release it is up to you.
Thus, you are not required to make your modified program public, but you if you do, you must share it under the GPL.
Perhaps you're also worried that sharing your output calendars will compel you to share your modified code. The FAQ explains that output data produced by a GPL-licensed work is not covered by the GPL, unless the output actually contains GPL-licensed material (e.g., if part of the GPL-licensed program itself is included in the program's output):
Is there some way that I can GPL the output people get from use of my program? For example, if my program is used to develop hardware designs, can I require that these designs must be free?
In general this is legally impossible; copyright law does not give you any say in the use of the output people make from their data using your program. If the user uses your program to enter or convert his own data, the copyright on the output belongs to him, not you. More generally, when a program translates its input into some other form, the copyright status of the output inherits that of the input it was generated from.
So the only way you have a say in the use of the output is if substantial parts of the output are copied (more or less) from text in your program. For instance, part of the output of Bison (see above) would be covered by the GNU GPL, if we had not made an exception in this specific case.
In what cases is the output of a GPL program covered by the GPL too?
Only when the program copies part of itself into the output.
So, your output is probably not GPL-licensed. Note that even in some unusual case where the output is somehow GPL-licensed (like a Bison grammar), the output is a separate work from the program that created it. You'd need to obey GPL restrictions on the output, but sharing GPL-licensed output does not mean you must share changes on the GPL-licnesed program that created that output. The GPL on the program only comes into effect when the program itself is distributed, not when its output is distributed.
Best Answer
This is a question for your attorney.
I am not an attorney, and more importantly I'm not your attorney. This is not legal advice. This is merely my rumination on the topic.
The effect of the GPL on your code depends on the definition of the GPL's concept of linking and derivative works. Because this is JavaScript, the matter of linking is not entirely clear. But if your code uses the GPL'd library, then your program as a whole is dependent on it and is therefore bound by the terms of the GPL. Under those terms, any user can demand the full, unobfuscated source code (under the GPL requirement of source code being in the "preferred form of the work for making modifications"), and you are required to convey it.
If you wish to distribute your work under a "proprietary license," and in an obfuscated form, then your work will be in violation of the GPL if you include any GPL code and do not also offer the full original source code for your project.