diff --git a/_data/docs.yml b/_data/docs.yml index 2b30176c..64312334 100644 --- a/_data/docs.yml +++ b/_data/docs.yml @@ -4,6 +4,7 @@ - overview/hardware - overview/rtos - overview/ext_tools + - overview/license - overview/comparison - overview/ROS_2_feature_comparison - overview/docker_ci_status diff --git a/_docs/overview/features/index.md b/_docs/overview/features/index.md index 7e11b4c8..ab6075fb 100644 --- a/_docs/overview/features/index.md +++ b/_docs/overview/features/index.md @@ -85,7 +85,7 @@ Micro-ROS offers **seven key features** that make it ready for use in your micro
✔ Permissive license (...)
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.
-When creating a project with an underlying RTOS, please take into account the license(s) of the RTOS project or vendor.
+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 license page.
+
+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.
\ No newline at end of file
diff --git a/img/micro-ROS_license_overview.png b/img/micro-ROS_license_overview.png
new file mode 100644
index 00000000..3feb0228
Binary files /dev/null and b/img/micro-ROS_license_overview.png differ
diff --git a/img/micro-ROS_license_overview.pptx b/img/micro-ROS_license_overview.pptx
new file mode 100644
index 00000000..d5e9f80e
Binary files /dev/null and b/img/micro-ROS_license_overview.pptx differ