How do ROS projects such as RViz justify release under BSD while statically linking against Qt, which is LGPL?
I'm building my own very simple, straightforward ROS/Qt application and am trying to figure out if BSD is an acceptable license for my code.
I am confused as to how many ROS projects (RViz, for example) have source code released under BSD, when that code includes headers from Qt and statically links to the Qt library, which is LGPL. According to Qt's Obligations of the LGPL (emphasis mine):
In case of dynamic linking, it is possible, but not mandatory, to keep application source code proprietary as long as it is “work that uses the library” – typically achieved via dynamic linking of the library. In case of static linking of the library, the application itself may no longer be “work that uses the library” and thus become subject to LGPL. It is recommended to either link dynamically, or provide the application source code to the user under LGPL.
This seems to imply that RViz and other ROS applications that statically link to Qt should be under LGPL. What is the justification for releasing RViz under BSD?
After further reading on this topic, I suspect that the answer to the question is:
Since the library (Qt) is not being modified, under the provisions of the LGPL, the work based on Qt does not have to be licensed under LGPL. I'd like some confirmation on this before I charge ahead, though.
Why do you believe linking is done statically in the case of RViz?
My understanding of CMakeLists was that using
link_libraries
defaulted to static linking, however, this page seems to say that dynamic linking is the default.You can look at the generated executables and libraries to check too. For example on my Linux VM:
ldd $(which rviz) | grep Qt
yieldslibQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007f0cb5142000)
which is a shared library. Also I think the 3-clause BSD is compatible with LGPL.