Thursday, January 10, 2013

Apple’s Next Battleground

John Gruber:

A big area where iCloud is falling short is for third-party developers. The tip of the iceberg is the out-of-the-box experience — the iCloud features supported by the apps built into iOS. Calendar, Mail, contact syncing, Safari tab and bookmark syncing. And that stuff actually works very well.

The stuff that works is either using open protocols or is heavily dogfooded. Calendar and Contacts use Core Data internally, but they don’t use it for syncing; they use CalDAV and CardDAV. Mail uses IMAP. Safari tab syncing uses NSUbiquitousKeyValueStore, which has its problems such as not reporting success or errors, but it is comparatively simple and has been used by iBooks and other services for a long time. Third-party developers need to use NSDocument or Core Data syncing, which are newer and less used by Apple itself. The APIs are not well designed, and the services behind them are unreliable. They’re just much less mature. Brent Simmons calls Core Data syncing “the worst thing possible.”

3 Comments

[...] Link. More standards based than I had thought. by jgordon on January 11, 2013  •  Permalink Posted in share Tagged pinboard [...]

I gotta say, having been the victim of numerous syncing screw-ups in my iCalendars over the last year or so, I'm completely in agreement - Core Data syncing is indeed "the worst thing possible." What I want to know is why Apple, with their brilliant delivery on other products, can screw up cloud services so badly?!

"What I want to know is why Apple, with their brilliant delivery on other products, can screw up cloud services so badly?!"

My guess would be several decades of desktop-centric development plus a 100%-proof OOP culture, coupled with a general lack of open-ended, open-minded R&D in the last decade and a half (once burned twice shy, I suppose). Such a conservative mindset, inextricably rooted in one-user-at-a-time, local-machine-as-environment and fine-grained message-passing concepts and behaviors, will inevitably come a cropper when applied to network distributed computing where all such assumptions fail. See Peter Deutsch's Eight Fallacies of Distributed Computing, and realize that network unreliability isn't a bug, it's a fundamental feature which developers and technologies must completely accept in order to get anywhere at all.

Unfortunately, the great majority of OO developers seem to think that the solution to this isn't to educate themselves in the decidedly non-OO ways of network programming, but to slather a load of fat, broken OO abstractions (SOAP, Distributed Objects, etc) on top of it so they might go through life pretending the network doesn't exist. Which is all fine and dandy... right up to the point that the network does what networks are well understood to do, and then the whole naive fiction blows up on everyone.

Thing is, even if Apple were to overcome their own innate conservatism and crack the distributed computing problem themselves, there's no guarantee the developer community would embrace the solution, since they're pretty much bound by the same mentality. Heck, even most full-time professional web developers seem to have a remarkably poor/incorrect understanding of how the web is supposed to work, hence all the butchery and incompetence we see there.

My guess is that Google, even with their pants-down Win95 approach to Android stoking up years of headaches ahead, will get there first, simply because Google was born in and of a ubiquitously networked environment so already has that in its cultural bones. Whereas to Apple it's an alien environment to which it must adapt, with all the mental and physical struggles that entails. Pass the popcorn.

Stay up-to-date by subscribing to the Comments RSS Feed for this post.

Leave a Comment