Releasing changes to particle based LGPL libraries in Application Firmware

Hi Particle Team,

There are several libraries available in the Particle Web IDE which are from particle are the ones that have LGPL/GPL license on them. Do the changes to the LGPL based libraries from a particle on the Application Firmware need to be released as well? For example, if the application firmware using the DeviceOS is using the Particle built - LGPL based library Internet Button is being updated and customized for the application firmware needs. Then should the changes be released by the terms of LGPL.

We ask this since it is mentioned in the Particle DeviceOS repository it mentions that “ You are NOT required to share your Application Firmware or object files when linking against libraries or System Firmware licensed under LGPL. .” But also mentions that If you make and distribute changes to System Firmware licensed under LGPL, you must release the source code and documentation for those changes under an LGPL license.. So Do the changes to the LGPL-based libraries from Particle on the Application Firmware need to be released as well? Also, what is the licensing terms for application binaries?


I am not a lawyer.

The general concept is that libraries that are LGPL licensed and are dynamically linked with an application do not require the application to be LGPL or GPL licensed. Thus you can build your application with any license, including closed source even though Device OS itself has parts with different licenses, as there is a dynamic linking boundary between the two. While some commercial products using Particle are open source, many are closed source. This is legal.

The caveat comes with firmware libraries for Particle. Many have permissive licenses such as MIT or BSD which can be used with either open or closed source products, and thus the resulting application can be closed source.

It’s our belief that GPL or LGPL Particle firmware libraries cannot be used in a closed source application. The distinction for LGPL is the method of linking. Firmware libraries use static linking, and thus do not qualify for the exception from open source licensing of the resulting application.

As for the InternetButton in particular, I believe we may have set the license before we noticed the dynamic linking caveat, and it might be possible for us to just change the license on that particular library.