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)