Developers dish on iCloud's challenges

With services like Dropbox, Google Docs, and even IMAP email, users today expect their data to remain up-to-date and available on every device. iOS users want conflict-free access to their data—whether it's documents, in-game progress, or other details—on their iPads, iPhones, and Macs. Apple aims to satisfy that user need with iCloud.

With iCloud, Apple promises developers that they can keep their users’ data in sync. But while a steadily increasing number of developers are implementing iCloud support within their apps, its adoption rate still seems surprisingly low overall.

Are developers hesitant to embrace iCloud? And if so, why?

Clearing the iCloud fog

To better understand developer perspectives on iCloud, it’s worth forming a clearer picture of how the technology works—ideally, without requiring that you hold a computer science degree.

Apple offers developers three distinct iCloud syncing approaches. The first focuses on document-based syncing. That’s the approach that Apple apps like Pages use when you open and save documents; it’s a means of saving files to iCloud rather than to an individual device. By implementing that document sync, developers can let a user access the same files from multiple devices, so long as that user uses the same app on all those devices.

The second iCloud syncing method Apple offers developers relates to something called Key-Value data. In its simplest form, Key-Value data refers to storing tiny bits of information. An app that lets you choose a custom font, for example, might store a key/value pair where the key is “font” and the value is “Helvetica Neue.” Developers can sync lots of such key/value pairs for each user; beyond font preferences, developers might use the feature to sync high scores, in-game progress, a preferred email address, or other small bits of data.

The third iCloud syncing approach is, perhaps, the hairiest for developers to implement. Apple refers to it as Data Storage; developers prefer to call it Core Data. It’s meant for syncing data that users create themselves through use of an app, or data that the app couldn’t recreate itself. Of the three iCloud syncing technologies, this is the one that requires the most work for developers. Developers must not only implement the core syncing, but also code their apps to actively police the syncing process, including removing old data periodically when appropriate.

An app that implements any one of these three approaches is, by definition, using iCloud. But for many kinds of apps, users—whether they think of it in these terms or not—are looking for Core Data syncing, the most complicated option.

Implementing the first two syncing approaches isn’t easy, but developers tell Macworld that the third approach, for syncing Core Data, is what Steve Jobs might call “a bag of hurt”—it’s extremely complex. While iOS 6 will offer developers some significant improvements for behind-the-scenes iCloud syncing, the challenges such syncing presents will likely remain difficult.

Developers with their heads in the cloud

For some developers, iCloud is a mixed bag: They want to implement it, but it’s an awfully complicated undertaking.

Greg Pierce owns Agile Tortoise, which makes iOS apps like Phraseology and Drafts. “There are many aspects of iCloud I am excited about, and I look forward to using in apps in the future,” Pierce told Macworld. And there’s some good news on that front, he says, since some aspects—like the aforementioned key/value sync support, are fairly straightforward. But he adds: “There are other places, like Core Data database support, where iCloud is still somewhat half-baked, and the majority of the implementation work remains in the developers hands.”

Pierce says that his company’s apps that are candidates for iCloud all use Core Data. “I’m sure Apple is hard at work improving the integration issues,” he said, “so for the time being I’ve taken a wait-and-see attitude toward iCloud.”

Rich Siegel of Bare Bones Software says that while his company hasn’t yet released software with iCloud integration, “we are hard at work on implementing iCloud synchronization in Yojimbo.” Unfortunately, however, Siegel reports that the company has “certainly encountered unexpected technical challenges while bending iCloud synchronization to our will.”

That’s a familiar sentiment. Matt Comi of Big Bucket Software uses iCloud to sync data in apps like TV Forecast and The Incident. Comi told Macworld that while he’s “happy with the [iCloud] feature set,” he has “issues … with the implementation of those features.”

Objections to iCloud

Developers tend to focus on three sorts of objections to iCloud’s implementation: technical issues with the API, unease regarding its reliability, and complaints surrounding iCloud’s scope and functionality.

