Friday, February 03, 2012

A Lack of Sandboxing Leadership: Apple's AirPort Utility 6.0 for Mac OS X 10.7 Lion is NOT Sandboxed

AirPort Utility 6.0, the iOSified and Lion only update to Apple's excellent WiFi network and base station management app released on January 30, 2012, is not sandboxed.
All Shall Sandbox


Apple decreed all apps submitted for Mac App Store review on or after March 1, 2012 must be sandboxed (there's no direct link, screenshot captures for posterity). The previous deadline was November 1, 2011.There has been a ton of debate on whether sandboxing as currently implemented actual solves the problem it sets out to. I'm not going to re-litagate that here. Introducing App Sandbox (Apple developer account required) from WWDC 11 makes as persuasive a case as I've ever seen for sandboxing. 


There are problems with sandboxing in Lion that Apple needs to solve, and 10.7.3 implements or fixes (Apple dev forum) a number of sandbox issues. Good arguments, documentation, fixes, and mandated deadlines that have already been pushed back aren't going to conclusively prove to 3rd party app developers they must implement sandboxing now.


Leadership does. Look at a list of Apple apps, and you're just as likely to see them not sandboxed as sandboxed. A lot of Apple's high profile apps are not sandboxed:
  • Safari 5.1.3 (Apple.com)
    • Some of the parts of the app like Safari Web Content are, but the main UI app isn't
  • Pages 4.1 (Mac App Store)
  • iBooks Author 1.0 (Mac App Store)
  • AirPort Utility 6.0 (Apple.com)
  • iPhoto 9.2.1 (Mac App Store)
  • iTunes 10.5.3 (Apple.com)
  • Xcode 4.3 (Mac App Store - Released February 16, 2012)
Maybe Apple's going to drop sandboxed versions of these apps any minute. But the closer we get to the submission deadline without even Apple's brand new apps (iBooks Author I'm looking at you) being sandboxed, the harder the deadline is to take seriously.

I've already taken one shot at sandboxing SleepMute in its current development cycle on Mac OS X 10.7.2. SleepMute has a UI app to write preferences and a helper that reads preferences and mutes or unmutes sound. Sandboxing completely broke the app. Both apps read/write preferences (with CF functions) to the same file preference file. This feature works perfectly without sandboxing, has to be completely rewritten for sandboxing. Also, simply launching the helper from the UI app wasn't working. That may have been fixed by 10.7.3, so I'll probably give it another shot, but not until Apple's apps start getting sandboxed.