Apple Mozilla

Apple’s API Advantage

Vlad wrote about his work on improving Mac OS X performance (which is awesome by the way), and his findings from looking at WebKit code. To summarize WebKit utilizes some undocumented API’s (ironically from the same company that makes Mac OS X ๐Ÿ˜• ) that give it an advantage over other software which can’t use them. This is pretty anti-competitive, and Microsoft-like in behavior. For a company that built it’s modern OS on an open source core, and it’s flagship browser (which is key to their mobile initiative) on an open source rendering engine (KHTML), you would think they would be a little more understanding about crippling platforms. Then again, look at the iPhone controversy regarding it being a closed platform (though that’s supposed to change next week, and I’ll be sure to blog about that).

Robert O’Callahan’s got a got a great blog post on some of his observations of things Mozilla would likely make good use of. He also mentions one thing worth quoting:

It’s worth reflecting that if Microsoft was doing this, they’d likely be hauled before a judge, in the EU if not the US. In fact I can’t recall Microsoft ever pulling off an undocumented-API-fest of this magnitude.

This is a very valid point which I 100% agree with. Microsoft wouldn’t get away with this.

Safari developer David Hyatt (former Mozilla developer from when Lizards roamed the earth) commented about this issue. Essentially he justifies the decision based on it not being a good practice to use some of these methods, and other aren’t even used anymore. This of course raises the question: Should Apple be deciding what other software developers can do, when they themselves can’t follow the same standards? I’d say that if WebKit feels it has to use it, there’s likely others out there in the same situation regardless of “best practice”.

See, I’m not too much of an Apple fanboy to criticize them ๐Ÿ˜‰ .

6 replies on “Apple’s API Advantage”

You seem to be making the assumption that those API’s will never be documented.

Apple says that it intends to release A new version of Safari with Webkit 3.0 which is reported to be extremely fast. Very often, the FOSS developers express paranoia about Apple using open source.

Do you remember the fuss because the FOSS people thought that the last version of webkit, which is built on open source, was going to forever be locked up inside Apple. A few weeks later, Apple released it.

Did the endless complains cause Apple to release it earlier than usual? I doubt it. Apple is not obligated to give the FOSS anything, nor can FOSS set Apple’s timetables.
So, be patient.

“Itโ€™s worth reflecting that if Microsoft was doing this, theyโ€™d likely be hauled before a judge…”

Microsoft is a monopoly in the OS browser space, Apple is not. While I wish Apple would not keep secrets related to their code that is part of any Open Source endeavors, this doesn’t even register on the “doing evil” scale compared to Microsoft so making this comparison is misleading. Time for a reality check.


It’s also worth noting that the EU don’t act if they don’t receive a complaint. For Microsoft, in the Windows Media Player case, they act after a complaint of Real Network, and in the recent case, it was after a complaint of Opera.

It could be a nefarious plot, but I think there could be a more benign explanation.

Commercial products, unlike Firefox, have tough schedules they must meet. Sometimes developers will take a shortcut to get the job done, or things that should be done before release don’t get done. That could be the case here. Say the developer wants to add a certain function, but it isn’t convenient from the public APIs. Well, just as a place holder, he sneaks in the use of some undocumented calls, fully intending to “do it right” later, but later never comes. Or say there is no way to do it, so a new API is created and used, but the bureaucratic steps to make that API a public API never happens, due to a lack of time.

Leave a Reply

Your email address will not be published. Required fields are marked *