iCloud and the problem with opaque sync

iCloud was meant to make data ubiquitous -- to magically handle syncing everything that really needs syncing between iOS and OS X devices, so users simply have the most up-to-date stuff, backed up and available, all the time and everywhere, without worrying. And it is. Except when it isn't. And when it isn't, it's almost as opaque to developers building against its APIs as it is to users wondering where their stuff is. So what to do?

Tapbots' Paul Haddad spoke about the challenges of iCloud sync, especially document sync, on this week's episode of the Debug show. Other developers, however, have already chosen to leave iCloud behind. Vemedio have chosen to do just that with the upcoming Instacast 3.

[iCloud sync is] gone, thank god. Making iCloud reliable is nearly impossible for a 3rd party developer. The app APIs are confusing, unclear and unreliable. There were so many problems on so many levels that we decided to roll out our own sync solution. If something now does not work correctly, we at least have the possibility to fix it ourselves. Another advantage is that the new sync is much faster and works instantly, at least when both devices are on the same local network.

iCloud’s biggest problem is that it goes out of its way to obscure a lot of this detail from you. Their pitch is that creating apps with the document system and putting them in iCloud means they will all sync magically and you don’t have to worry and we’ll handle it for you thank you very much. But the reality of syncing data is that it’s tough, and network availability is not always reliable or fast (especially on mobile). You have to write a lot of nonobvious code to handle updates and problems. Building for iCloud once means you limit yourself to only Apple devices; you can never get that data synced to an Android device or make it accessible via the web (short of later building your own system, updating your apps, and making them push iCloud-stored data to your own server). And iCloud has not exactly gained notoriety for its stability or its friendliness to developers. The only real debugging tools you have are a web app that lets you see what’s in an iCloud folder and some rather verbose logging flags you can turn on that tell you some stuff about the syncing process. In other words, it’s not easy. I’ve tried to integrate iCloud no less than 6 times in various app prototypes, and every single time I’ve ran from it.

Streza does point out, however, how hard rolling your own solution can be. That's true if you're an indie developer, and just as true if you're Apple. Google, Amazon, and Facebook are internet services companies. Apple isn't. They're having to become one, and you don't pivot from software to services on a dime.

iCloud is still a work in progress, and it will likely continue to improve in future iOS and OS X versions. Hopefully it'll continue to improve independent of iOS and OS X as well, as the advantage of server side services should include decoupled development and hardware that's capable of receiving updates when they're ready, irrespective of the state of client-side OS updates.

Let's hope everyone in Eddy Cue's internet services division is working on making iCloud and related server-side infrastructure not only ubiquitous, but far more modern, reliable, and scalable for users and developers alike.

Reader comments

iCloud and the problem with opaque sync

All I have to say about this is that not using iCloud sync in your app means that I and tens of thousands of other prospective customers simply won't even look at it, and *that* is likely worse for developers than the "pain" of trying to code to iCloud. Seriously, this just comes across as whining to me.

It's better for the user to use iCloud than to have multiple accounts at multiple different cloud providers. It's also a huge security risk to simply sign up for some unknown web service on some unknown server run by "some guy" who made the app. This is something that any good developer would not ask their customer to do.

Personally I'm fed up with having to sign up for a new cloud for every app out there. I think developers are simply thinking a bit too much of themselves here. The perfect example of this is DropBox. Just because all the cool HTML coding hipsters use DropBox, doesn't mean that just adding dropbox support to your app is enough.

My advice to developers is to try thinking of the actual users of your software instead of just what's easy or cool for you. Stop trying to force your opinion of Apple and iCloud on me and just give me some tools to get the job done.

These developers are not avoiding iCloud because they *want* to develop and maintain their own server infrastructure -- that is a pain and expense devoutly to be avoided, if at all possible. They are doing it because neither the uptime nor working with iCloud has been reliable. If your app relies on (not just uses, but relies on) syncing for core functions, that syncing has to work, period. Customers are not going to care that some 3rd party provider -- in this case, Apple -- may be at fault. The buck stops with you, the developer.

With that in mind, very few people want to place their reputations or their livelihoods in the hands of a third party unless that third party has a rock solid reputation, and even then most do not do it without working in some sort of reliability or uptime guarantee into a contract. iCloud has neither that reputation nor that contract. It is a nicety offered by Apple to entice developers with not much more than a "use at your own risk" placard, and it is hardly surprising, given iCloud's rocky last few months, that some developers have decided, at least for now, that risk is too much to bear.

"Fortunately, even their strongest cloud competitors, like Google, are still falling on their faces every once and a while"

Seriously? You're talking about implementing Cloud services and you WANT to make it look like Google is having just as much trouble as Apple is, so you link to an article about how Google is sold out of Nexus 4 phones?!?! Hoping that your iFollowers don't click through and just assume that Google is having troubles with Cloud also? And you term it "falling on their faces"?!?! That they are SOLD OUT of Nexus 4s?!?!! HA ha hahaaaa!!!!

The article wasn't about Google being sold out, it was about their infrastructure not being able to handle the demand in the first place (i.e. their servers failed, no one could order, so they weren't sold out).

Instacast Infinity could come out ..not interested. Looks great but Downcast gives me proper iCloud (sans excuses) for less than a third of the cost.

Pocket is simply a backup behind Instapaper. I don't give a reptiles arse about Pocket's cross platform ambitions if you're talking about my money or my data it's about "me" and if you're not giving me what I need I move on to your competitor. Life in biz is tougher than iCloud. Your customers are fickle. Gazoobee is as right as right here. Every developer should look in the mirror and say "F*** you!" "F*** your hopes, your dreams it's about the customer" then and only then will you find the success you've dreamed about.

Hmmm interesting. Just was weeding out some apps and I was deciding between keeping Quote Folder or Quotebook on my iPhone/iPad. Both seemed very similar in function and well designed. The one the won. Quotebook. Why? iCloud sync. The less work I have to do to keep things in sync the better and Quotebook kept my eyeballs and fingers on it because the developer did the hard work and added iCloud support.