API issues: 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. The iCloud documentation Apple provides developers includes sample functions that encapsulate all the necessary code for handling such common actions, and Comi says that many developers just copy and paste them, but he adds: “These functions should exist as part of the API … [T]he iCloud API needs to be more abstracted.”

Many of the developers who spoke to Macworld indicated that they’re optimistic iOS 6—due out in the fall—will improve many of these underlying API issues.

Reliability: Even once developers wrangle the iCloud APIs well enough to do their apps’ bidding, significant problems remain. Developers consistently report that iCloud works anything but, well, consistently.

Here’s Comi again: “I regularly receive support emails about iCloud not syncing between devices.” He advises customers whose iCloud syncing gets “stuck” to delete the app’s Documents & Data from the Settings -> General -> Usage screen. “Having to do this dance doesn’t inspire confidence,” Comi told Macworld, adding “I don’t know why it happens or why this fix works.”

Paul Haddad, the lead iOS developer at Tapbots, offers up a similar assessment: “Under iOS 5.x there are times when iCloud simply doesn’t work,” he said. “The implementation is a black box for developers, so if something isn’t working for a user, it’s nearly impossible to find out why.”

Limited scope: Assuming developers get the iCloud APIs working, and assuming that the APIs perform as expected—and let’s be clear, neither of those is a safe assumption today—developers still can remain wary about the service because of what it doesn’t do.

Pierce, from Agile Tortoise, said that “some of the inherent limitations of the iCloud platform make it a questionable choice for certain applications,” highlighting specifics like apps that want data you “store from other apps, or on other platforms.” iCloud apps can access only their own data; sharing that data across different apps from other developers isn’t supported.

And Siegel from Bare Bones said that his company concluded that “for BBEdit and TextWrangler, we don’t really think that iCloud’s document ubiquity model is a good fit with the highly technical nature of the products at this point.” Siegel said that his company’s customers “typically prefer a revision control system,” which keeps track of separate versions of files—something iCloud doesn’t offer.

And integrating iCloud in Mac apps comes with another serious limitation, too, Siegel points out: “Products that use iCloud may only be distributed in the Mac App Store.” Some developers, like Panic, offer iCloud sync in the Mac App Store versions of their apps, and not in the standalone versions. But that, of course, means developers must maintain separate versions of their apps with unique feature sets—and without full cross-compatibility.

The Dropbox option

If developers want to offer syncing features within their apps, without relying on iCloud, that’s of course an option. One popular alternative developers turn to is Dropbox, the free cloud-based storage service. Dropbox and iCloud don’t solve exactly the same need—the former being a login-based, versioned, file-syncing system, while the latter is meant to be ubiquitous, seamless, and friction-free. But Dropbox sync is a hugely popular feature across apps, particularly on the iOS side.

Where almost all the developers Macworld spoke to expressed significant concerns about iCloud, none had anything bad to say about Dropbox. Agile Tortoise’s Pierce called it “a great platform”; Bare Bones’s Siegel described it as “a great service” and “an essential part of my workflow.”

But Pierce added that “the biggest limitation to Dropbox is that it works with traditional file and folders.” There are times such a traditional approach feels entirely appropriate—as with text editors, where users are accustomed to saving individual documents. But for other apps, Dropbox makes little sense; Siegel points out that “the file-oriented synchronization that Dropbox offers is not suitable for a database-model product such as Yojimbo.”

And Tapbots’s Haddad adds that—when it works, anyway—iCloud is instantly ready to go from the first launch of an app. To access your Dropbox storage from within a third-party app, you first need to log into it. “It seems like a pretty minor detail,” Haddad says, “but having to log in to yet another account just to use a feature is an inconvenience I like to avoid.”

And then there’s Simperium

Another potential competitor in the space comes from the company behind Simplenote, which offers a cloud-sync service called Simperium. Simperium supports Dropbox-style versioning, but is also built to sync Core Data fluidly. Alternatively, iCloud doesn’t offer developers the ability to choose older versions of the data their users sync. And as a hosted Web service like Dropbox, Simperium syncs across platforms and devices alike—meaning it’s not limited, as iCloud is, to Apple devices.

