The sync conundrum: Rethinking Apple's cloud services
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.
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.
Developers, developers, developers
Despite being mostly invisible to end users, iCloud’s syncing ability is a much more strategically important product for Apple than the rest of its cloud services: It affords customers the convenience of keeping all their data up-to-date, regardless of where they go, and leads them to buy even more into Apple’s ecosystem. That, in turn, creates an ever-increasing incentive for developers to build apps that work exclusively with iOS and OS X, and locks them in by offering cloud storage that is (supposedly) dead simple to use, free, and—conveniently—unavailable on other platforms.
As such, it’s a good bet that Apple is well aware of iCloud’s limitations and working on ways to improve it. In addition to the inevitable technical challenges that await, the company will have some patching up to do with developers, who are anything but happy at the way the service has worked for them so far. Ultimately, however, iCloud still has plenty of opportunities to catch up with its initial promises and profoundly transform the way we interact with our computers.