Apple and DTrace, Serving Multiple Masters

Thanks to Daring Fireball I saw this post over on one of the Sun blogs, yesterday.

There is a good bit of detail around Adam Leventhal’s investigation from mere curiosity to morbid fascination. His findings seem pretty definitive. While Apple is not advertising that they are conditionally disabling the new DTrace port in Leopard, it didn’t seem difficult for Adam, clearly an experienced DTrace user, to discover the truth of the matter.

I understand his point about how conditionally disabling DTrace for some applications is contradictory to the purpose of DTrace. Given how quickly hackers and makers have legitimately reverse engineered most proprietary code, let alone Apple’s, I think I can understand their decision making process. Especially since they still have a hefty stake in DRM.

Can you imagine the legal bruhaha they’d invite if a dedicate open media enthusiast cracked up the DRM around their rentals or just discovered how to fool iTunes into extending the play period? Now imagine someone, rightly or wrongly, attributing that to the presence of DTrace on Leopard. It isn’t hard to see how quickly Apple’s content partners would either abandon or sue them. Or both.

I am no fan of the rental idea, I didn’t like it the first time when it was called DivX. However, it is clearly an important money deal to Apple. And good, evil or otherwise, Apple is obligated to make money on behalf of their shareholders.

The real question is, is it better to have a crippled DTrace rather than no DTrace at all? How could Apple have better negotiated their money obligations with the open source and community commitments they also seem willing to undertake?

I don’t know the answer to either, not currently being an active Apple hacker. I do know how frustrated I would be, and am under different circumstances, when my usual debugging and investigation tools do not work as expected. How widely is this symbol defined? Is it just user space applications like iTunes or could it really interfere with trying to trace an applications calls into the lower level services? I find it hard to imagine the latter, otherwise the port would be pretty pointless. Regardless of such a rationale, it is possible for Apple to disable DTrace for any part of their proprietary code and Adam discovered they are willing to exercise that possibility.

At a minimum, it would have been better, not good or best just better, if they had made an effort to let potential DTrace users know about their slight change. As it is, many in the open source community are going to perceive this as a black eye and it will certain increase friction and distrust regardless of whether that reaction is entirely warranted.

Leave a Reply

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