I’ve bought three different models of LCD for the Arduino. One of them is parallel, i.e. is directly connected to the Arduino digital pins, the other two are serial, i.e. you don’t manage the display pins directly, but talk to a uP (tipically a PIC16) via Serial or software serial. The protocol is usually very simple: send an ascii char and it gets displayed. Send a byte < 32 (dec) and you are altering some lcd params. Usually there’s also an escape byte to pass data directly to the lcd controller.
I’ve found that the LiquidCrystal library can be adapted quite easily to the serial LCD even if it’s been written for the parallel ones.
The libs for the serial displays can be implemented as derived classes of the LiquidCrystal lib. Still I feel it would be more logical to have a base abstract class and derive from there the current LiquidCrystal lib as well as the serial ones.
Also, libraries for some serial LCDs should be included in the base distribution.
My 2 cents.
P.S.: I’ll post some code as soon as I polish it a bit…