bodmer:
Great library.
Suggestions:
Put LCD in the library name be more Newbie friendly, meaningful and easily found/noticed. The HD44780 device from Hitachi dates to the 1980's is now a somewhat archaic reference though the specification did set a standard for the electrical interface and command set. It is getting less frequently mentioned in LCD adverts and tutorials these days. It's a bit like calling a "WiFi" library "IEEE802.11" 
Make the examples menu structure more Newbie friendly, to negotiate through a menu tree called "ioclass" to find a basic Hello World sketch is not very intuitive.
None of those are going to happen.
A multi layered Arduino library of sub classes like this is not an easy thing to make easy to install and use.
fm's new LiquidCrystal library has taken one approach and bundled everything.
Adafruit has taken a different approach and used separate libraries.
Both have some issues that I was trying to avoid.
Here is some additional background.
In terms of naming, there are many types of "LCD" devices. Names like "LiquidCrystal" which is common and is used for the Arduino IDE bundled hd44780 library and using "LCD" is too generic for a library like this.
This library is specifically for interfacing h/w to lcd devices that use and conform to the hd44780 interface.
Keep in mind that this library is not just a simple single class library like LiquidCrystal or LiquidCrystal_I2C.
hd44780 is an extensible library class. It is a framework that is used allow the creation of simple sub i/o classes that merely handle the communication between the hd44780 lcd and some sort of h/w interface like i2c, arduino pins, spi, shift registers etc...
The hd44780 base layer class handles the public API as well as all the hd44780 initialization, control and hd44780 low level timing. The i/o classes are used to merely transport the hd44780 messages and data from the hd44780 class to the hd44780 device.
hd44780 is VERY specific to hd44780 lcds.
I also wanted a name that was different from all the "LiquidCrystal" and "LCD" type names so that there would be no confusion of this library with any of the existing libraries and I needed a naming convention that ensured that there would not be naming collisions with other existing libraries or other libraries that may exist in the future - some of this is because the IDE has such a dumb way of handling Arduino "libraries".
The i/o sub classes are free to use any name they wish and don't have to be bundled/included with the hd44780 library package.
However, the i/o sub classes that are included/bundled with the hd44780 library intentionally use hd44780 in their name to indicate that they are included with hd44780.
Other hd44780 i/o sub class libraries that might be created by 3rd parties could use their own naming conventions.
I spent LOTS of time debating and going round and round how this should be done.
In fact I had an early version of hd44780 that didn't include any i/o sub classes and used more generic names for the i/o sub classes and used a separate installable Arduino library for each i/o sub class.
However, separate libraries makes the installation more difficult since a user must install multiple libraries before they can do anything. They have to install the hd44780 base class and the install the desired i/o sub class library. While that isn't so bad with newer IDEs that support the library manager, it starts to become a difficult hump for users that have older IDEs.
In my opinion it was more important to have a common set of i/o sub classes pre-bundled with hd44780 to make the installation easier.
Also, when i/o libraries are separate Arduino libraries, you have to go back to Team Arduino to get each new i/o class library added whenever support for a new i/o class is added, which is a pain.
Also by bundling them, it ensures that all the i/o sub class libraries are up to date and in sync with the hd44780 base class library - which avoids another potential issue and reduces maintenance.
When there are multiple i/o sub classes bundled, things do get a bit "messy" since logically there are essentially multiple Arduino libraries bundled together.
Where things do get a bit messy in in the examples area.
In the case of the hd44780 library package, the hd44780 class has its own examples, which can work on non hd4470 libraries like LiquidCrystal, LiquidCrystal_I2C, LiquidTWI, PCF8574_I2C_LCD, etc... as well as each hd44780 i/o sub class has its own examples.
There really isn't a way to handle the examples other than the to create "sub directories" to separate them by class, hence why you see the "ioClass" example tree.
Something has to be there to separate out examples by bundled i/o class.
In terms of newbie friendly. I simply don't subscribe that Arduino users are all morons.
Ease of use and intuitiveness is very important; however I have no intention of trying to dumb everything down to a ridiculous level that restricts or hinders functionality or has the potential to create confusion or issues down the road.
In some cases a bit of reading the documentation will be required.
A lot, if not most of the issue right now is that the hd44780 library package is still in alpha state.
Normally, I would never open up such a raw s/w package up to end users - especially when some of them are less technical users.
In this case I made a very rare exception since recently on the forum I have seen so many users flounder with trying to get their i2c backpacks working. And many other users trying to be "helpful" were offering these struggling uses such bad and unhelpful advice.
The real documentation for the hd44780 package is not yet available. Once the documentation is in place, I believe that the naming will not be an issue and the names of the classes and example sub directories have a consistency.
The documentation will be out on a server and all the example sketches as well as the main github page will have links to it.
There will also be API example sketches that demonstrate each and every single API function.
So in terms of documentation, it will likely be the one of better documented lcd libraries out there.
My intent is to have documentation similar to what I provide for the openGLCD library but to move the documentation to a server vs ship with the library as when it comes with the library, it cannot be brought from the IDE GUI. Whereas when it is on a server, you will be able to simply click on a link in the sketch to bring up a web page that has the documentation.
--- bill