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 datawhether it's documents, in-game progress, or other detailson 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, its worth forming a clearer picture of how the technology worksideally, without requiring that you hold a computer science degree.
Apple offers developers three distinct iCloud syncing approaches. The first focuses on document-based syncing. Thats the approach that Apple apps like Pages use when you open and save documents; its 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. Its meant for syncing data that users create themselves through use of an app, or data that the app couldnt 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, userswhether they think of it in these terms or notare looking for Core Data syncing, the most complicated option.
Implementing the first two syncing approaches isnt easy, but developers tell Macworld that the third approach, for syncing Core Data, is what Steve Jobs might call a bag of hurtits 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 its 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 theres some good news on that front, he says, since some aspectslike 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 companys apps that are candidates for iCloud all use Core Data. Im sure Apple is hard at work improving the integration issues, he said, so for the time being Ive taken a wait-and-see attitude toward iCloud.
Rich Siegel of Barebones Software says that while his company hasnt 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.
Thats 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 hes 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 iClouds implementation: technical issues with the API, unease regarding its reliability, and complaints surrounding iClouds 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 doesnt 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 theyre optimistic iOS 6due out in the fallwill 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.
Heres Comi again: I regularly receive support emails about iCloud not syncing between devices. He advises customers whose iCloud syncing gets stuck to delete the apps Documents & Data from the Settings -> General -> Usage screen. Having to do this dance doesnt inspire confidence, Comi told Macworld, adding I dont 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 doesnt work, he said. The implementation is a black box for developers, so if something isnt working for a user, its nearly impossible to find out why.
Limited scope: Assuming developers get the iCloud APIs working, and assuming that the APIs perform as expectedand lets be clear, neither of those is a safe assumption todaydevelopers still can remain wary about the service because of what it doesnt 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 isnt supported.
And Siegel from Barebones said that his company concluded that for BBEdit and TextWrangler, we dont really think that iClouds document ubiquity model is a good fit with the highly technical nature of the products at this point. Siegel said that his companys customers typically prefer a revision control system, which keeps track of separate versions of filessomething iCloud doesnt 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 setsand without full cross-compatibility.
The Dropbox option
If developers want to offer syncing features within their apps, without relying on iCloud, thats of course an option. One popular alternative developers turn to is Dropbox, the free cloud-based storage service. Dropbox and iCloud dont solve exactly the same needthe 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 Tortoises Pierce called it a great platform; Bareboness 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 is that it works with traditional file and folders. There are times such a traditional approach feels entirely appropriateas 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 Tapbotss Haddad adds thatwhen it works, anywayiCloud 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 theres 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 doesnt 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 alikemeaning its 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 deviceslike 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 wellbut its 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 wasnt 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 iCloudit was really really a pain, Malca said. I never released a version with iCloud. Malcas 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 Apples control over the data, he said, I cant 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 Simperiums API isnt yet publicly available, it is at least on the roadmap; its antithetical to Apples approach to iCloud.
Oh, and its a lot simpler than iCloud, too, Malca says: Simperiums technology is awesome & I can implement it in fifteen minutes or less, just drag and drop the SDK, set the entities, and Im set. With iCloud, Malca said, he would have had to reengineer his apps data models to mesh with Apples iCloud APIs; Simperium, ironically enough, just worked.
Despite all the pluses, Simperium may have one major downside to developers that iCloud doesnt: It costs money. But rather than charge by the amount of data stored, Simperiums pricing model centers on monthly active users. Malca is appreciative of the approach, since not fretting about megabytes means I dont have to tell users they can sync up to, say, 20 notesI 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 its very easy for him to profit well.
And yet even with all of Simperiums 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 thats 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 Tapbotss Haddad, who prefer iCloud because its a frictionless experience for users. Whats more, Haddad says, since iCloud is built into the operating system, it can do things other competitive services cantlike 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 its too soon to tell whether the services 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 apps needsand yours.