fourstix / QwiicSerLCD

Version of Arduino LiquidCrystal Library for Sparkfun Serial Enabled LCD with a Qwiic Adapter
MIT License
1 stars 14 forks source link

License Issue - code is derived from LGPL 2.1 code #26

Closed bperrybap closed 3 years ago

bperrybap commented 3 years ago

While the licensing of LiquidCrystal (or bundled Arduino libraries in general) was not obvious prior to 2015, things got much clearer in 2015 to more clearly state the current and past license for the LiquidCrystal library going back to 2006 was/is LGPL 2.1

This library code is a derivative of LiquidCrystal and LiquidCrystal_I2C both of which were/are licensed LGPL 2.1+ LGPL 2.1+ does not allow re-licensing derivative code with a different license with substantially different terms such as public domain or MIT The LGPL 2.1+ terms require that this library must also be licensed as LGPL 2.1+ or can use the "+" convert option to convert the license to a later/newer license such as gpl v3

This is from SerLCD.cpp

 * License: This code is public domain but you buy me a beer if you use this and we meet someday (Beerware license).
 *
 * This library is based heavily on the LiquidCrystal_I2C library and the sample code provided with
 * the SparkFun Serial OpenLCD display.  The original LiquidCrystal library by David A. Mellis and
 * modified by Limor Fried and the OpenLCD code by Nathan Seidle at SparkFun.
 *
 * The LiquidCrystal_I2C library was based on the work by DFRobot.
 * (That's the only attribution I found in the code I have. If anyone can provide better information,
 * Plese let me know and I'll be happy to give credit where credit is due.)

I have notes on LiquidCrystal and LiquidCrystal_I2C files that go back more than 10 years. Unfortunately, some of the web pages & files are no longer available.

Here is a more complete background history of the LiquidCrystal_I2C code.

The key take away is that the LiquidCrystal_I2C library is not an original work by DFRobot. The DFR code is a derivative of an earlier LiquidCrystal_I2C work by Mario H. which is derivative of LiquidCrystal

The LiquidCrystal_I2C files found out on the net typically have no copyright or licensing notices in them but they are clearly from the same origin given they are all nearly identical to the much older LiquidCrystal_I2C files by Mario H which originally were hosted here https://hmario.home.xs4all.nl/arduino/LiquidCrystal_I2C

This web page: http://playground.arduino.cc/Code/LCDi2c mentions Marios LiquidCrystal_I2C library as being available as of 2009-09-14 Mario's web page also claims his library was released in 2009 and in the V1 zip image here: http://www.xs4all.nl/~hmario/arduino/LiquidCrystal_I2C/V1.0/LiquidCrystal_I2C_V1.0.zip all the files but 1 are dated 2009. And in the info sub directory there is a file called "readme.txt" which states:

LiquidCrystal_I2C V1.0

The LiquidCrystal_I2C library is a modified version of the standard LiquidCrystal library as found on
the Arduino website.

So given Mario's LiquidCrystal_I2C library predates DFRobot LiquidCrytal_I2C and DFRobot LiquidCrystal_I2C seems to have started with Mario's code, DFRobot LiquidCrystal_I2C would be a derivative of Mario's LiquidCrystal_I2C library and Mario's library is a derivative of the IDE LiquidCrystal library.

While the IDE LiquidCrystal code did not contain copyright notices or license information in the LiquidCrystal source files themselves, at the point in time when LiquidCrystal_I2C was created, the IDE LiquidCrystal code was licensed as LGPL 2.1 as indicated in the license.txt file in the root directory of the arduino.cc IDE repository which was committed October 11, 2007 and has not changed since. It can be seen here: https://github.com/arduino/Arduino/blob/master/license.txt license.txt was a catchall license for all Arduino core files and libraries provided by the IDE. It contains a small note:

===========================

next, the gnu lesser general public license that covers the arduino core and libraries.

===========================

What is below that tiny comment in the readme file is a LGPL 2.1 license agreement. So it seems that the intent was that the LiquidCrystal library was released as LGPL 2.1

In 2015 the IDE LiquidCrystal source files were updated to contain a copyright notice and license within the files.

Copyright (C) 2006-2008 Hans-Christoph Steiner. All rights reserved.
Copyright (c) 2010 Arduino LLC. All right reserved.

[ with a LGPL 2.1+ notice ]

To make it clear that the license for the LiquidCrystal library originally was and still is LGPL 2.1

fourstix commented 3 years ago

Duplicate of Issue #27

bperrybap commented 3 years ago

I'm not sure how the duplicate got created. My browser did report "server not found" the first time I submitted it so I submitted it again. I guess the first submit actually did create it even though I got the error.