The API challenges are the most commonly shared concern. Comi says, one problem is that the iCloud API is too low level, meaning that it takes a lot of code to accomplish basic tasks. For example, the iCloud API doesn’t offer a single function for putting a file into iCloud, or removing one.
In contrast to many Apple frameworks, the iCloud stack is very weird, and almost feels “tacked on”. The basic idea for a developer, is that by moving document files to a special location, they are ‘moved into iCloud’. Although it is easy to visualise this process, it is cumbersome to implement. If a user turns iCloud off, for example, the onus is on the developer to move all the files back into the local application storage, ensuring to handle edge cases appropriately (such as disabling iCloud on one device, but not others). Later, if the user re-enables iCloud, the developer has even more work to do, matching and merging documents in the cloud with those that, until a moment ago, lived in the confines of the local device only. Another layer of complexity arises when the document model needs to change (by an app update): What happens if the user has two devices, but has only updated one of them?
Alongside the blips in Apple’s backend (which developers have no means to debug) these incompatibilities mean that integrating iCloud is frustrating and painful; it is much more work than it should be. Low-level APIs are important, for applications that require deeper customisation and behaviour, but the lack of a simple API has deterred almost everybody. Even complex apps would benefit from a higher-level “save to iCloud” command sometimes, as you don’t always need specialised behaviour to perform some actions1.
The fear I have is that iCloud may follow the path of Apple’s other cloud initiatives; it fails and Apple rebrands it in a couple of years. This pattern has been shown throughout the past: iTools to .Mac, .Mac to MobileMe, MobileMe to iCloud. However, the improvements made in iOS 6 and their repeated statements on their commitment to iCloud give me confidence that these issues will be resolved. Consequently, iCloud will work as it should2: like magic.
1 An example would be a journal app, which wants to sync images and accompanying formatted text. Whilst the text might need special requirements to iron out the intricacies of rich-text, the image files probably just need to be shared amongst devices which would be satisfied by a simpler method.
2 In some places, it does act like magic. Photo Stream is simply great. Logging in to a new iOS device and seeing all the bookmarks from your Mac is fantastic. It is a shame other areas, particularly those involving third-party apps, let the service down.