Open source
The concept of open source software and open source licenses was first introduced in the late 1960s and early 1970s by computer scientists and programmers who believed that the sharing and collaboration of software code would lead to better, more reliable, and more innovative software.
Arduino is considered to be one of the first companies in the world to adopt open source licenses for hardware engineering too. The company released the first version of the Arduino board in 2005, along with schematics for the board and the source code of the core firmware under an open source license.
This allowed anyone to use, modify, and redistribute the design freely, which greatly contributed to the success and popularity of the Arduino platform. The open source approach also enabled a community of developers and makers to collaborate and improve the platform, creating a wide range of libraries, tutorials, and projects that are still used today.
Benefits and obligations of different open source licenses
Open source licenses are legal agreements that define the terms and conditions under which licensed software or hardware can be used, modified, and distributed. There are several different types of open source licenses, each with its own set of terms and conditions, but the main concepts are generally the same.
Open source licenses generally retain the copyright of the software or hardware, but they allow users to use, modify, and distribute the code or design freely under certain conditions. Users are allowed to create derivative works (modifications) based on the original software or hardware, but these derivative works must also be made available under the same open source license, and a copy of the license must be distributed with the product.
Most licenses require credit to be given to the original authors when using or distributing the software or hardware and the acceptance of a disclaimer of liability that excludes any responsibility of authors and distributors for any damage or problems that may arise from using the licensed software or hardware.
Some of the main open source licenses that you may find in IoT projects are the following:
- MIT License: This is one of the most permissive open source licenses and allows users to use, modify, and distribute software or hardware for any purpose, including commercial purposes, without the need for attribution.
- GNU General Public License (GPL): This was the first widely recognized open source software license, released in 1989 by the Free Software Free Software Foundation.
- GNU Lesser General Public License (LGPL): The LGPL is primarily used for software libraries, although it is also used by some standalone applications. The LGPL was developed as a compromise between the strong copyleft of the GNU GPL and more permissive licenses such as the BSD licenses and the MIT License.
- Free Software Foundation (FSF): It is designed to ensure that software or hardware remains open source and free.
- Apache License: This is a permissive open source license that allows users to use, modify, and distribute the software or hardware for any purpose, including commercial purposes. However, users must provide attribution and must not use the original authors’ names or trademarks to promote their products.
- BSD Licenses, including the New BSD License and the Simplified BSD License: These are permissive open source licenses that allow users to use, modify, and distribute software or hardware for any purpose, including commercial purposes, without the need for attribution.
- Mozilla Public License (MPL): The MPL is a copyleft license that requires users to make any modifications to the software or hardware available under the same license, but allows them to add proprietary extensions to the software or hardware.
There are several benefits provided by an open source licensing model.
Open source licenses encourage collaboration and sharing, which can lead to faster innovation and better-quality software or hardware. Open source software or hardware engineering is often free, which can result in significant cost savings for users: they can modify the engineering and the products to meet their specific needs, without having to worry about proprietary restrictions. Open source brings an improved level of transparency and security because licensed products are reviewed and audited by many people, rather than just a few proprietary developers.
Arduino releases software and hardware under a combination of open source licenses. The Arduino Integrated Development Environment (IDE) software is released under the GPL v2 license; the hardware designs, including schematics and board layouts, are released under the Creative Commons Attribution Share-Alike license; while the software libraries are released under GPL v2, LGPL v2.1, and the MIT License, among others.
The protection of your intellectual property
The community of Arduino users appreciates the open source licensing model, for the benefits already mentioned earlier, while professionals still look with some reluctance at the adoption of open source for business purposes.
They may have concerns related to a lower or different level of support and maintenance that they can get compared to other proprietary products, but in many cases, they procure open source products because they compensate for that feeling with the cost savings of open source. A different thing is the consideration of intellectual property when releasing their own products: it is a critical barrier and, most of the time, professionals prefer to adopt proprietary licenses.
In my opinion, better knowledge of both the terms and conditions of the licenses and the available technologies would allow all professionals to opt in to open source, getting the benefits it provides without losing certain protection against unauthorized use or infringement of their proprietary solutions.
For example, not only may you protect the duplication of your open source IoT node just by adopting a secure bootloader, as we have seen, but you may also exploit open source software libraries without releasing the source code of your project and remaining compliant with the open source license.
In order to do this, you need to make a slight mind shift and consider your software as composed of two parts: the main software, which recalls the functionalities provided by third-party libraries, and your own proprietary library, with your know-how and proprietary technology.
If you structure your project by moving the intelligence of your device from the main application to the proprietary library, and the open source libraries provide their functionalities to the main application and not directly to your proprietary library, the game is done. In fact, your proprietary library can remain a binary library, without the need to publish its source code, and you need to publish the main application under open source and the binary code of your library only. Your main application doesn’t contain any strategic or valuable knowledge but is just a wrapping for calls and back-calls to your proprietary and third-party libraries.
Now, this approach requires some programming skills but you may get paid support from Arduino and its network of System Integrator Partners. These are industrial system integrators who joined a partnership program and are officially recognized by Arduino. This network also solves concerns about the after-sales support of Arduino-based IoT nodes and applications.
Respect for the Arduino trademarks in commercial applications
We have seen that the Arduino ecosystem fulfills all the requirements of an IoT application in terms of technical and licensing requirements. It’s now time to understand whether you can use it even for a commercial application without infringing any trademarks, incurring legal troubles.
Arduino technology is open source and you can copy an Arduino open source hardware design to further develop into your own product, but you must use your own brand name and logo for it.
You may use the Arduino software tools, such as the IDE, for free and as they are, to program the hardware even for commercial purposes.
If you would like to modify and further develop them, you may then redistribute them according to the included open source software license. So, the sale of derivative tools or their inclusion in commercial software products is not prohibited, but it may require modifications in order to be open sourced under the same license.
The usage of Arduino trademarks to identify hardware or software products not produced and maintained by Arduino is always forbidden. You may call them Arduino-compatible if you like and brand them with your own logo.
You may find many different success stories on the internet and the Arduino website of businesses that have successfully adopted the ecosystem for commercial IoT solutions in different verticals, respecting the principles mentioned here.
Some companies with large-volume projects have also successfully approached Arduino for co-branding or custom production licensing.
In the preceding section, we discussed the open source concept and discussed the details regarding different open source licenses and responsibilities while using these tools and related code in your projects. We also talked about intellectual property, which is very much related to commercial usage and preventing your product from being a copy or clone. This is the first chapter of the book and we have discussed in depth what the IoT is, its benefits, communication protocols and technologies, and a lot of other topics, giving you a broad overview of IoT architecture before starting the remainder of the book.