ESP8266 is the now famous dirt-cheap Wi-Fi SoC used for IoT applications. It can be used by hobbyists and companies alike. But for the later, there was a licensing issue as Espressif ESP8266 SDK was initially released under the GPLv3 license. GPL code is great and lots of open source projects are released under the most common open source license. But since proprietary, closed source software has still its place in the market place, some other more permissive licenses such as LGPL are used for library, and Android for example has an Apache License 2.0.
So previously, if you developed an application using ESP8266 SDK, you’re code would have to be GPL too, since the license is viral. It would also cause issues if you had released your application under an Apache or MIT license.
But now, all is well, as Espressif released ESP8266 SDK 1.10 under an MIT license, and also fixed various bugs in the process. That means that to make sure you don’t have licensing issues in your project, you should probably update to the latest version of the SDK.
Thanks to Paul and Jon for having brought up the issue, and help convince Espressif to change the license.
Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011.
Support CNX Software! Donate via cryptocurrencies, become a Patron on Patreon, or purchase goods on Amazon or Aliexpress
Does MIT gives you to right to get the source code from binaries, let’s say for ex liblwip.a?
Here is the licence text:
ESPRSSIF MIT License
Copyright (c) 2015
Permission is hereby granted for use on ESPRESSIF SYSTEMS ESP8266 only, in which case, it is free of charge, to any person obtaining a copy of this software and associated documentation files (the ¡°Software¡±), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED ¡°AS IS¡±, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@Simos
It’s good to add the licence text in the post, and also mention the “ESPRESSIF SYSTEMS ESP8266 only” part.
Maybe you should go work for ARMs pr! viral is an unnecessarily derogatory termm it is not a disease you can catch by accident. All it does is respect the authors rights more than one who wants to use their work selfishly and doesn’t want to share. It doesn’t force anyone to use it over doing or paying for it elsewhere. It also doesn’t force your code to be gnu gpl, only gpl compatible and available in full source form.
The ‘only’ clause in the new one seems problematic, it appears to render it gpl incompatible as it adds restrictions on use.
@notzed A viral license like the GPL was a problem for the esp8266 base run-time. The GPL and Apache license are not compatible although both are open source. When the esp8266 base was licensed GPL none of the existing Apache licensed code could be used with it.
In real a OS there is a boundary between the OS and user space. Viral licenses don’t cross that boundary. So the Linux kernel can be licensed GPL without also forcing every other app on Linux to also be GPL. There are 100’s of open source licenses in use. Many of those licenses are incompatible with the GPL but they are still open source.
On the ESP8266 you link the OS run-time directly into your application. If the OS run-time is GPL that then forces the linked applications to also become GPL. But there are thousands of open source apps out there with GPL incompatible licenses. The Apache license is the most common of these.
To resolve this licensing issue the core run-time for the ESP8266 was relicensed with the MIT license. The MIT license is not viral and extremely permissive (even more permissive than the GPL). Now code with any license can be linked to the ESP8266 run-time. This change was specifically made to accommodate someone with Apache licensed code.
@notzed As for the only clause.. Applications written for OS’s where there is no dynamic link boundary and the OS run-time is linked into the application should not be licensed GPL. Licensing LGPL would remove any problems.
But if you insist on running GPL licensed code on the ESP8266. You will need to create a dynamic linking layer between your code and the OS. That dynamic linking layer will stop the viral effect from crossing into the OS run-time. Dynamic linking layers are not that crazy – uboot has one for device drivers.
It is not considered fair use to write a GPL app, link it to a non-GPL library, and then demand source for that library. Try that with a Microsoft library and see how far you get.
Well, I missed this “ESPRESSIF SYSTEMS ESP8266 only” part myself %). What can I say? It’s “common industry practice” as they like to say. Look at the drivers for more or less non-trivial hardware from vendors – they usually have that clause. I can give example of EnergyMicro, whose CMSIS and drivers were Zlib-licensed quite before ARM released core CMSIS under BSD, for what they deserve big kudos. All except USB drivers, which were zlib + “EFM32 only” clause.
All in all, it’s the big improvement over previous situation, when a conscious vendor would feel violating and conscious open-source developer – being a crook.
And we know what ESP8266 SDK consists of (look at README of https://github.com/pfalcon/esp-open-sdk if you don’t know). If there’s sufficient community will, those components can be replaced with upstream versions, so the only part which will be left is ESP8266 hardware drivers, which are, well, can run only on ESP8266.
Folks like @notzed can even put their actions where their word is, reverse-engineer it completely and give the world completely free, and even dirt-cheap, wifi module (but better forward-engineer a new chip from silicon level, let it be not so cheap, but ground-up free).