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.

Thank you for your response and sorry for the delay given the Thanksgiving break.

The information you provided was really useful to us. Based on your response, and assuming Particle’s interpretation of the dynamic vs static linking of libraries holds, it looks like if anyone wants to make an application firmware to be closed source then they are advised not to use these LGPL-based Particle libraries at all? It also looks like the only solution is to depend on the change of LGPL license to something permissive with such Particle libraries. This will likely affect anyone who wants to build a proprietary (closed source) application firmware.

There are several standalone popular Particle libraries that are being used by the community such as PowerShield, ADXL362, ElectronAssetTracker. Internet button was another such example.
There are also some other libraries that are modified to support individual application needs such as ADC_hal, I2c_hal, RGBLed_hal as instructed in some community posts.

The question this raises is of course whether the application firmware that uses these modified libraries needs to adhere to LGPL (since these cannot be dynamically linked I guess?).
We are sure that there may be many others who may also need to modify some of the underlying particle libraries/code for their own applications. So, is there a process where the Particle Team/you can update the licenses to such common libraries/code which are used by the community in general to something permissive (we notice that recent libraries have been released as Apache) so we or the community as a whole has an option to keep our application firmware to be closed source.

Thank you for reading this longer message. We just wanted to clarify since this issue likely affects many people building products around Particle.

Hi Particle Team,

We were wondering if you had any update on the previous message regarding application firmware with Particle-based LGPL libraries. It would be great if you can provide a solution such that the community has an option to keep their application firmware to be closed source when they are using commonly used LGPL libraries/code (which are statically linked).

Thank you for your time.