Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions _data/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
- overview/hardware
- overview/rtos
- overview/ext_tools
- overview/license
- overview/comparison
- overview/ROS_2_feature_comparison
- overview/docker_ci_status
Expand Down
2 changes: 1 addition & 1 deletion _docs/overview/features/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ Micro-ROS offers **seven key features** that make it ready for use in your micro
<p class="feature_title">&#10004; Permissive license<span class="three_dots"> (...)</span></p>
<div class="feature_description">
<p>Micro-ROS comes under the same permissive license as ROS 2, which is Apache License 2.0. This applies to the micro-ROS client library, the middleware layer, and tools.</p>
<p>When creating a project with an underlying RTOS, please take into account the license(s) of the RTOS project or vendor.</p>
<p>When creating a project with an underlying RTOS, please take into account the license(s) of the RTOS project or vendor as further explained on the <a href="../license/">license</a> page.</p>
</div>
</div>

Expand Down
30 changes: 30 additions & 0 deletions _docs/overview/license/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
---
title: License Overview
permalink: /docs/overview/license/
redirect_from:
- /license/
---

This page gives a coarse overview to the license situation of micro-ROS. It is not intended as a legal advice and it does not relieve you to look at the license texts of all components that are used by your micro-ROS-based application or system (i.e. “product”).

The following architecture diagram lists the most important repositories with their respective licenses in the form `GitHubOrganization/RepositioryName [LicenseName]`.

<img src="/img/micro-ROS_license_overview.png" style="display: block; margin: auto; width: 100%; max-width: 650px;"/>

All packages taken from standard ROS 2 come under the [Apache 2.0 license](https://www.apache.org/licenses/LICENSE-2.0). Similarly, all middleware- and client-library-related packages that have been created in the micro-ROS project are provided under Apache 2.0. In the same way, eProsima’s implementation of the DDS-XRCE standard named Micro XRCE-DDS is provided under Apache 2.0.

One exception is the micro-ROS benchmarking tool. As it links against GPL v3 licensed libraries, it is itself provided under GPL v3. As long as the tool is used by you during development only but not included in the distributed product, this does not affect the license of your product.

Things get particularly interesting at the RTOS level: The micro-ROS build tool micro_ros_setup and the various modules for external build systems are provided under Apache 2.0 but use or are combined with very differently licensed RTOS and board support components. The fact, that typical embedded toolchains build the whole software (RTOS, micro-ROS and application) into one binary image makes the situation more complex compared to typical desktop operating systems with clear separation of individual executables and the OS kernel (cf. for example the Linux syscall exception to GPL).

We are aware of the following important license specifics in the RTOS supported by micro-ROS:

* NuttX license clearing: With the incubation at The Apache Software Foundation in December 2019, there has been significant license cleanup work. The [changelog for version 10.1](https://cwiki.apache.org/confluence/display/NUTTX/NuttX+10.1) states that thousands of NuttX files have been converted (from BSD) to Apache 2.0 and that the listing of 3rd party licenses used in NuttX has been improved.
* NuttX and uClib++: Before NuttX version 10, micro-ROS on NuttX required the use of the LGPL-licensed uClib++ library.
* ST-specific extensions for FreeRTOS: The [micro-ROS/freertos_apps](https://github.com/micro-ROS/freertos_apps/) repository contains extensions for various microcontroller families. Some of the header files for microcontrollers by STMicroelectronics are provided under ST's [Ultimate Liberty license](https://www.st.com/SLA0044), which "must be used and execute solely and exclusively on or in combination with a microcontroller or microprocessor device manufactured by or for STMicroelectronics."
* Third-party licenses in Arm® Mbed™ OS: The licenses of the third-party components are listed in the [LICENSE.md file](https://github.com/ARMmbed/mbed-os/blob/master/LICENSE.md) in the root of the repository.

... and in the corresponding tooling:

* GPL-licensed build scripts in Zepyhr: The third-party licenses are given directly [in the source tree](https://github.com/zephyrproject-rtos/zephyr/), but [docs.zephyrproject.org/latest/LICENSING.html](https://docs.zephyrproject.org/latest/LICENSING.html) states explicitly that few build scripts are used under GPL v2.
* GPL-licensed build tool files in ESP-IDF: The Espressif IoT Development Framework used for the ESP32 includes files menuconfig (Kconfig) and several other build tooling files licensed under GPL v2 or v3.
Binary file added img/micro-ROS_license_overview.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added img/micro-ROS_license_overview.pptx
Binary file not shown.