I find that a very odd response after the significant efforts the community made to help you understand the subject.
Didn't really answer the question unless it is implied somewhere, but perhaps I was unclear. The question was really "who" can ask to remove it, not "how". It doesn't really matter though.
Removing it would probably cause much disruption to people already using. Ideally it would be marked "deprecated" or "unmaintained" with a link to a more maintained version if there is one.
Arduino face the same problem as with all crowdsourced data, it's only as good as the submissions. The only way to improve it is to spend more time managing it. Even adding ratings or reviews creates extra work.
The key thing though, is if there are people willing to adopt maintenance of the library there should be a way to do that. Reading between the lines from what @ptillisch has written, anyone can make a request to remove the library, and subsequently submit a new library with the same name, and Arduino may or may not grant the requests if there is sufficient justification.
Your question:
My answer:
I answered the question, and I also provided the procedure since you stated that you weren't familiar with it:
I agree. I see a lot of evidence here on the forum of people using the library. There are eight libraries in the Library Manager index that specify a direct dependency on "LiquidCrystal I2C" (and thus would fail to install if "LiquidCrystal I2C" was removed).
And there is a LOT of data, so that could be a tremendous amount of work. There are ~7.4k libraries in the index, with more added every day. And new releases of the libraries are coming out all the time.
A removal request will only be accepted if it is submitted by or with the approval of a maintainer of the library.
As it seems getting such approval is not feasible, the best way forward is to simply provide a superior alternative under a new name, as the community has done.
@ptillisch - genuinely interested, may have missed it, which is the superior alternative I should look for?
Probably HD44780 by Bill Perry. He did contribute in this topic as well (post #16 and #17).
So if the maintainer goes away for whatever reason, the unmaintained library stays there forever, and the list will slowly accumulate unmaintained libraries. I can see this not providing a great experience for users - as in this case.
OK, thanks, yes, but is that I2C?
I recently "burned" a couple dozen PICs with phanderson's "LCD-117". It uses asynch serial.
I had bought a couple of these I2C backpacks - but it seems a hideous business (all this hassle). NG.
Yes; I've never looked if it supports something else.
@ptillisch
I think a more general question relates to what sounds like the current policy:
A removal request will only be accepted if it is submitted by or with the approval of a maintainer of the library.
which leads to this:
As it seems getting such approval is not feasible, the best way forward is to simply provide a superior alternative under a new name, as the community has done.
In this case we have a situation where a library was set up became popular and the repository was given away to a new maintainer who immediately abandoned it and the repository can't be re-assigned to anyone else.
Could there be some flexibility for situations where there is a library that has been abandoned and there is a maintainer that is willing to take it over?
i.e. have the new maintainer work with Arduino.cc to transition the library to a new repository to continue its life.
In this situation Arduino.cc would not be removing the library but simply altering the library manager database to use a new/different github repository.
This would preserve any/all other library dependencies which seems like a good thing for all involved including the general Arduino community.
This could work well for LiquidCrystal_I2C.
This library is a bit of special/odd case.
Marco was the original person that had the library added to the library manager.
In this case I can tell you with 100% certainty that Marco would be up for re-assigning the library to a new/different repository where it could be maintained, as a few years ago I talked to him about doing this.
But after Marco gave the github repository to John Rickman, he can't take it back or re-assign it to someone else.
I'm not sure how often situations like this might occur, but surely LiquidCrystal_I2C is not the only library that has been abandoned.
The key is how to ensure that the original Author has really abandoned the project to ensure that someone can not "steal" a library away from the original author.
Does Arduino.cc have a way to contact the authors/maintainers?
email addresses don't seem to be being provided in most of the library.properties files.
(I provided a contact email address in my libraries)
--- bill
I dunno. It seems like it is better to just create a new library under a new name, rather than give a library over to new owners without the original owner's approval. There are enough supply chain and social engineering risks with Arduino libraries already without also raising the prospect of changing library owners without the original owners' consent.
The big problem with LiquidCrystal_I2C is not that it is abandoned. That would be fine if it were a good library. The problem is that it is a badly constructed library. But the Arduino folks cannot be expected to litigate this question for every library where the owner isn't involved any more.
If you look at other package repositories, several that have significant resources make the same decision as Arduino. npm for example, does not allow you to take over another maintainer's project for abandonment reasons. PyPI does, but the bar is very high and it's not clear how often they grant these requests.
While that can be done, it creates pain for all the existing code that uses the library and all its users.
Like I said, LiquidCrystal_I2c is a bit of special case.
In this case, even though the library has been abandoned, a transfer would be with the original "owner's" permission.
Marco, the person who originally had the library added to the library the IDE library manager wanted the repository to be assigned to a new person to take it over. He re-assigned his github repository (which is what the IDE library manager points to) to a person (John Rickman) who he thought would take it over, and THAT person abandoned it after a short period of time.
Based on my conversations with Marco, soon after Rickman abandoned the library from a few years back, Marco wanted to re-assign the github repository to someone else other than John Rickman to get it supported again, but couldn't.
I'm assuming that Marco would likely even offer to help work with Arduino.cc to get the library transferred to a new owner/maintainer.
Not only is this off topic, but I would very much disagree with this.
Most of the "construction" or main design structure of the library is dictated by the Arduino environment and its limitations along with the h/w interface.
i.e. no threading / task contexts, h/w has no interrupt capabilty, no direct control of pins, a slow h/w interface to control the lcd pins, and single characters handed down from Print class.
This library is based on the LiquidCrystal library.
It simply added support for using a PCF8574 i/o expander to control the hd44780 pins.
Given how the Arduino IDE handles libraries, the simplicity of the Arduino library runtime environment, the way the Print class works and the limitations of using a PCF8574 with a relative slow communications interface to control the hd44780 pins, there are quite a few restrictions and limitations on how you can do things.
One clear thing from both of these is that neither ever allows the removal of a project - which I think is likely not a controversial thing.
It really comes down to can you ever re-assign a project to a new owner/maintainer?
The npm link you provide were for for a different situation like naming.
Things like trademarks, confusion over project name, etc...
The PyPl page does have a procedure to handle the situation that LiquidCrystal is in where a project has been abandoned and if/how to re-assign it.
They clearly outline how to do it, and IMO, the bar is not THAT high.
I.e. meet the clearly defined rules, and you can do it.
From my read, the PyPl rules would allow the re-assignment of the LiquidCrystal_I2C project to another maintainer & repository.
Also, keep in mind that Marco - who was the original person that got the LiquidCrystal_I2C library added to the IDE library manager would likely be in favor of re-assigning it since he was in the past so for LiquidCrystal_I2C it wouldn't be a case be taking over a library without the original persons permission.
In the grand scheme of things, it seems reasonable to have some sort of process/mechanism to re-assign an "abandoned" library to allow it live on if there are interested parties that are willing to take it on.
npm relizes abandonment is a problem but hasn't yet finalized an official policy:
https://github.com/npm/roadmap/issues/28
PyPl has a process for this:
https://peps.python.org/pep-0541/#continue-maintenance
debian has a procedure to allow authors to abandon a package:
https://www.debian.org/doc/manuals/developers-reference/pkgs.en.html#orphaning
Fedora has a process for this:
https://docs.fedoraproject.org/en-US/fesco/Policy_for_nonresponsive_package_maintainers/
--- bill
We don't have any special contact information.
People will generally configure Git and GitHub to add their email address to the commit metadata. It isn't displayed on the GitHub website's commit view, but you can see it if you clone the repository locally and then use git show on a commit by the person whose email you wish to obtain.
Alternatively, we can get the full commit metadata from the GitHub API. For example:
And sure enough, we see that John Rickman has provided an email address. Feel free to contact John Rickman about this matter via that email address.
I am very familiar with git.
That email address won't work for me. (he won't answer me)
And like I said in previous posts,
I have communicated with both Marco and Rickman about this library.
And in post #16 I stated that Rickman stopped communicating with me right after he abandoned the repo.
From post #16
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.
I used an email address that we had previously communicated using.
Rickman stopped responding to my emails.
I think he was not happy with me calling him out on his LGPL copyright violations.
But again,
Given Marco set this up originally and Rickman is gone, why can't Marco ask Arduino.cc to alter the IDE library manager database to point to a new repo?
If I can get Marco to contact you guys, can you make this happen?
--- bill
The other way of approaching this, if you do not want to spend any time on the *bureaucratic details, is the more pragmatic one of simply making a local copy of the library in the sketch folder and hacking it as required to correct any issues.
I have done exactly this with that library LiquidCrystal_I2C.h to cure at least one issue where the use, now deprecated on some platforms, of the binary number represenation e.g. B00010111 littering the compiler output with warning messages.
(*) I accept that these are a necessary evil. Contributed libraries are an important part of the Arduino ecosystem and, of course, their maintainers can subsequently simply quit the scene, leaving their works in an abandoned state. Any mechanism which allowed others to simply claim to be rightful inheritors of such libraries "presence" in the arduino world would have to be carefully policed. I have, incidently, watched with some bemusement a recent (energetic but ultimately unsuccessful) attempt by person X to wrestle control away from person Y of another very popular library L authored originally by person Z). I can't see a good solution unless some sort of committee is appointed to handle such matters and maybe even adopt affected libraries into the arduino code base respecting all the rights of the original author etc. The general work around is that someone makes a fork of the library with a slightly different name, registers and maintains that for a period of time and the cycle repeats.