ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

How do ROS projects such as RViz justify release under BSD while statically linking against Qt, which is LGPL?

asked 2016-06-09 07:52:36 -0500

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?

edit retag flag offensive close merge delete


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.

Adam Allevato gravatar image Adam Allevato  ( 2016-06-09 08:30:43 -0500 )edit

Why do you believe linking is done statically in the case of RViz?

gvdhoorn gravatar image gvdhoorn  ( 2016-06-09 14:31:25 -0500 )edit

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.

Adam Allevato gravatar image Adam Allevato  ( 2016-06-09 17:20:03 -0500 )edit

You can look at the generated executables and libraries to check too. For example on my Linux VM: ldd $(which rviz) | grep Qt yields => /usr/lib/x86_64-linux-gnu/ (0x00007f0cb5142000) which is a shared library. Also I think the 3-clause BSD is compatible with LGPL.

William gravatar image William  ( 2016-06-09 17:59:31 -0500 )edit

1 Answer

Sort by » oldest newest most voted

answered 2016-06-09 14:04:23 -0500

William gravatar image

updated 2016-06-09 14:05:14 -0500

I am not a lawyer.

I think you'll find better resources about this in other places on the Internet:

I believe all that is required is that the derived work must dynamically like to the lgpl library, provide attribution to it, and allow the library to be replaced by the user for your program. Because we always dynamically link to qt, we don't have any restrictions on our license.

edit flag offensive delete link more


the fact that linking is dynamic in catkin by default is the key piece of information that I was missing. Thanks!

Adam Allevato gravatar image Adam Allevato  ( 2016-06-09 17:20:04 -0500 )edit

Question Tools



Asked: 2016-06-09 07:52:36 -0500

Seen: 2,128 times

Last updated: Jun 09 '16