iCloud's Documents in the Cloud is Fundamentally Broken
Ellis Hamburger, The Verge:
Many veteran developers have learned their lesson and given up on iCloud’s Core Data syncing entirely. "Ultimately, when we looked at iCloud + Core Data for [our app], it was a total no-go as nothing would have worked," said one best-selling iPhone and Mac developer. "Some issues with iCloud Core Data are theoretically unsolvable (stemming from the fact that you’ve put an object model on top of a distributed data store) and others are just plain bugs in the implementation," he said. Syncing alternatives exist, but none of them live up to the goals iCloud set out to achieve nearly two years ago: creating a seamless syncing solution that "just works" without logging in or setting up anything.
It's no secret that developers have been abandoning iCloud, and for good reason, as I learned last year. However, Hamburger's piece shows just how bad the situation is. It's not just a buggy, poorly documented implementation, it in fact just doesn't work.
Steve Jobs was visually imaginative, which is wonderful for hardware and even most types of software. But you can't just dream up a network infrastructure. Having every app be its own self-contained database sounds great, but in practice just does not work, as the piece goes on to explain:
Second, Dropbox uses Document-based syncing. If you’ve ever tried to sync an iPhoto library with Dropbox, you know that Dropbox also chokes on databases. As Jumsoft and several developers have confirmed, document-syncing isn’t what they’re after: the dream is to have databases on two or more devices that stay perfectly in sync. In truth, nobody has been able to do the job well in the iOS space, so iCloud was a beacon of hope at its inception.
The article insinuates that Apple doesn't care enough to fix the problem. I don't think that's the case. Rather, I don't think they know how to fix the problem. They aimed high, but ultimately bit off more than they can chew.
Sometimes the simplest solution is the best:
When Apple does use iCloud, it most often doesn’t even use Core Data to sync information. Apps like Keynote, for example, use the far simpler Document-based syncing method. Keynote must work, so Apple keeps a close eye on Document-based syncing functionality. And when it does rely on Core Data, Apple’s software has no more luck than third party developers. Apple’s simple Trailers app uses Core Data to sync, and periodically loses track of user Favorites. "The best Apple technologies are ones they use themselves," one developer told me.