Recently there has been a great deal of criticism levelled at Apple. Whether it’s fair or not isn’t the point. The facts bare a quick review:
iCloud promised Documents in the Cloud with effortless syncing of documents and data between Apple devices. That was the consumer pitch. At WWDC Apple noted to developers that if they were using Core Data or NSDocument in their apps, they would have to do barely anything at all to add iCloud functionality to their apps. In addition the Key-Value Storage part of the iCloud API had much in common with the existing user defaults making migration/enabling of iCloud functionality a breeze. That was the developer pitch.
Many programs use Core Data for storing all of the data in their software as it is essentially a database system with many powerful tools built in to reduce the number of lines of code you need to write to make something work. NSDocument is the more traditional API but is still quite common. All of Apples iWork apps (all iCloud enabled and work fine) use NSDocument to do their syncing.
The truth is that developers have been reporting issues for close to two years with Core Data and most have abandoned any hope of a fix for the iCloud Core Data problem until the next major software revision from Apple. Some have transitioned to NSDocument to get iCloud (where it was not too involved or expensive, or perhaps when their user base demanded it profusely) but many have simply not bothered. It seems as though Apple spent more time ensuring the iCloud APIs their own apps were using were a higher priority and made them relatively clean and solid, whilst the Core Data APIs had much less attention. Though, this is speculation.
For Apple this is a big issue - their APIs don’t work reliably with Core Data. Apps that are released with iCloud support using NSDocument work fine but a great number of top-shelf applications rely on Core Data and their code bases are too large to simply recode them. Better to wait until the next release of the operating system from Apple and hope for the best then.
No-one is saying that cloud syncing isn’t hard: It is VERY hard to do it well. No-one should be saying that Apple didn’t live up to their promise to their customers - iCloud app syncing generally works very well (for NSDocument apps). Not having accurate numbers I’d expect no more than 40% at best of all apps use NSDocument simply because it is not as powerful as Core Data can be. Even if that figure is out by +/- 10% that’s still a very large, non-trivial, chunk of apps that CAN’T use iCloud without major code base rewrites.
Apple aren’t stupid. They know about this and they know it’s straining their developer relationships. Then again, being the operating system platform with the highest rate of return on investment means they can probably push their luck a bit longer. Without any genuine competition to iCloud (Dropbox is another thing entirely) for the moment Apple may feel like they can take their time solving this problem. Thus far, they’ve had almost two years. Let’s hope at WWDC 2013 there’s an announcement about how they’ve fixed it. To stay as the top revenue platform they need to deliver this for developers to pass on and make their customers, and inevitably Apples customers happy.
iCloud is positioned as the heart and soul of Apples new universe where everything is tied into the cloud. It has to be solid and it has to be great.