The resulting system works essentially by recording all the changes made to a Core Data store on a device in a set of files, which are then propagated to the user's other devices by iCloud's file-based sync; once there, they are "played back" against a local copy of the data, thus producing the same data set everywhere--at least in principle.
If this procedure sounds overly complex, well, it is. The system is fraught with opportunities for data synchronization problems, and a lot of developer care must go toward avoiding conflicts and accidental deletions, which, unfortunately, are all too common.
It's hard to say whether this approach can ever be made to work well or whether a fresh alternative is necessary, but Apple definitely has to find a way to make data synchronization work. Even then, the company will have quite a task on its hands trying to gain confidence in the technology--once burned, twice shy.
This isn't a problem that is unique to iCloud, however, and a lot of research has gone into the issue over the past few years, resulting in great advances in the field of data storage and scalability; with a little luck, developers will get some good news at this year's WWDC.
In the cloud, sleeping with the fishes
These problems wouldn't be quite as bad if iCloud didn't compound them by being notoriously tight-lipped when it comes to reporting errors. From a developer's perspective, the service communicates precious little information about its state to the apps that use it--at one point, it wasn't even possible to tell whether iCloud had been enabled at all--and this, in turn, makes it hard to troubleshoot a problem, or even to tell the user that something has gone wrong, much less what.
From a developer's standpoint, this is a frustrating state of affairs. Because iCloud's services are mostly hidden from view, users will inevitably blame the app for any adverse effect that sync has on their data. Meanwhile, programmers have no way of building into their code the ability to help users, or even to assist them in troubleshooting issues that could be as simple as being logged in to the wrong iCloud account. The end result: unhappy users, damaged reputations, and stratospheric customer support costs.
The solution to this problem is, obviously, for iCloud to provide better error-reporting facilities--not just to developers, but to end users as well. Such communication would make customers aware that the apps they use rely on Apple's own services, and could inform them when the latter are not working properly. It's not an easy task--each app is unique, and there is a lot that can go wrong, making it challenging even for the operating system to figure out exactly what the issue is--but Apple is certainly in a better position to tackle it than individual developers who have no view into the inner workings of Cupertino's software.
Sign up for CIO Asia eNewsletters.