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

Revision history [back]

click to hide/show revision 1
initial version

A question like this is extremely complex. Linking with GPL'd licenses is still regularly under debate. You really need to talk to a lawyer or someone that specializes in these areas.

That being said, here is my take on the issue and some concerns that you must think about. The GPL states that "Linking ABC statically or dynamically with other modules is making a combined work based on ABC. Thus, the terms and conditions of the GNU General Public License cover the whole combination." That being said, although you may not be changing the GPL'd package in any way, if your package requires that package to exist in order to function, I would say that's linking against. If the GPL'd package is included in your manifest.xml, then it's pretty clear that it's required for operation.

Even without requiring the package directly, if your program requires that the GPL'd node be running, one could argue that you're "linking against" it. The ROS node system obfuscates the linking process, and hence you would need to speak to a professional.

ROS's BSD license does not carry these concerns.

A question like this is extremely complex. Linking with GPL'd licenses is still regularly under debate. You really need to talk to a lawyer or someone that specializes in these areas.

That being said, here is my take on the issue and some concerns that you must think about. The GPL states that "Linking ABC statically or dynamically with other modules is making a combined work based on ABC. Thus, the terms and conditions of the GNU General Public License cover the whole combination." That being said, although you may not be changing the GPL'd package in any way, if your package requires that package to exist in order to function, I would say that's linking against. If the GPL'd package is included in your manifest.xml, then it's pretty clear that it's required for operation.

Even without requiring the package directly, if your program requires that the GPL'd node be running, one could argue that you're "linking against" it. The ROS node system obfuscates the linking process, and hence you would need to speak to a professional.

ROS's BSD license does not carry these concerns.

EDIT: The Free Software Foundation made the following two statements regarding programs that operate using pipes, sockets, RPC (like ROS), etc.

"By contrast, pipes, sockets and command-line arguments are communication mechanisms normally used between two separate programs. So when they are used for communication, the modules normally are separate programs. But if the semantics of the communication are intimate enough, exchanging complex internal data structures, that too could be a basis to consider the two parts as combined into a larger program."

and

"The glue script (rpc and rpc messages, sockets, pipes, etc.) would ultimately create a single work, derived from both the original scripts, and you would need to follow the terms of all those licenses to create it. Combining the first script with the second this way would violate its exception-free GPL."

A question like this is extremely complex. Linking with GPL'd licenses is still regularly under debate. You really need to talk to a lawyer or someone that specializes in these areas.

That being said, here is my take on the issue and some concerns that you must think about. The GPL states that "Linking ABC statically or dynamically with other modules is making a combined work based on ABC. Thus, the terms and conditions of the GNU General Public License cover the whole combination." That being said, although you may not be changing the GPL'd package in any way, if your package requires that package to exist in order to function, I would say that's linking against. If the GPL'd package is included in your manifest.xml, then it's pretty clear that it's required for operation.

Even without requiring the package directly, if your program requires that the GPL'd node be running, one could argue that you're "linking against" it. The ROS node system obfuscates the linking process, and hence you would need to speak to a professional.

ROS's BSD license does not carry these concerns.

EDIT: The Free Software Foundation made the following two statements regarding programs that operate using pipes, sockets, RPC (like ROS), etc.

"By contrast, pipes, sockets and command-line arguments are communication mechanisms normally used between two separate programs. So when they are used for communication, the modules normally are separate programs. But if the semantics of the communication are intimate enough, exchanging complex internal data structures, that too could be a basis to consider the two parts as combined into a larger program."

and

"The glue script (rpc and rpc messages, sockets, pipes, etc.) would ultimately create a single work, derived from both the original scripts, and you would need to follow the terms of all those licenses to create it. Combining the first script with the second this way would violate its exception-free GPL."

The Free Software Foundation is very active in protecting the rights of GPL'd code, so it's best not to make any assumptions at all in this matter. While there are merits to both sides of the argument, the one thing we all agree on is that there's someone that knows the rules better than we do. You should find that person and talk to them, just to be safe.