Integrate Open Source into Your Commercial IoT Product
Unlock the enormous potential of open source libraries for your IoT project. Gain efficiency and save on commercial licenses.
05/01/2022
Nathanaël Landais
Often overlooked early in development,
the question of licenses under which software
components used in your product development are distributed
is essential.
There are many libraries that can save
time and money in development that are distributed
under open source licenses. While some are under very
permissive licenses such as MIT or Apache, others are under LGPLv3
or GPLv3. The latter are considered difficult to integrate with an
embedded product and often deemed unusable for
a non-open-source commercial product.
Yet, you can integrate LGPLv3
and even GPLv3 components into your Linux embedded system. While
certain constraints come with using
components under these licenses, the time they save
may make them worth considering.
I'll explain what these obligations are and how to meet them.
I'm Nathanaël Landais, an architect in IoT embedded software development. I've designed and developed embedded systems relying on open source components now distributed in hundreds of thousands of units around the world. Their common thread: modern and fluid user interfaces.
LGPLv3 Obligations
The LGPLv3 license is quite permissive and allows you to distribute your system without opening its sources under certain conditions:
- For consumer-facing products, the consumer must have the ability to replace the LGPLv3 components used in your system themselves. Concretely, they must be able to recompile these components themselves and install them on your system in place of the version you provided. Information on how to proceed must be provided by the vendor.
- You must make the sources of these components available to your customers, even if you modified them. You must guarantee the availability of these sources; the simplest way to ensure this is to host them on your own server, though a third-party server can also be used.
- The licenses of the LGPLv3 components used must be delivered with the application and these components must be named. If your application displays any copyright information whatsoever, the text of the licenses and copyrights of external components must also be accessible.
- Open source components must remain separate from your software. What this means for a library is that it must not be directly integrated into your application's executable. One solution to meet this requirement is to distribute the open source component as a shared library (.so file on Linux)
GPLv3: A Stricter Version
The case is more complex with the GPLv3 license;
it shares the obligations listed for LGPLv3,
but adds the requirement to place any software that integrates
a GPLv3 component under that same license.
Concretely:
you develop your commercial product, you integrate a
component under GPLv3 license, and now your commercial product
is itself under GPLv3 license—meaning open source and free
to use and redistribute.
While this is certainly limiting,
you're not condemned to place all your software under
this license. A simple solution is to split your software into
several parts. You can manage interactions with GPLv3 components
from a component of your software dedicated to this purpose. This way
you can keep the strategic part of your code under a private license while
still benefiting from the advantages of external GPLv3 elements.
A First Step Toward Open Source
Want to develop your product with open source components?
What's certain is that it doesn't just happen—you must do what's necessary
to comply with the license you choose.
Don't do it alone,
contact me directly and we'll analyze together the compatibility of your
project and appropriate solutions. I've personally developed many successful
embedded systems using open source libraries.