Hi Matthias,
On 02/16/15 01:39, Matthias Waehlisch wrote:
all IoT scenarios. You gave one example -- I wouldn't claim general
applicability.
Agreed.
Several concerns have already been raised that developing for the IoT
world is not the same as developing for the non-IoT world. Separating
objects files might help in some cases. Other cases are described here,
for example:
https://www.tablix.org/~avian/blog/archives/2013/03/contiki_and_libopencm3_licensing/
Let me try to describe how RIOT licensed under LGPL relates to the
examples given in the article (all quotes taken from that site):
"I can see how this can be hard to comply with from the point of the
typical firmware developer. Such linking requires an unusual build
process that might be hard to setup in IDEs. Additionally, modern visual
tools often hide the object files and linking details completely. Using
proprietary compilers it might even be impossible to have any kind of
portable binary objects. In any way, this is seen by some as enough of a
hurdle to make reimplementation of LGPL code easier than complying with
the license."
As RIOT typically is not a library that is supposed to be linked into
some already working environment, but actually a whole OS coming with
it's own build system, using it's code from whithin a completely
different build system (e.g., one that comes with a proprietary IDE) can
either be trivial or a fundamental change to RIOT.
It would be trivial if the IDE can use RIOT's make based build system,
including easy seperation of object files.
If, on the other hand, a proprietary compiler/linker for proprietary
hardware is being used to compile RIOT's code, bypassing RIOT's build
system, it might indeed be hard to comply to LGPL's requirements.
That would be the case if the proprietary build system cannot be
configured to output proprietary object files seperatly and offer the
possibility to link precompiled object files during the build process.
While I personally wouldn't use such restricting development
environments in the first place, using RIOT for proprietary development
here probably wouldn't be feasible.
Does anyone have examples of such environments?
Maybe PsoC Creator IDE falls in this category?
"First such case was where software modification can enable fraud (for
instance energy meters) or make the device illegal to use (for instance
due to FCC requirements for radio equipment) or both. In a lot of these
cases however there is a very simple answer: if the user does not own
the device (as is usually the case for metering equipment), no license
requires the owner to enable software modification or even disclose the
source code. Where that is not the case, usually the technical means are
only one part of the story. The user can be bound by a contract not to
change particular aspects of the device and subject to inspections. The
anti-tivoization clause also does not prevent tampering indicators.
However it might be that in some cases software covered by
anti-tivoization might simply not be usable in practice."
Fraud or radio equipment abuse can easily be prevented using LGPLed
RIOT, by keeping the respecting code proprietary. Distributing the
object files does not make this any harder from a technical point of view.
"make the device illegal to use (for instance due to FCC requirements
for radio equipment)" -> as LGPLed RIOT allows completely proprietary
drivers, the code to actually drive the radio hardware can be as
proprietary and close as with a BSDed OS codebase. Distributing the
object files doesn't make tempering with the radio hardware
fundamentally different than if having to extract the (binary) firmware
from the device before changing the compiled radio code. (This assuming
that the compiled binaries for a fully proprietary radio device are
never distributed apart from the actual hardware, which is usually not
the case, even for locked-in GSM modems as found on our smart phones).
If law dictates that the compiled obect files or firmware must not be
distributed seperately from the device in question, LGPLed RIOT cannot
be used.
"The other case was where changed firmware can have harmful effects.
Some strong opinions were voiced that people hacking firmware on certain
dangerous devices can not know enough not to be a danger to their
surroundings. This is certainly a valid concern, but the question I see
is, why suddenly draw the line at firmware modification?"
IMHO the argument that a hackable device which might do harm if
improperly hacked should be "hardened" using closed source is complete
bullshit. I fail to see a valid example that is specific to object file
distribution when using an LGPLed base OS.
The article has some more points regarding anti-tivoization, wich do not
apply to LGPLv2.1 as it doesn't have those clauses.
To summarize, some use cases might be impossible or not feasible using
LGPLed RIOT.
LGPL is a copyleft license, definately restricting the usage of covered
code in some ways.
Some are technical and mostly boil down to inflexible, proprietary
software / tools used to develop a product.
There might be some areas where actual laws prohibit the use of (partly)
LGPLed software. (Usually these laws don't match any technical
justification.)
This might be a slight disadvantage for RIOT adoption, but let's not
forget the advantages an LGPLed ecosystem provides.
Kaspar
_______________________________________________
devel mailing list
devel@riot-os.org
http://lists.riot-os.org/mailman/listinfo/devel