{"action":"created","issue":{"url":"https://api.github.com/repos/arduino/Arduino/issues/4207","labels_url":"https://api.github.com/repos/arduino/Arduino/issues/4207/labels{/name}","comments_url":"https://api.github.com/repos/arduino/Arduino/issues/4207/comments","events_url":"https://api.github.com/repos/arduino/Arduino/issues/4207/events","html_url":"https://github.com/arduino/Arduino/issues/4207","id":118378863,"number":4207,"title":"Replacing the LiquidCrystal libary with NewLiquidCrystal","user":{"login":"crushedice2000","id":11387611,"avatar_url":"https://avatars.githubusercontent.com/u/11387611?v=3","gravatar_id":"","url":"https://api.github.com/users/crushedice2000","html_url":"https://github.com/crushedice2000","followers_url":"https://api.github.com/users/crushedice2000/followers","following_url":"https://api.github.com/users/crushedice2000/following{/other_user}","gists_url":"https://api.github.com/users/crushedice2000/gists{/gist_id}","starred_url":"https://api.github.com/users/crushedice2000/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/crushedice2000/subscriptions","organizations_url":"https://api.github.com/users/crushedice2000/orgs","repos_url":"https://api.github.com/users/crushedice2000/repos","events_url":"https://api.github.com/users/crushedice2000/events{/privacy}","received_events_url":"https://api.github.com/users/crushedice2000/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":{"login":"cmaglie","id":423515,"avatar_url":"https://avatars.githubusercontent.com/u/423515?v=3","gravatar_id":"","url":"https://api.github.com/users/cmaglie","html_url":"https://github.com/cmaglie","followers_url":"https://api.github.com/users/cmaglie/followers","following_url":"https://api.github.com/users/cmaglie/following{/other_user}","gists_url":"https://api.github.com/users/cmaglie/gists{/gist_id}","starred_url":"https://api.github.com/users/cmaglie/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cmaglie/subscriptions","organizations_url":"https://api.github.com/users/cmaglie/orgs","repos_url":"https://api.github.com/users/cmaglie/repos","events_url":"https://api.github.com/users/cmaglie/events{/privacy}","received_events_url":"https://api.github.com/users/cmaglie/received_events","type":"User","site_admin":false},"milestone":null,"comments":10,"created_at":"2015-11-23T13:19:59Z","updated_at":"2015-12-01T01:50:38Z","closed_at":null,"body":"I think that LiquidCrystal should be replaced with NewLiquidCrystal (The fmalpartida LiquidCrystal fork) It's really great.\r\n\r\n---\r\n\r\n## Performance ratio vs LiquidCrystal library\r\n\r\n                    LiquidCrystal      4BIT        ShiftRegister     ShiftRegister SR3W     I2C         1WSR    I2C (GPIO)\r\n    Performance     1                  3.72        4.28              3.13                   0.34        3.8     0.39\r\n"},"comment":{"url":"https://api.github.com/repos/arduino/Arduino/issues/comments/160821670","html_url":"https://github.com/arduino/Arduino/issues/4207#issuecomment-160821670","issue_url":"https://api.github.com/repos/arduino/Arduino/issues/4207","id":160821670,"user":{"login":"bperrybap","id":1288729,"avatar_url":"https://avatars.githubusercontent.com/u/1288729?v=3","gravatar_id":"","url":"https://api.github.com/users/bperrybap","html_url":"https://github.com/bperrybap","followers_url":"https://api.github.com/users/bperrybap/followers","following_url":"https://api.github.com/users/bperrybap/following{/other_user}","gists_url":"https://api.github.com/users/bperrybap/gists{/gist_id}","starred_url":"https://api.github.com/users/bperrybap/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bperrybap/subscriptions","organizations_url":"https://api.github.com/users/bperrybap/orgs","repos_url":"https://api.github.com/users/bperrybap/repos","events_url":"https://api.github.com/users/bperrybap/events{/privacy}","received_events_url":"https://api.github.com/users/bperrybap/received_events","type":"User","site_admin":false},"created_at":"2015-12-01T01:50:38Z","updated_at":"2015-12-01T01:50:38Z","body":"Here is the link:\r\nhttps://bitbucket.org/fmalpartida/new-liquidcrystal/wiki/Home\r\n\r\nIt is multi layer library that consists of multiple  classes including:\r\n- fast pin i/o\r\n- i2cio for pcf8574 pin i/o \r\n- 4 bit \"LiquidCrystal\" \r\n- pcf8574 i2c interface with configurable wiring\r\n- 2 or 3 wire/pin interface using a shift register\r\n- 2 wire/pin interface using a shift register\r\n-  3 wire/pin interface using a a shift register with configurable wiring\r\n- 1 wire interface using a shift register\r\n- byvac LCD interface\r\n\r\nEach layer is its own class.\r\nAll of these are bundled together and installed as a single LiquidCrystal \"library\" from a single zip image.\r\nIt is essentially multiple libraries bundled together as one.\r\n\r\nThe Arduino recommend way of doing this would be to create a separate library for each class and install them separately.\r\nThere are other libraries that do it that way like some of the AdaFruit libraries.\r\n\r\nKeep in mind that this library was done a while back  before there was even a way to install a library zip file from the IDE much less get the library and do updates from the network.\r\nAt that point in time, it was much easier for the user to install if it was bundled.\r\n\r\nWhen lumped together, all the modules are compiled since that is how the IDE builds \"libraries\".\r\nThings can get messy because of sub library dependencies like for Wire, and the included i2cio and fastio classes.\r\n\r\nBut sub library dependencies are messy in general because of the way the IDE does its builds and handles its libraries.\r\nI really wish that it was done differently.\r\nEven the new stuff recently added to the IDE to search for library dependencies within libraries still has issues.\r\n\r\nI'll spare the further details but that is the summary of why fm's LiquidCrystal library is complicated.\r\n\r\nas a FYI\r\nI am looking at releasing some new 3rd party hd44780 LCD libraries with similar functionality as fm's library; however, they won't be all bundled together but instead will be separate libraries for each class.\r\n\r\n@cmaglie \r\nYour comment about a library being \"taken\" is interesting.\r\nSo does that mean that you cannot have more than a single library added to the library manager with the same name?\r\nIf so this seems problematic as there are several libraries out there that have name collisions and I can envision a scenario where multiple 3rd parties all want to register their library.\r\nTo me this should be allowed if it isn't.\r\nThat way a user can select between which library they want.\r\nBut to do that, the library manager probably needs to be able to uninstall a library so a user could install another by the same name.\r\n\r\n\r\n\r\n"}}