The IDe version 17 is indeed correct, in as much as it correctly waits for a Hitachi 44780 to complete its power up sequence, and then correctly initializes the display.
Logically and temporally correct.
For a Hitachi HD44780.
The problem is all these 'clones' of the HD44780 that are being marketed. Many, if not most, just aren't up to snuff.
In particular they don't complete their powerup sequence nearly as quickly as the 'real deal'.
This is not a problem with the library. It just needs to be made clear that the library targets a genuine, Hitachi, HD44780, and use with any other chip may require timing adjustments.
I have used the (newest, IDE v 17) library with at least a couple dozen displays that were clones... and on all but a couple I had to add additional time for them to power up. Eventually I just got in the habit of calling delay(1000) before 'begin()'.
I have seen this complaint crop up a lot on these forums. The only real answer is to let people know they may need to add more time before trying to communicate with their particular display.
Another problem I have seen with some displays is that they 'forget' that they are in 4 bit mode if they are not 'exercised' for a while.
The first one drove me absolutely nuts! I was convinced there was a power problem, dropouts or spikes.
I put it on a lab power supply and put a 50 Mhz rate storage scope across the power leads. Never saw a glitch, but after idling a while, the next attempt to write would cause either garbage or a blank display.
So I experimented with delays. Count up, print(count,DEC), delay(n). When the delay reached about 700 seconds, glitch city.
So now I always put in an idle function, and reset 4 bit mode after 1 minute of inactivity. Between the initial 1 second delay and the inactivity timer, it seems to have 'fixed' the problem... (knocking on wood).