Via arstechnica.com -
Mozilla developer Vladimir Vukicevic recently discovered that Apple's open-source WebKit browser engine users a number of undocumented framework APIs that Apple hasn't made accessible to third-party developers. This revelation has sparked a minor controversy which has led some to question if the software company is giving itself an unfair home court advantage.
Vukicevic made his discovery when he noticed an unexpected performance problem in Firefox 3. After careful examination, he traced the problem back to Beam Sync, an optimization added in Tiger that introduced coalesced window drawing updates. As we noted when we examined the feature last year, there are some rare corner cases where Beam Sync actually degrades performance.
Apple supplies and documents a plist key that can be used as a last-resort mechanism to disable coalesced updates, but doesn't provide any publicly-accessible way to do so directly through code. This is problematic for software components that are designed to be embedded in other applications, because it means that the plist key will have to be set for each one. Firefox's embedded Gecko rendering engine is increasingly being used in a growing number of cross-platform desktop applications and would consequently benefit from a programmatic mechanism for disabling coalesced updates.
Vukicevic became curious about how Apple's WebKit addresses the performance issued and was surprised to discover that Safari did not use the plist tweak. Further examination turned up a header file in Safari with references to an undocumented method called WKDisableCGDeferredUpdates that, he discovered, Safari is using to disable coalesced updates programmatically. Unfortunately, the library is distributed binary-only and the licensing implications of using it are unclear.
Mozilla developer Robert O'Callahan has followed the issue closely and is concerned "that the Mac playing field is tilted against [Mozilla]." He explains in a blog entry: "Disassembly shows these WK functions are mostly just wrappers around undocumented framework functions. The source to the WK wrappers is not available; the implementations are in a binary blob library that you download with the Webkit sources. It appears the sole purpose of closing the source to this library is to conceal the signatures of the undocumented framework APIs used by Webkit, presumably so that ISVs like us can't use them... 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."
I have to agree with the article. Although I'm a fan of Macs and OSX, I think it's time someone remind Apple they are human too.
ReplyDelete