2

I am going to implement a closed-source, commercial application that uses and links statically the modbus-esp8266 library which is released under a BSD New license. At the same time, you can see in this library's files (file1, file2) that it includes (#include) other libraries that are released under the LGPL 2.1:

  1. Arduino.h
  2. ESP8266WiFi.h

(I am not a lawyer) I assume, that the modbus-esp8266 is properly released under the BSD license according to this anwser.

In case of my application, I don't provide the ESP8266WiFi library for building because the functionality of the application doesn't need it and it builds fine.

The Arduino.h file is needed by the application and is available by the system (the system is under LGPL and linked dynamically with the application-libraries binary).

Questions:

  1. As the application uses code indirectly (through the modbus-esp8266 lib) that is under LGPL 2.1 license from Arduino.h, do I have to comply with the LGPL license terms?
  2. Especially, do I have to let the end user to recompile the application-library object file with the parts under LGPL because of static linking of the modbus-esp8266 library?

I could also find this answer which explains exemption from LGPL terms if the included header file contains code of limited type only (numerical parameters, data structure layouts ...). However, I am not sure if the provided header files falls under this restrictions.

2
  • 1
    Does this answer your question? Sub-dependencies and code disclosure Jul 19 at 21:23
  • @PhilipKendall question that you provided partially answers my question giving general concept on sub-dependencies. My question touches more and also different things like LGPL license instead of Mozilla and is closely related to static and dynamic linking of a library.
    – maciekKuba
    Jul 20 at 12:32

1 Answer 1

1
  1. As the application uses code indirectly (through the modbus-esp8266 lib) that is under LGPL 2.1 license from Arduino.h, do I have to comply with the LGPL license terms?

Yes, you have to comply with the LGPL license terms in relation to those (transitive) dependencies that are provided under the LGPL license.

Similarly, you have to comply the the BSD license terms in relation to those (transitive) dependencies that are provided under the BSD license.

  1. Especially, do I have to let the end user to recompile the application-library object file with the parts under LGPL because of static linking of the modbus-esp8266 library?

No. You received the modbus-esp8266 library under the BSD license, which does not require that an end-user is able to replace the library with a different version.

You do have to provide the means for an end-user to replace the Arduino (or ESP8266WiFi) library in accordance to the LGPL license terms that apply to those. But those terms do not require you to give warranty on a modified system.

3
  • Thank you for your answer. I have following thoughts: 1. I edited my question and added information that the system which provides the Arduino.h file is released under LGPL and linked dynamically. Thus, can I "provide the means for end-user to replace Arduino" by suggesting replacing all the system? 2. Could I remove files including the ESP8266WiFi.h from the modbus-esp8266 as the BSD let's me modify? This way I could get rid of the dependency and then have no need to provide the means to replace ESP8266WiFi, am I right?
    – maciekKuba
    Jul 20 at 13:46
  • @maciekKuba, by using dynamic linking to the Arduino library, you are providing the means to replace the Arduino library, which in practice probably would mean "run your application on a different model Arduino device". Jul 21 at 6:09
  • @maciekKuba, You could remove the references to the ESP8266WiFi library, but that means creating a custom version of modbus-esp8266, which you then have to maintain yourself. If modbus-esp8266 tries to dynamically link to ESP8266WiFi but also works fine without it present, then is a user tries to add(/replace) that library then either it doesn't do anything or it gives them an additional, untested feature. Jul 21 at 6:15

Your Answer

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

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