Commercial usage of snaps and dealing with licensing



I would like to use a snap of my ROS code in a commercial product, however I do not want to breach any license agreements.

Does anyone know the specifics around the core parts of ROS which are pulled into a snap? I found that QT has an lgpl license so the dynamic libraries need to be able to be swapped out however I don’t think this is possible with a snap.

Any advice would be much appreciated.



What ROS are you referring to?

I’d be curious to know if the Free Software weighed in at all on the compatibility of LGPL or even GPL software with closed source commercial Snaps.


Yea that is the ROS I meant. I love how snaps can simplify the use and distribution of such things but trying to figure out how licensing would work is proving to be harder than I first thought.


I keep checking back hoping someone would have chimed in on your question. Maybe update the subject to include “effects of using Snaps w/LGPL” or something to that effect?

ROS is pretty specific. Ultimately we want to know what new licensing considerations Snaps present.


Hey there @mhampton, sorry for the delay, I’m subscribed to several categories, but there doesn’t seem to be a way to subscribe to “no category”. Anyway, happy to help here. All the information in the following paragraph comes from snapcraft’s catkin plugin.

The only part of ROS that the plugin definitely, certainly adds into the snap is roslib. From there, it depends on the options you’re using and your software in general. Specifically, take note of the include-roscore and rosinstall-files options: both have an effect on the software put into the snap. Finally, it uses rosdep to determine the dependencies of your workspace and includes them in the snap, so you’ll need to determine those yourself.

Regarding ROS licensing specifically, quoting this page:

The core of ROS is licensed under the standard three-clause BSD license. This is a very permissive open license that allows for reuse in commercial and closed source products. You can find more about the BSD license here:

While the core parts of ROS are licensed under the BSD license, other licenses are commonly used in the community packages, such as the Apache 2.0 license, the GPL license, the MIT license, and even proprietary licenses. Each package in the ROS ecosystem is required to specify a license, so that it is easy for you to quickly identify if a package will meet your licensing needs.

In other words, while roslib and rosmaster/core are licensed under BSD, not everything coming from the ROS repo is. You’ll need to take a look at what your software is using.


In addition to @kyrofa’s answer you also need to consider the licensing of the OS underneath. If you are using Ubuntu in a commercial way then there are licencing considerations there too and it is best to contact Canonical if you are unsure.


Quick note on this: you’re right in the aspect that the snap is read-only, so the libraries can’t be e.g. deleted and replaced with something else. However, they are still dynamic libs. If you set LD_LIBRARY_PATH accordingly, you could make the binary use others. You can also unsquash the snap and alter it to use other libraries. I’m not a lawyer, but that doesn’t seem problematic to me.


Thank you for your replies.

I will definitely continue looking into it although it sounds a lot more promising then when I first started to try figure out how it would all work.

I will most likely get in contact with Canonical in the future to confirm all my assumption surrounding them.