Ajaxian had a post today about how Firefox 3 uses an undocumented API call to get the same performance characteristics as Safari on Mac.
This kinda “private vs. public” debate is as old as the PC. Peter Norton became a millionaire by exposing the hidden / underdocumented bits of the bios, fat, and msdos, and Andrew Schulman went on to become wealthier – if not persona non grata at Microsoft – for writing about Undocumented Windows API calls.
I had an app that was in production for 18 years (YEARS) that used frowned upon direct video memory writes for fast display (which, in the day, everyone did writing commercial DOS software).
To sum up: its OK for Apple to use their own internal API calls to get a performance gain over competitors, but it is somehow “bad” if Firefox does the same to level the playing field.
Yeah – THAT sounds fair.
Using undocumented API calls is sometime the only way for commercial software written by third-parties to compete in a marketplace where OS publishers use undocumented APIs as a way to outperform those locked out of the Sanctum Sanctorum. Microsoft has been notoriously beaten up in the past over such shenanigans (“DOS isn’t done until Lotus won’t run” went an infamous apocryphal saying back in the eighties).
Apple probably isn’t getting as much heat now as MS did way back when, for a few reasons. Apple fan boys and gals usually question nothing that Steve and Co dish out. Most developers today are far removed the vagaries of OS API calls (or the OS for that matter) and really don’t understand the implications that using undocumented calls to gain competitive advantage give an OS publisher writing apps as well (Microsoft famously touted the imaginary “Chinese Wall” between its OS team and the applications teams).
The only real danger in using undocumented API calls is that when the OS changes and the API behavior breaks in some way, the OS publisher is morally under no obligation to notify of the breaking changes. It’s caveat emptor, baby.
Not even as bad as the risk people take when they hack the SIM to use carriers other than AT&T on their iPhone.
In short, if using undocumented API calls levels the playing field, do it – with your eyes open – because if it were REALLY that bad, the code wouldn’t be in the WebKit to begin with.