Licensing for products based on 86Duino

Licensing for products based on 86Duino

Since 86Duino software follows Arduino software, so this document focuses on the description of the software used in QEC. Please see Licensing for products based on Arduino for details.

AdobeStock_94260502

These rules apply to all derived products and projects, whether commercial or not, open-source or not.

Note:

  • You can freely use Arduino hardware and software for your personal purposes or within your company or organization, with no restrictions. The rules described in this document apply only when you distribute products based on Arduino to third parties or you make them public in any form.
  • If you comply with the open-source licenses of Arduino, you can distribute your software/hardware products for free or commercially. This document provides a summary of such rules for your convenience and does not waive the need to get professional legal advice.

A derived product can be based on Arduino hardware designs, Arduino software components, or both. For each category, different rules apply and your product must comply with all of them.


Software products

Any software project made with Arduino will be subject to the licenses of several components, including:

  1. the Arduino core for the specific board you’re compiling for (i.e. the underlying hardware abstraction layer that provides the Arduino API);
  2. any library used in the project;
  3. any third-party code you included or copied to the sketch folder.

Whether the Arduino IDE, Arduino CLI, or any other development tools were used in the process does not affect the licensing of your project. What matters is the combination of the licenses covering all the code components that get compiled and linked in the final binary artifact.

In this section, we’ll go through the most common cases, assuming you’re using one of the cores maintained by Arduino (i.e. the official ones for the boards manufactured by Arduino). If you’re using a third-party core, these guidelines might not apply, and you’ll need to check the respective licenses carefully.

Publishing an Arduino sketch as an open-source project

If you developed a sketch based on Arduino and you want to publish it as an open-source project in source code form, no restriction applies. We recommend choosing a popular license such as MIT, Apache-2.0, MPL-2.0, or AGPLv3.

Distributing an Arduino sketch or library in precompiled form (or preloaded in a hardware product) without disclosing its source code

In this case, you need to go through three steps:

  1. The first thing to do is to check whether you’re using any code snippet or library covered by the GNU General Public License (GPL). Unfortunately, in that case, you are mandated to disclose the source code of the entire project. To avoid this you’ll need to replace that code or library with another one that is made available under a more permissive license such as LGPL, MIT, BSD, Apache-2.0, or MPL-2.0. As an alternative, you can contact the author(s) and ask for a commercial license.

Note: If you need a commercial license for official libraries developed by Arduino licensed under the GNU GPL, contact us at license@arduino.cc.

  1. Prepare a comprehensive document with the list of all the open source components involved, along with the copyright notices and the licenses, and make it available to the end users as part of the documentation.
  2. Last but not least, you need to comply with article 4.d of the LGPL license which has specific and very technical requirements. Complying with such requirements, which derive from the LGPL being used in the Arduino core, is usually a matter of providing end users with some documentation and binary files.

Note: We can provide companies with support and tools that allow them to comply with this requirement in an easy and automated way. Contact us at license@arduino.cc for more information.

Distributing a modified version of an Arduino core or library without disclosing its source code

In this case, you need to check the license of the specific code part that you modified. If that code was licensed under LGPL, GPL, or MPL-2.0 you must keep your modifications open source. If a permissive license such as MIT, BSD, or Apache-2.0 is used, you are not mandated to keep your modifications open source, but you must retain the copyright notices of the original codebase.

Re-distributing the Arduino IDE or CLI

If you intend to make the Arduino IDE, CLI, or Cloud-CLI available to your users in binary form without any modification as direct downloads or as part of a larger distribution, you can freely do so. This includes the case of calling the CLI as a separate executable binary from another program.

If you intend to include the CLI in your project and call it as a library (instead of calling it as an executable binary), its GPLv3 license will apply to your code as well, which results in the obligation to keep the entire codebase open source.

Note: If you still need to call the CLI as a library in your derived product without having to release the combined work as open source, contact us at license@arduino.cc to get an exception to this rule.

If you intend to distribute the IDE or CLI with modifications, you must keep your modifications open source. Also, you cannot use the “Arduino” trademark in the name of the resulting artifact.


From QEC Team

This section is put together by the QEC team and the 86Duino team for the 86Duino license and the Arduino license.
The Arduino license can be roughly divided into two parts: Arduino IDE (UI) – GPL v2 license and Arduino core (standard library) – LGPL license.

  1. LGPL: Unlike GPL, LGPL allows, under certain circumstances, for LGPL-licensed code to be statically or dynamically linked to software that isn’t licensed under LGPL without requiring the entire software work to be licensed under LGPL. If your code merely links to LGPL code without modifying the LGPL portion, you can maintain your code with a separate license. Put simply, LGPL is more lenient than GPL. As long as the original code is used without modification, there’s no need to disclose the additional incorporated code.
  2. GPL: Even if the original code is used without modification, any additional code added by the user must be made public. It has stricter terms compared to LGPL. Thus, when users develop programs using the Arduino standard library, which is licensed under LGPL, they don’t have to disclose their own code.

Regarding 86Duino Libraries

The 86Duino standard library (excluding independently developed libraries) also adopts the LGPL license. If users directly use it without any modifications, they can keep their own developed code private.
It’s important to note that Arduino also allows for the downloading/adding of third-party libraries. The license used by these third-party libraries might be either GPL or LGPL, which is typically stated at the top of the .h or .cpp files. Whether to use a third-party library is up to the user’s discretion.

Spotting the declaration: Below is an image from the Arduino standard library, specifically the Arduino.h file. From the highlighted box, one can see that it uses the LGPL license. Many similar license declarations can be found in other .h or .cpp files.

Arduino standard library,

When developing programs using the 86Duino IDE, as long as the APIs and libraries you use are limited to the following scopes, you can release your product as closed-source without being restricted by the GPL:

  1. APIs within the 86Duino core. (All those listed on this page are included: https://www.qec.tw/86duino/86duino-language-reference/)
  2. The built-in “Arduino Standard Libraries” in the 86Duino IDE. (Refer to the list on this page: https://www.qec.tw/86duino/libraries/)
  3. The built-in “86Duino Only Libraries” in the 86Duino IDE. (Refer to the list on this page: https://www.qec.tw/86duino/libraries/)
  4. All EtherCAT-related libraries from QEC, as well as libraries automatically generated using the 86EVA and 86HMI tools.

If a client, while developing for 86Duino, downloads and uses a third-party library written by someone else and that library is licensed under GPL v2/v3, they must comply with the GPL and open source their program.


Still need help?

If the licensing terms are too restrictive for your project, or if you need further help, contact us at info@86duino.com or info@icop.com.tw to explore possible licensing options.

Leave a Comment

Scroll to Top