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

Revision history [back]

Too long for a comment to Dimitri's answer, so separate answer.

IANAL, but I disagree with the interpretation that requiring a GPL'd node is "linking against" it. Statically or dynamically linking against a GPL component will get you one, complete binary file that contains that GPL component, hence the license applies to all of that binary. You should be careful about the manifest.xml, since you may automatically be linking against things if your ROS node has a dependency on the GPL'd package and it exports a library. That is one reason to use separate message packages.

If you are not directly linking against the GPL'd library, then your software should not need to be licensed as GPL. Just because you "require" a piece of GPL software in order to function, as long as the GPL component is standalone, I do not believe your software also needs to be GPL. Since nodes communicate via TCP and live in completely separate processes (and hence are separate binaries), I do not think the GPL can cross the process boundary and "infect" other pieces of software on the system. For example, much of ROS "depends" on the Linux kernel to function (which is GPL'd) but, because we don't link directly against the kernel and live in user-space, we don't need to worry about the kernel's licensing terms, since ROS is not a "derivative work" of the Linux kernel.

Really, my understanding is that if component FOO never includes any of the copyrighted material of BAR (either through headers or linking), then the license for BAR cannot affect FOO. Again, IANAL, so obviously you should consult an actual intellectual property lawyer (maybe the FSF has a list/could point you to one knowledgeable about the GPL) before making any business decisions.