I don’t editorialise very often if at all. Mainly because I’m not egotistic enough to think anybody really cares about another random blogger writing a bunch of opinionated crap. However the storm in a teacup that is brewing over the Smart Crash Reports feature built into the Sandvox beta is beginning to bug me enough that I thought i ought to write about it. The center of the storm is over at Bill Bumgarner’s (bbum) blog primarily in the “Sandvox Hidden Features” entry but also in the “Detecting and Disabling Smart Crash Reports” and “SCR: Response from Sandvox” entries.
Smart Crash Reports (SCR) is software released by Unsanity that third party developers can bundle with their own software to fool Mac OS X’s built-in crash reporter into sending bug reports to the third party developer as well as or instead of Apple. Many third party developers are bundling SCR with their software and a list is available from the Unsanity website. In theory it sounds like a great tool, third party developers can enable SCR with very little work and then improve their software based on crash reports from their users. Unfortunately SCR has been implemented as an Mac OS X Input Manager. Input Managers are bundles that can be loaded into and executed within every application the user runs. They are designed to allow developers to create customised input methods. Because Input Managers are loaded in every application’s address space Input Managers have been used almost exclusively for extended or changing the behavior of existing applications.
Some people believe that Input Managers and other software that inserts itself in other Applications (like Unsanity’s APE “Haxies”) contributes to system instability. I’ve written such software myself and am definitely aware how easy it is to cause unforeseen problems when writing software of this kind. Some people choose not to install Input Managers and Haxies believing that by not installing these 3rd party software that their system as a whole will be more stable. That’s fine and more power to these people for knowing exactly what they want from their system.
Input Managers are stored in “~/Library/Input Managers” and “/Library/Input Managers” and once an Input Manager has been installed, every application the user runs after installing the Input Manager will have the Input Manager inserted and executed within the application. To uninstall an Input Manager the user should remove it from the Input Managers directory and then log out and log back in again (to make sure all effected programs are closed). Unsanity have created an optional feature in SCR that will automatically install SCR to the correct location without the user needing to install it by hand. Some applications that use SCR do not take advantage of the feature and some do. Sandvox does and this is what is causing this controversy.
When Sandvox first runs it silently installs SCR if it hasn’t already been installed. From this point on any newly launched application is affected by SCR. According to Unsanity, SCR is designed only to actually do its thing inside Apple’s crash report application (changing the behavior of the application to allow bug reports to be sent to third party developers). When ran inside any other application SCR effectively does nothing, it is still loaded but is not executing any extra code. This minimizes any potential unforeseen problems with loading the Input Manager.
Now some people are getting very annoyed with Sandvox and SCR, the storm in the teacup has brewed up and is now engulfing Unsanity and their APE technology. There have even been claims that SCR is spyware. Personally I think this is all going too far. The developers of Sandvox made a mistake in not giving the user the option of installing SCR or not. However Sandvox is beta software and will, almost by definition contains bugs and flaws. If you don’t like that then don’t run beta or any other kind of pre-release software. It is that simple. It amazes me that people who are so keen to see their system be as stable as possible would even dream of running beta software.
Unsanity also made a mistake in allowing the SCR install to occur silently. They should probably present the user with the option to prevent the installation of SCR. That way no software using SCR will ever install it without the user’s knowledge.
And finally the Apple engineers made a mistake in not allowing third party developers from hooking into the crash reporter without the need to resort to an Input Manager hack. It could have been so easy for them to do (check for special keys inside a crashed application’s Info.plist and then just forward a copy of the bug log). If they had done this then there wouldn’t have been a need for SCR in the first place.
If Apple disapproves of the way Input Managers are being co-opted then they should close the loophole that allows Input Managers to run. It might be possible to provide a sort of “Input Manager Server” that all legitimate Input Managers run within. I’m sure Apple engineers could even work out a way to disable Haxies too (at least until someone works out how to bypass it).
It has been mentioned that running Input Managers like SCR or running Haxies is akin to voiding a warranty on a piece of electronics equipment. I find this attitude patronising and antithetical to the cultures of hacking and of Macintosh both. Many people want cool features added to the operating system, and there’s no doubt some of the things you can do with Haxies and Input Managers are extremely cool and non-trivial to achieve without some kind of hack. That’s just the way it is. Apple engineers cannot foresee everything a piece of third party software can do and I find it disconcerting to see that Apple engineers have gone out of their way to lock down portions of the operating system from third party developers (google for Apple menu extras). I really hope Apple doesn’t decide to try and prevent haxies and other hacks from working, it will only hurt them instead of hindering them. One of the posters to bbum’s site summed it up quite amusingly: “Mac OS X is the child of Apple’s engineers, their daughter. Nobody is good enough to date her.”