Software Licensing?

Hi so I'm at uni doing a project where all our programming has to be free to use so if we theoretically were to manufacture this product, there would be no issues.

We've programmed everything using the Arduino library but one our tutors caught us up and said we have to change it to C or something because Arduino library is not a free license. However this doesn't seem right from what I've seen on their commercial rules but at the same time I'm finding them a little confusing to understand:

Using the Arduino core and libraries for the firmware of a commercial product does not require you to release the source code for the firmware. The LGPL does, however, require you to make available object files that allow for the relinking of the firmware against updated versions of the Arduino core and libraries. Any modifications to the core and libraries must be released under the LGPL.

It doesn't really mention about paying for a license. So it is this true or no? Hardware wise we are using an ESP8266 which is much easier to use in Arduino IDE so we really want to continue using it.

MapleSyrup654:
Hardware wise we are using an ESP8266 which is much easier to use in Arduino IDE so we really want to continue using it.

I will proceed under the assumption this means you're using the ESP8266 core for Arduino :

MapleSyrup654:
We've programmed everything using the Arduino library but one our tutors caught us up and said we have to change it to C or something because Arduino library is not a free license.

There is no such thing as the "Arduino library". It's not clear what you mean by that.

Each hardware package (ESP8266 in this case) has its own core library. This core library will tend to follow the standard Arduino API (which may give the illusion of there being a single "Arduino library") but they may be licensed however the author of the core library wishes if it is their original work. Thus you need to check the core library files to determine the license.

You may also be using libraries that are written for use with the Arduino IDE. The Arduino IDE itself comes with some of these libraries (they are located in the libraries subfolder) but most of them are not compatible with ESP8266. The ESP8266 package provides its own set of bundled libraries. There are also many 3rd party libraries available. You would need to consult the source code of each of those libraries you use to determine the license. You will likely find that all the libraries bundled with the Arduino IDE and ESP8266 hardware package have open source licensed but that some 3rd party libraries do not specify a license and thus are considered "All Rights Reserved". I'd guess that is usually done out of ignorance rather than a desire to limit the use of the code and you may be able to contact the author to request a license documentation be added but you should not assume that just because the library was published online that it's free to use.

Each hardware package also uses a toolchain which will contain source code used by your project. In the case of ESP8288 this is the Espressif SDK and xtensa gcc.

MapleSyrup654:
However this doesn't seem right from what I've seen on their commercial rules but at the same time I'm finding them a little confusing to understand:

Since you're not using the Arduino core and likely are not using any of Arduino's official libraries that information is not relevant to this discussion. In fact that information is wrong anyway since not all the libraries are LGPL (though they do all have open source licenses). Again, you really just need to look at the source code you're using to see what the license is. I believe someone has already submitted an issue report to Arduino requesting they correct that statement.

There is a handy little summary of the licenses involved in the ESP8266 core for Arduino:

License and credits

Arduino IDE is developed and maintained by the Arduino team. The IDE is licensed under GPL.

ESP8266 core includes an xtensa gcc toolchain, which is also under GPL.

Esptool written by Christian Klippel is licensed under GPLv2, currently maintained by Ivan Grokhotkov: https://github.com/igrr/esptool-ck.

Espressif SDK included in this build is under Espressif MIT License.

ESP8266 core files are licensed under LGPL.

SPI Flash File System (SPIFFS) written by Peter Andersson is used in this project. It is distributed under MIT license.

umm_malloc memory management library written by Ralph Hempel is used in this project. It is distributed under MIT license.

axTLS library written by Cameron Rich, built from https://github.com/igrr/axtls-8266, is used in this project. It is distributed under BSD license.

If you go to the URL I provided above you'll see the original text of that quote includes links to the relevant license files, which should make it quite clear under which conditions the code may be used. If your use is not compliant with the license then you would need to contact the author to negotiate a license that meets your needs.

Check of all libraries you use the license - many are MIT, Apache or BSD licensed which basically means you can do what you want with it. No need to release source code or so.

Also (L)GPL software is no problem, they just require you to release the source with any changes (and if it's a library released as LGPL, that just accounts for that library, not the rest). You can freely sell your product.

If you want to be really sure, ask your university's legal department for their opinion. If they say you're OK, and you're not, at least it's not your fault.

As I understand, and have no legal knowledge other than if pay your parking tickets, you do not get into trouble.

but some if not all, of these free use licenses, state that any work that is a derriviative of that , or use that, are with the agreement that the work is also open and free.

but to put all this aside, It is doubtful that you will invent a patenatable software routine that cannot be achieved by a clean sheet approach.

to be on the safe side, what your prof was saying is that if you use the arduino bootlodader in your for-sale product, that you may be a derrivitive work.

if you learn actual C or C++ or ASM, or even FORTH, you can program your chip in one of those without any roots in the Arduino world.

there have been many people who develop in the Arduino world, then just re-write the programs in some other language for different reasons. one is speed of execution. another is to get access to tools not available when using the bootloader.

so, first off, don't reveal your patentable secrets,

Then when you think you have that better mouse trap, write it in a way that does not use the Arduino boot loader and that way you eliminate the possibility of the issues you fear.

There is no Arduino bootloader on an ESP8266.

wvmarle:
... If you want to be really sure, ask your university's legal department for their opinion. If they say you're OK, and you're not, at least it's not your fault.

That's funny! My school's legal department has honed their ability not to respond to user questions. The reason is explained in the second sentence of the above quote.

:smiley: :smiley: :smiley:

My school's legal department has honed their ability not to respond to user questions.

:smiley: :smiley: :smiley:

Once when my company was working on some kind of joint venture deal, the boss mentioned that they needed to run it by the lawyer. Later when I asked him about it he said, "The lawyers always say 'no' because it's the least risky answer". (I think he went-ahead with the deal anyway... He was an entrepreneur, not a lawyer or bureaucrat. :wink: )

I'd imagine it's much worse at a university because you aren't the client... You are not paying the lawyer and there's no need for the lawyer to please you and they have nothing to gain and everything to loose by sticking their neck out.

DVDdoug:
:smiley: :smiley: :smiley: :smiley: :smiley: :smiley:

Once when my company was working on some kind of joint venture deal, the boss mentioned that they needed to run it by the lawyer. Later when I asked him about it he said, "The lawyers always say 'no' because it's the least risky answer". (I think he went-ahead with the deal anyway... He was an entrepreneur, not a lawyer or bureaucrat. :wink: )

I'd imagine it's much worse at a university because you aren't the client... You are not paying the lawyer and there's no need for the lawyer to please you and they have nothing to gain and everything to loose by sticking their neck out.

You are correct that we are not the client. I believe "minion" is the term they use in the contract. That said, it would be great if they would occasionally say "no." But the way of the district is that questions go up, but answers never come back down.