Michael Johnston is a Simperium co-founder. He described Simperium to Macworld as “a simple service for developers to move data among devices—like iCloud.” Even better, Johnston says, it “lets users access their data on their iPhone, iPad, and Mac, along with the Web and other devices, with full offline access as well—but it’s faster, more reliable, and gives developers more control than iCloud does.”

Because of these advantages, some developers are turning to Simperium as an iCloud alternative. Emerson Malca built an app for students called inClass; it will soon cross the 2 million downloads mark. Now it syncs with Simperium, but that wasn’t always the plan. Malca told Macworld that his users wanted sync, so he worked to integrate iCloud within the inClass app.

“I tried to use iCloud—it was really really a pain,” Malca said. “I never released a version with iCloud.” Malca’s reasons included all the downsides we covered already (difficulty with the API, inconsistent functionality, being limited to Apple devices, and so on), but he adds one more complaint to the list: “Because of Apple’s control over the data,” he said, “I can’t do cool things with it.” For example, Malca is working to include the ability for students to share or collaborate on note-taking within inClass. With iCloud, data is tied to an individual user, so that sharing is impossible. Simperium, he says, lets him sync data between not just devices, but also between people. Though the cross-user sharing portion of Simperium’s API isn’t yet publicly available, it is at least on the roadmap; it’s antithetical to Apple’s approach to iCloud.

Oh, and it’s a lot simpler than iCloud, too, Malca says: “Simperium’s technology is awesome … I can implement it in fifteen minutes or less, just drag and drop the SDK, set the entities, and I’m set.” With iCloud, Malca said, he would have had to reengineer his app’s data models to mesh with Apple’s iCloud APIs; Simperium, ironically enough, just worked.

Despite all the pluses, Simperium may have one major downside to developers that iCloud doesn’t: It costs money. But rather than charge by the amount of data stored, Simperium’s pricing model centers on monthly active users. Malca is appreciative of the approach, since not fretting about megabytes means “I don’t have to tell users they can sync up to, say, 20 notes—I can just sync all their data, period.” He says his costs work out to “about two cents per user” each month, a rate at which he says it’s very easy for him to profit well.

And yet even with all of Simperium’s advantages, some developers may be wary about ceding syncing control to a third-party. With iCloud, developers and their users are trusting their data with Apple, which has a solid reputation and track record for protecting user privacy. Simperium co-founder Johnston says that the company has two approaches to assuage such privacy concerns: The first is that developers can easily configure Simperium to ping the developers’ own servers with updates, meaning that they can keep their own copies of all user data, instead of accessing it only via Simperium. Further, Johnston told Macworld, “We know there are some developers who will want complete control, and that’s where our open source option will come into play.” That open source option may be months off, Johnston says, but will allow developers to run their own Simperium syncing services instead, thus retaining complete control.

Still, there will always be developers like Tapbots’s Haddad, who prefer iCloud “because its a frictionless experience for users.” What’s more, Haddad says, since iCloud is built into the operating system, it can do things other competitive services can’t—like background syncing. “With iCloud, the OS can sync state without your application even running, [which] can be a big benefit to certain classes of applications.”

Send in the clouds

For developers to embrace iCloud more fully, then, Apple will need to find a way to make the service simpler to use, and more reliable to boot. All indications are that iOS 6 takes great strides on the “improving simplicity” front, but it’s too soon to tell whether the service’s reliability will improve, at the same time.

And even if it does, iCloud may never be enough to satisfy developers craving a deeper, more nuanced syncing approach than Apple chooses to offer.

If iCloud integration is still absent from your favorite app, it may well not be for lack of trying. Or perhaps, the developer is holding out for (or already working to integrate) an alternative syncing option better suited to the app’s needs—and yours.

Subscribe to the iOS Tips & Trends Newsletter

Comments