Go Down

Topic: LGPL and Arduino in Commercial Products (Read 8210 times) previous topic - next topic

bperrybap



My understanding is that the overall intent of all the LGPL/GPL licenses is to always give
the end user the ability to update or alter the open source modules.


I have never thought the intent of the licensing has anything to do with giving the end user (specifically) the ability to do anything.


The LGPL/GPL licenses are all about giving and ensuring end user rights.
That is the "free" as in "freedom" part of the license.
The licenses preserve the end users rights to modify and change the open source components.

As an example,
have a close read of LGPL 2.1 section 6a which will come into play for an embedded f/w image.

Quote
if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library.


The intent of that is to allow users to be able to modify and/or update the open source portions of the code
should they choose to do so, even they are part of a larger work that contains closed source modules.

That is why if you go to say Samsung's web site you will find full tar images of their Android firmware releases
that contain all the compiled objects of their proprietary source modules and build scripts/makefiles s to re-build
the firmware.
The same is true for many embedded product manufactures.

--- bill

Robin2

@bperrybap,  I understand where you are coming from.

However I think "user" is capable of two interpretations. To follow your example there are people who are "users" of Samsung phones. And there are also people who are the "users" of (in the sense of developing) the software on the phone.

Most phone users have no need or wish to develop software and the licence is not aimed at their usage. Of course, to confuse matters, the developer "users" may also be phone "users".

The net effect of the licence is to prohibit Samsung from preventing the developer users from modifying the licensed software.

...R
Two or three hours spent thinking and reading documentation solves most programming problems.

bperrybap

Robin2,
Perhaps the term "user" was confusing or ambiguous.
However, it is the term that the LGPL license uses.
I think we are in total agreement.
I  tend to think of it as different types of people rather multiple interpretations of "user".
That is why I said:
Quote
The intent of that is to allow users to be able to modify and/or update the open source portions of the code
should they choose to do so


And so with respect to commercial products that use LGPL code in embedded environments
such as cell phones, DVRs, GPS devices, etc...
only a tiny very small number of people will actually choose to exercise their rights to modify/update
the LGPL code.  The vast majority will simply use the product "as is".

And as you said,
the license ensures that any person that wants to modify/update the LGPL code
contained within a larger work is able to do so even if not all the code in the larger
work is openly available.

--- bill

bperrybap

The bigger question in all this is:
Is it possible to fully comply with the LGPL license for commercial products that have closed source components?

I'm really not sure, but am leaning towards it isn't possible when using the Arduino IDE.

I think it is good question to post on the developers board and ask the Arduino team
how to comply with LGPL in commercial products when refusing to open up all
the source to the product.

https://groups.google.com/a/arduino.cc/forum/#!forum/developers
--- bill

MichaelMeissner

One problem with using the LGPL, is it assumes a more traditional environment where programs are compiled into object modules that are linked against system libraries.  However, in the Arduino IDE environment, it doesn't use object modules, except for the base avr libraries, and the modules provided by the compiler.  All of the additional Arduino stuff above the base libraries is recompiled each time from scratch.  Now, you could arrange to use make and more traditional object modules to comply with the LGPL.  However, given this, it might be simpler to just switch to a more traditional environment, and don't use the Arduino IDE as well.

Obviously, you have to go through each library that you use, to see what its copyright are, and either use it, or rewrite your own.

bperrybap

#20
May 17, 2014, 07:29 pm Last Edit: May 17, 2014, 07:31 pm by bperrybap Reason: 1

One problem with using the LGPL, is it assumes a more traditional environment where programs are compiled into object modules that are linked against system libraries.  However, in the Arduino IDE environment, it doesn't use object modules, except for the base avr libraries, and the modules provided by the compiler.  All of the additional Arduino stuff above the base libraries is recompiled each time from scratch.  Now, you could arrange to use make and more traditional object modules to comply with the LGPL.  However, given this, it might be simpler to just switch to a more traditional environment, and don't use the Arduino IDE as well.

Obviously, you have to go through each library that you use, to see what its copyright are, and either use it, or rewrite your own.


Sounds like you are also thinking it is not possible to comply with LGPL when using the Arduino IDE
to build the images.

Which kind of begs the question, of why the Arduino team went down the LGPL path for so much of their code
vs the GPL path given it looks like it isn't possible to comply with LGPL for closed source projects/products.

Quite likely it was a misunderstanding of the LGPL 2.x licensing terms for embedded projects/products.

--- bill

Go Up