The developers of Firefox ran into an interesting situation with Firefox 3.0 (in production). There are reasons for it to have run faster than Firefox 2.0 on a Mac, but in some ways it ran more slowly.
After a great deal of research, they figured out why. Essentially, there is a thing that happens to software running on a Mac that does not use certain native Apple system software ... causing it to run much more slowly. But a very simple change (which is somewhere between undocumented and very very poorly documented) in the software can fix it easily.
When this article was picked up on Slashdot, the result was:
"Vladimir Vukicevic of the Firefox team stumbled upon some questionable practices from Apple while trying to improve the performance of Firefox. Apparently, Apple is using some undocumented APIs that give Safari a significant performance advantage over other browsers. Of course, "undocumented" means that non-Apple developers have to try and reverse-engineer these interfaces to get the same level of performance. You really have to wonder what Apple is thinking, considering the kind of retaliation Microsoft has gotten for similar practices.
But Vladimir, after providing a gruesomely detailed (but interesting) description of the problem and how he figured it out, added this note on seeing the Slashdot story:
Edit: Slashdot seems to have picked up on this, and in typical style, has completely misunderstood the post. To be clear, I do not think that Apple is in any way trying to purposely "cripple" non-Apple software. I also do not think that undocumented APIs give Safari any kind of "significant performance advantage" (as Firefox 3 should show!). However, as I said, the undocumented functionality could be useful for Firefox and other apps to implement things in an simpler (and potentially more efficient) manner. I don't think this is malicious, it's just an unfortunate cutting of corners that is way too easy for a company that's not fully open to do.
This is interesting. Vlad is being very very fair, but possibly too fair, to Apple. But, even if his interpretation is right on, this still emphasizes the fundemental difference between Proprietary and OpenSource models for software development.
(Emphasis in the above quotes added)
but possibly too fair, to Apple
I followed the link and there was an interested discussion in the comments. One comment appeared to explain from Apple's perpective why this was done. Maybe there's reason for his fairness?
Joe, I too saw the comment from Dave Hyatt in that comments threads, but his response isn't really that satisfactory.
First of all, he's saying that Apple doesn't make those API's public because they expose the workings of WebKit that's subject to change. That's a Good Thing(tm). But if that's the case, and if regression testing is a problem, then the essential question then becomes: why is Safari using it.
Surely it can't be difficult for Apple to implement a policy to say, "if it ain't it the book, you ain't using it". I know that I do that with libraries that I write. If I haven't documented how something works, nobody gets to play with it.