The More Info is pointing to the wrong github entry as is the docs library entry. The Author name and version is correct at the top, only the links are wrong.
I tried to post this in the Projects/Libraries section but was blocked
The More Info is pointing to the wrong github entry as is the docs library entry. The Author name and version is correct at the top, only the links are wrong.
Hi @sonofcy. The links point to the correct repository on GitHub.
The "More Info" link on the Arduino IDE Library Manager entry points to this URL:
https://github.com/marcoschwartz/LiquidCrystal_I2C
This is exactly as expected from the library's metadata:
The URL is outdated, since the original owner of the repository marcoschwartz
transferred ownership to another user johnrickman
. However, GitHub automatically sets up a redirect from the old repository URL to the new URL when ownership is transferred, so the link still leads to the current repository:
https://github.com/johnrickman/LiquidCrystal_I2C
The "GO TO REPOSITORY" link on the library reference page points to this URL:
https://github.com/johnrickman/LiquidCrystal_I2C
This is exactly as expected from the library's registration entry:
Please tell me the URL you expected these links to point to so I can better understand the confusion.
Myself and another very experienced guy spent over an hour, on this, you need to check EVERYTHING.
Using the More Info, then look at that github library.properties, it says 1.1.4 and author Frank Brabander.
Also look in the IDE Library Manager, it's ver 1.1.2 and Frank de BraBander BUT click the More Info and we go to github for johnrickman then click the library.properties and it is ver 1.1.4.
Answer me one question please. Is it not true that the 'official' libraries are 'hard coded' into the IDE library manager? What I mean by that is if I do a fresh install I can find in library manager an uninstalled library called LiquidCrystal_I2C.
I am prepared to delete my Arduino15 folder and do a fresh install if needed, but I bet you know the answer to my question.
When you answer that we can look at more funny business if needed.
Here is a link to the start of a long back and forth about this library. The first link is 404 due to extra ) at end.
https://forum.dronebotworkshop.com/help-wanted/arduino-1602-display-help/#post-50365
To my knowledge "official" are submitted by the author to Arduino. Once approved they will show in library manager.
That will not help; 3rd party libraries are installed in the sketchbook directory if you use the library manager, not in Arduino15. If you use the ZIP install method, this also applies.
I can not answer other questions.
Arduino15 contains all my stuff, all the IDE, EVERYTHING to do with ARDUINO!!!!
If I delete Arduino15 and reinstall IDE 2.3.4 I am assuming the library in Library Manager called LiquidCrystal_I2C is the OFFICIAL library. It is marked as Frank De Brabander Ver 1.1.2, BUT BUT BUT if I click the More Info it takes me to the following github entry
https://github.com/johnrickman/LiquidCrystal_I2C
THEN if I click the library.properties the version is 1.1.4
As I said, I can't answer your other questions.
LiquidCrystal_I2C is a 3rd party library, not an official Arduino library. I do not know how Macs work, but you should have a sketchbook directory (check file -> preferences) and in there should be a libraries directory.
I know where my libraries are. What do you mean 3rd party, it is in the arduino docs, it is in the Library Manager which I assume is the 'official' library.
See next post.
@ptillisch @sterretje I am posting 4 screen grabs, the first is the original complaint I handled over in the DBWS forum. The rest are the path I took to uncover an anomaly (BUG ???) (The link has a ) at the end that needs to be removed (our forum does not allow editing after a certain time))
I am tired of this, so this might be my last post as I can't cure blindness.
@ptillisch @sterretje I forgot to mention, here is what gets installed when I click the INSTALL button, it is DIFFERENT from the aforementioned github entry.
Agreed, it's a mess. It looks like no-one is maintaining this library, but Arduino "official" is linking to the unmaintained project. I guess Arduino can't force people to maintain libraries.
I'm not sure how a library would be removed from the official list, presumably the library author would need to ask for it to be removed?
This entire exercise for me is eye opening and quite frankly extremely disapointing. I personally don't mind the documentation errors since I know to look at the source code if there is any doubt the documentation is wrong, but for people who may be new to Arduino but have over 25yrs IT experience it is confusing to say the least.
It appears that the maintained version of the library is https://docs.arduino.cc/libraries/lcd-i2c/
I have never seen that one before and it is not in the results of a Library Manager search for 'LiquidCrystal I2C' or 'LiquidCrystal_I2C'.
What made you think that is the official Library?
To clarify what we mean by "official" library. Some libraries are authored and maintained by Arduino, these could be called "official Arduino libraries". Other libraries are submitted by users, these are "contributed libraries".
The list of libraries (Arduino and Contributed) is maintained on a list curated by Arduino, this could be called an "official list". Other people can publish their own library lists.
I believe both LiquidCrystal_I2C and LCD-I2C are "Contributed" libraries. Although they are both on the "official list", neither library is an official Arduino library.
I assume that since the authors of LiquidCrystal_I2C became unavailable, Frank Häfele decided to create and submit a new version of the library called LCD-I2C. I am not saying either library is "official", but that the LCD-I2C appears to be actively maintained.
AFAIK, Arduino accepts whatever libraries are submitted that meet it's guidelines, they do not attempt to promote a single "best version" of any library.
Confusingly, there is also a library "LCD_I2C" (note underscore) which has a different maintainer (as well as I2C_LCD).
The "LiquidCrystal_I2C" library is kind of a mess.
It is not the fault of the IDE or any of the Arduino developers.
The current state of things respect to the LiquidCrytal_I2C library in the IDE library manager is due to John Rickman.
He abandoned the github repository so and there is no longer any support for LiquidCrystal_I2C github project that is referenced by the IDE library manager.
Unfortunately do to the way the IDE library manager does it library entries, it seems to require total uniqueness on library names.
So if the library name "LiquiCrystal_I2C" were to be preserved,
I believe that the only fix would be to alter the IDE library manager entry for LiquidCrystal_I2C and point it to different/new github repository that is maintained.
If this were to be done, my suggestion would be create a github organization for the project repository so that no one person/account owns it and admin rights can be doled out or modified by the maintainers as needed.
I have written about the Arduino LiquidCrystal_I2C library history many times.
I have communicated and worked with many Arduino LCD library developers over the past 15+ years.
I worked with both Marco and John Rickman on LiquidCrystal_I2C issues.
Here is a bit of history on the library.
The "LiquidCrytal_I2C" library was originally authored by person named Mario H from the Netherlands back in 2011. It was a derivative of the LiquidCrystal library and hence was licensed LGPL 2.1+
He posted it on a personal web page through an ISP from the Netherlands.
At the time, and for a years, It was copied around many times and posted on many different vendor sites as the IDE did not have any sort of library manager. Not even zip file import support yet.
Also, there did not appear to be any maintenance going on by Mario.
He posted it and that seemed to be the end of it.
His personal web page from back in 2011 is now long gone.
So this created some problems that still exist today as there were many places to get the "LiquidCrystal_I2C" library from and they were no longer all the same as some vendors were making changes/updates/or fixes to the library.
Even today there are still many places to get "LiquidCrystal_I2C" from (if not using the one from the IDE library manager) and they are not all the same.
When the IDE library manager was updated to support installs directly from github , Marco had Arduino.cc create a IDE library manager entry for this library.
Marco put the LiquidCrystal_I2C code on his own personal github repository,
https://github.com/marcoschwartz/LiquidCrystal_I2C
It was a well intended thing as it would create a single version of the library that could be easily accessed by everyone directly from the IDE.
Unfortunately, Marco didn't really have the skills to maintain it nor did he really want to be the one supporting LiquidCrystal_I2C.
I helped him a few times get things updated and corrected with git and the Arduino library.properties file.
After a while, Marco wanted to find somebody else to take it over.
He asked if I would do it, but I declined since I was already about to release the hd44780 library and didn't want to take it on.
John Rickman jumped in and offered to take it over.
Marco did a github project re-assignment of his LiquidCrystal_I2C repository over to Rickman.
How github handles project repository ownership re-assignment is bit funky.
It is a 1 time undo-able thing.
When it happens, the old repository essentially becomes a redirection to the new repository. i.e. any reference to LiquidCrystal_I2C at marcoschwartz will jump to, reference, or re-direct to LiquidCrystal_I2C at johnrickman.
And the repository is then controlled and own by the account it was reassigned to.
i.e. John Rickman has full control of the repository and Marco has no control and can't take it back even if he wanted to.
(I had actually asked Marco to take it back and give it to me, but he couldn't)
And given the way github works, you can't even assign it back even if the new owner wanted to.
A github organization repository would have been better, given github organization repositories have better admin access controls vs a personal project repository. But that didn't happen.
Here is where the story takes a bad turn.
The LiquidCrystal_I2C library didn't have a clear copyright. I contacted Rickman to get a clear copyright file added to the repository (clearly stating its LGPL 2.1+ license) and even created pull request for it.
Rickman moved the repository over to gitlab (still named LiquidCrystal_I2C)
and then was trying to change the license to something other than LGPL/GPL (which is not allowed)
I called him out on it. Then the repository was re-named.
And I called him out again for the attempted license change.
After that he remove the gitlab repository and went dark.
He abandoned the github LiquidCrystal_I2C repository and all support stopped.
I sent him multiple emails. The emails I sent to him never bounced but
I never got any answers from him to any of my emails.
I even offered to take over the LiquidCrystal_I2C repository but he never answered me.
So now the issue is that the LiquidCrystal_I2C library in the IDE library manager points to a repository that is no longer maintained and the current owner has gone away.
--- bill
@bperrybap Just curious.. Can you rename the library after you have published it through official Arduino libraries ?
Your library has worked like a charm on most of the LCD displays I had worked with, but is not generally known to the users unless pointed towards it (on the forum or elsewhere).
As far as I know. Not really but maybe kind of.
The only way to get a library in the IDE library manager is by asking Arduino.cc to add it.
There is a name in the library.properties file and that is what shows up in the IDE when you look at examples. It overrides the actual name of the library directory name where the library was installed.
Some libraries like the Adafruit libraries use this to change the name that shows up in the examples section. IMO, it gets a bit confusing.
I'm not sure if it also affects the name in the IDE library manager when doing library searches, etc...
Off topic, but if there was an LCD that hd44780 library didn't work with, start a thread for it, or enter an issue on the hd44780 library github page.
--- bill
You are looking at the revision of the file as it is at the tip of the default branch (the latest development state of the project). Arduino Library Manager works exclusively from Git tags. So the revision of the file at the tip of the branch is only relevant for a potential future release of the library, and is not at all relevant when talking about existing releases of the library.
Each time the library developer tags a point in the repository's Git commit history, the Library Manager indexer system performs some checks to make sure there aren't any problems with the library at that tagged point. If the checks pass, the version of the library at that tagged point is added as a version available for installation via Library manager.
So to investigate your confusion, we must look at the tags in the repository:
Note that there is no 1.1.4
tag, so it is normal and expected that there is no version 1.1.4 in Library Manager or in the Library Reference page.
We do see a 1.1.3
tag though, so why isn't there a version 1.1.3 in Library Manager and in the Library Reference page? As I mentioned above, some checks are performed on the tag before it is accepted for inclusion in the Library Manager index. One of those checks is:
The
name
property in library.properties must not have changed from the value it had when the library was submitted.
Let's see if the library passed the check. Here is the registration data:
The file has a "CSV" format, with the pipe character |
used as the delimiter. The third field is the registered library name. So the registered name is LiquidCrystal I2C
.
Now we compare that against the value of the name
property in the library.properties
metadata file at the 1.1.3
tag:
Oops! The library developer did something silly and changed the name to LiquidCrystal_I2C
:
So the 1.1.3
tag did not pass the checks and was rejected. This is the reason why the latest version of the library available from Library Manager, and listed on the Library Reference page is 1.1.2.
It is not true. Library Manager is populated from the data in an index file the IDE periodically downloads from the Internet:
http://downloads.arduino.cc/libraries/library_index.json
Please calm down. Everyone here is trying to help you. This tone is not productive.
Please post text as text. Posting pictures of text is not very helpful. I'm sure you know how to copy and paste (the most important skill for any software developer ).
Yes, but it is a bug in the library. A fix for the bug was submitted 3.5 years ago:
but unfortunately that fix has not been accepted by the library maintainer.
Yes. The procedure is documented here:
https://github.com/arduino/library-registry#removing-a-library-from-library-manager
Yes. The procedure is documented here:
https://github.com/arduino/library-registry/blob/main/FAQ.md#how-can-i-change-a-librarys-name
But please note:
Changing the library name can be disruptive to its users because this is the unique identifier for the library used by the Arduino development software command line interfaces, sketch metadata, library dependencies, and installation location.
No comment.