The preview release of Mountain Lion is available to registered members of Apple’s Developer program starting Thursday, and it includes some significant changes to the way Mac software is designed, built and distributed. While many details are still under wraps, and there will certainly be some surprise additions revealed before the final version is ready, the information Apple has publicly announced so far does give some indication of where the future of Mac software development is headed.
When Snow Leopard came out two years after Leopard, it provided a lot of UI refinements and some important under-the-hood upgrades for developers, like full 64-bit support, Blocks in Objective-C, Grand Central Dispatch, QuickTime X, OpenCL, native Exchange support and more. Mountain Lion is a similar upgrade — it looks to improve on Lion with a lot of UI refinements and some significant changes for developers. But instead of under-the-hood improvements, the most significant changes appear to be out in the cloud this time around.
Here’s the list of changes that Apple is rolling out, and how they will affect developers:
iCloud can store both documents and key-value pairs. The important thing to keep in mind here is that the developer is responsible for collisions and conflict resolution between different devices updating the cloud. Documents have a dialog to let users select which version of a file they want to use. If you need to merge document changes, you’re on your own. Developers will need to think really carefully about how to manage conflicts when saving to iCloud if you are syncing data between multiple devices/computers. It’s not clear yet if apps signed by the Mac developer program certs can access data stored by apps signed by the iOS developer program certs. We will have to wait and see what Apple intends here.
While Snow Leopard added Exchange, and Lion added iOS-like features, I think Mountain Lion will be remembered as the “iCloudification” of the Mac.
Something like 25 percent of titles in the Mac App Store are games, and the percentage is also quite high on iOS. I think there is a major opportunity here for developers to port games from iOS and keep high scores, achievements and friend lists in sync. iCloud support also means keeping saved games and game states in sync across devices. I’m not sure Game Center will ever be as popular with gamers as Steam and Xbox Live, but it could be great for casual gaming. I’d love to see someone come up with Xcode achievements so I could compare KLOCs with my friends.
Developer IDs, App Signing, Gatekeeper & Sandboxing
A lot has been written about sandboxing, which is coming to the Mac App Store and Lion, in advance of Mountain Lion’s release. I don’t think I’ll try to add anything to the discussion except to point out that Gatekeeper should help to educate users on what the differences are. It appears that you’ll be able to sign your apps — and gain the increased trust of users — without having to submit to the App Store and agree to sandboxing. Of course, to use the iCloud features and other goodies like notifications, you’ll probably want to go with the App Store anyway. Overall, I think this will end up being a good thing, despite the growing pains endured during the rollout.
Ken Case of The Omni Group is optimistic about the announcements:
This seems like a very big deal to me. Partly because Gatekeeper takes a more proactive stance against malware, preventing malware developers from producing new software which infects systems rather than always retroactively tracking down the bad software and preventing it from spreading further.
But even more important to me is that while designing this feature in a post-Mac App Store world, Apple went out of their way to build a mechanism which still supports developers who distribute software through channels other than the Mac App Store. It would have been much easier for them to simply say “to get malware protection, you must use the Mac App Store; otherwise any software you use is at your own risk” — but instead they’ve introduced a new mechanism for identifying trusted developers who distribute software outside the Mac App Store’s curated experience.
Color me relieved!
Integrating single sign-on for Twitter in iOS led to a marked increase in people signing up for Twitter accounts. Just as Twitter integration didn’t kill the sales of dedicated Twitter clients on iOS, I would expect that the market on OS X won’t be affected much. Of course, Twitter isn’t the only way to share things. Flickr, Vimeo, etc. are there as well. What I’m really curious to see is if developers will be allowed to extend the sharing sheet by registering their own apps on the system. That could be awesome.
Apple is trying to make it easy to add sharing to an app, but the real issue here is figuring out if your app needs Twitter integration or not. I’m not sure I need to tweet my word count from within BBEdit, for example, but I do like the idea of tweeting what I’m reading right from within Safari, or what I’m looking at from within iTunes or the Mac App Store. I’m hopeful about this feature, as long as developers are judicious in putting it to good use.
I think this is one area that developers should really work to adopt. I’m curious to find out more if Apple will allow online services to send notifications to apps as you can on iOS (where Facebook sends a notification to the Facebook app, and Strategery tells you when you’ve been defeated, etc.). Because of the infrastructure needed to handle those types of notices (especially at Internet scale), I would look into Push IO and similar services to leverage so you don’t have to build it all on your own.
I’m sure there will be much more to come as Apple makes their plans more public closer to the summer launch, but I think there is a lot of good stuff here that developers can use to improve and build on their Mac apps. I think that iCloud integration will have the biggest long-term impact on OS X, but the refinements in app signing, sharing and notifications will be important features for developers as well.
What do you think will be the biggest change to the ways you make Mac software today?