In just a few short weeks, iCloud turns two years old, and there is much cause for celebration. Introduced at the 2011 Worldwide Developer Conference (WWDC) during what turned out to be Steve Jobs's last keynote, the successor to Apple's infamous MobileMe has by many standards become a huge success, with a reported 250 million accounts created as of last January and mostly smooth sailing since launch. But despite those numbers, for many developers the relationship with iCloud has become increasingly stormy, and that frustration is finally beginning to strike users.
To most of us, iCloud is primarily a purveyor of free services such as email, calendars, and app and music sync. In reality, it's an umbrella brand under which Apple has consolidated a number of cloud-based services, only some of which are visible to customers. One of those services is the capability for apps to share their data among multiple Apple devices, which, among other things, provides the backbone for the Documents in the Cloud feature offered in iOS and OS X software such as Apple's own iWork suite.
That last feature of iCloud is the main source of developer woe: At times, it has been fragile and hard for third parties to work with, causing some developers to speak out about the problems they've encountered and prompting others to drop support for it altogether.
While these issues could be ascribed to startup problems--building a service like iCloud certainly isn't easy--the technology has been maturing, and it's time for a few improvements that could dramatically increase the service's usefulness to users and developers alike.
The talented Mr. Cloud
In principle, iCloud's syncing capabilities are split among three different but interrelated technologies: document, key-value, and data. The first two deal respectively with the ability to synchronize entire files (such as a Pages document), or with the syncing of small amounts of information, such as an app's settings or the player's progress and stats in a game. Despite a rough start during the first year, these two synchronization mechanisms have become largely stable and reliable, and, thanks also to Apple's effort to simplify their use, they have been successfully adopted by many apps.
Data synchronization, on the other hand, comes into play for apps that have to maintain a large set of structured data, such as a database, using an Apple technology called Core Data--and, to adopt a Jobsian expression, it's a "bag of hurt."
The problem is that Core Data--an otherwise great technology that has been available to developers for many years--was developed primarily with local storage in mind, meaning that it was designed around the idea of saving all its data on a device's local file system. When it came time to integrate Core Data with iCloud, Apple chose to simply tack on the functionality to the existing file-based data storage, instead of coming up with a new network-centric approach.
Sign up for CIO Asia eNewsletters.