espressif / esptool

Espressif SoC serial bootloader utility
https://docs.espressif.com/projects/esptool
GNU General Public License v2.0
5.56k stars 1.38k forks source link

Inclusion in non-GPL 2.0 licensed tools (ESPTOOL-244) #629

Closed moritz89 closed 3 years ago

moritz89 commented 3 years ago

Hi, I am aware of a number of tools that are licensed under the MIT or Apache 2.0 license or not at all that use this tool. AFAIK as soon as esptool is imported (subprocess.Popen circumvents this) the parent software falls under the GPL requirements.

Are there any plans of recourse, in the sense that the requirements of the GPL will be enforced?

projectgus commented 3 years ago

Hi @moritz89,

Thanks for asking about this, it's an interesting question.

Hi, I am aware of a number of tools that are licensed under the MIT or Apache 2.0 license or not at all that use this tool.

I Am Not A Lawyer and this isn't an official position, but I've taken a look. I'm not sure I see a significant issue here:

Please let me know if you think I'm missing something.

moritz89 commented 3 years ago

AFAIK (gnu.org, SX 1, SX 2) as soon as code is imported into a process (.so for C++, import for python), it is considered dynamic linking which therefore causes the linking code to fall under the GPL license. This is the case for the examples I listed above.

As for the case of code licensed under the Apache 2.0 and MIT license, it only works in one direction. That is, the Apache 2.0 and MIT code may be included by GPL code, but one may not distribute code that includes a GPL library (as is the case here) under a permissive MIT or Apache 2.0 license.

As far as I can tell, your goal is to use the permissiveness provided by the LGPL which allows linking of copyleft code without forcing the code that links to it to be copyleft (It only has to provide a mechanism to relink the LGPL library).

projectgus commented 3 years ago

as soon as code is imported into a process (.so for C++, import for python), it is considered dynamic linking which therefore causes the linking code to fall under the GPL license. This is the case for the examples I listed above.

That is the FSF's position on this, but just because the FSF says this does not make it a legal fact. The "SX 1" reference you posted links to Lawrence Rosen's different interpretation, I linked to another one above. The Linux kernel policy on binary modules is probably the most widely used counter-interpretation.

As I understand it, the legal question relies on whether or not some code A that dynamically references another piece of code B creates a derivative work either at the time the author writes the code A or at the later time when an end user runs that code, and whether GPL distribution clauses apply to either of these. That's why the first reply discusses derivative works.

EDIT: Cleaned up as this reply as I over-stated it the first time.

As for the case of code licensed under the Apache 2.0 and MIT license, it only works in one direction. That is, the Apache 2.0 and MIT code may be included by GPL code, but one may not distribute code that includes a GPL library (as is the case here) under a permissive MIT or Apache 2.0 license.

Understood. My point is that having an MIT or Apache license doesn't stop someone from re-incorporating any of the additional scripts into their GPLed project. This is more of a practical concern of whether this script licensing is causing any problems for someone who wants to work with GPL code.

As far as I can tell, your goal is to use the permissiveness provided by the LGPL which allows linking of copyleft code without forcing the code that links to it to be copyleft (It only has to provide a mechanism to relink the LGPL library).

I agree that would be clearer, even though as mentioned above I don't think the current situation is necessarily a problem.

Espressif isn't the only copyright holder of esptool (other holders include the original author, myself as an individual from before I worked at Espressif, plus a lot more people). So any relicensing is not a straightforward thing to do.