Apple's broken promise: why doesn't iCloud 'just work'?

icloud steve jobs 640

iCloud, perhaps more than any Apple software product, is meant to "just work." When Apple introduced iCloud, it made clear its hopes to eradicate settings menus and file systems in favor of automation. Steve Jobs pledged to do a better job than he did on MobileMe, Apple’s notoriously horrible stab at web services a few years ago. With iCloud, changes you make to documents on your computer show up instantly on your iPhone and vice versa. "It just works," Jobs exclaimed when he first demoed the service in 2011. "Everything happens automatically," Jobs continued, "and it’s really easy to tie your apps into iCloud’s storage system."


Nearly two years later, customers demand iCloud integration more than ever from third-party developers, but it’s a total mess to implement. "iCloud hasn’t worked out for us," wrote Daniel Pasco, CEO of development studio Black Pixel this past week. "We spent a considerable amount of time on this effort, but iCloud and Core Data syncing had issues that we simply could not resolve." Pocket lead developer Steve Streza piled on with a cutting tweet: "Remember that @blackpixel has many of the brightest people in Cocoa development. If they couldn’t get iCloud working, who can?"

Cloud break

"I’ve rewritten my iCloud code several times now in the hopes of finding a working solution," wrote developer Michael Göbel in a blog post, and "Apple clearly hasn’t." The problem is this: Apple has failed to improve the way it syncs databases ("Core Data") with iCloud, yet has continued to advertise and market iCloud as a hassle-free solution.

"The promise of iCloud’s Core Data support is that it will solve all of the thorny issues of syncing a database by breaking up each change into a transaction log. Except it just doesn’t work," said a very prominent developer who asked not to be named in order to stay in Apple's good graces. iCloud apparently chokes hard on the databases it’s supposed to be so proficient at handling. From a user perspective, this means that despite a developer’s best efforts, data disappears, or devices and data stop syncing with each other.


"Many of these issues take hours to resolve and some can permanently corrupt your account," one top developer told me. "AppleCare has been unable to assist our customers who run into these issues." Unfortunately, many apps that want to sync files require the use of databases with parts that all rely on each other. "iCloud is, without a doubt, a great tool for straightforward file saving," says Money app developer Jumsoft, referring to iCloud’s Document-based sync feature utilized by apps like Clear and Day One. Removing Core Data from the app "would make [it] little more than simple spreadsheets," Jumsoft said.

Many problems stem from the fact that Apple doesn’t account for edge cases where users do unexpected things, like sign out of one Apple ID and sign in with another. "How do we handle a user who starts the app logged out of iCloud but later logs in and resumes the app?" wrote one developer in Apple’s support forums. "The reality of syncing data is that it’s tough, and network availability is not always reliable or fast [...] You have to write a lot of nonobvious code to handle updates and problems," Streza wrote in a blog post. The only way to resolve these kinds of issues is to respond to support emails one by one, and in some cases help reset each user’s iCloud data manually, a big waste of time for developers.

iCloud errors which lead to corrupted files or data loss jeopardize customer loyalty. "I too have been receiving customer complaints and one-star ratings," wrote developer Brian Arnold in Apple’ support forums. "I have yet to receive a suitable response as to why the problems are occurring, or what I might be able to do about them." Apple’s support forums are littered with complaints about syncing with iCloud.

"iCloud with Core Data is a developer’s worst nightmare," a developer told The Verge. "It’s frustrating, maddening, and costs hundreds of support hours." One of the toughest parts is that customers demand iCloud support after seeing Apple marketing, yet developers can’t deliver. "One key thing to understand is that user’s perception of iCloud’s functioning is largely based on apps that do not use Core Data for their sync," AgileTortoise developer Greg Pierce told me.

When Apple does use iCloud, it most often doesn’t even use Core Data to sync information. Apps like Keynote, for example, use the far simpler Document-based syncing method. Keynote must work, so Apple keeps a close eye on Document-based syncing functionality. And when it does rely on Core Data, Apple’s software has no more luck than third party developers. Apple’s simple Trailers app uses Core Data to sync, and periodically loses track of user Favorites. "The best Apple technologies are ones they use themselves," one developer told me.

Apple keeps quiet

"Can anyone from Apple comment on this situation?" asked developer Justin Driscoll in Apple’s support forums. "I’m scheduled to run a promotion for the app (which I’ve already paid for) tomorrow and now it looks like I have to remove the app from sale instead." Apple hasn’t been helpful with developers struggling with iCloud syncing, and has instead elected to deflect support requests towards the next iOS or Mac update.


The issue dates back more than a year to Apple’s Worldwide Developers Conference in 2012, where hordes of developers lined up outside Apple support desks hoping to get answers about why iCloud was so difficult to implement. Apple’s documentation on integrating iCloud into apps has been sparse, and developers hoped to get answers from Apple. "You could mistakenly be led to believe that integrating iCloud in your Core Data app will be a walk in the park," developer Drew McCormack wrote a month before WWDC. "Unfortunately, at this juncture, nothing could be farther from the truth."

Just wait until iOS 6, Apple said to developers at WWDC. The company also released sample code developers could use to build out CoreData syncing, but the code was incomplete at best. "From iOS 5 to iOS6, things got 100 percent better, but not nearly good enough," one developer told me. The problem is partly due to the fact that Apple only had four people leading the company’s work on Core Data as of last year, a source close to Apple has told me. The company has simply not expressed any desire to fix Core Data syncing.

Apple declined to comment on this story.

Cloudy skies

Many veteran developers have learned their lesson and given up on iCloud’s Core Data syncing entirely. "Ultimately, when we looked at iCloud + Core Data for [our app], it was a total no-go as nothing would have worked," said one best-selling iPhone and Mac developer. "Some issues with iCloud Core Data are theoretically unsolvable (stemming from the fact that you’ve put an object model on top of a distributed data store) and others are just plain bugs in the implementation," he said. Syncing alternatives exist, but none of them live up to the goals iCloud set out to achieve nearly two years ago: creating a seamless syncing solution that "just works" without logging in or setting up anything.

So what about Dropbox? It seems to be the most popular solution. First, integrating Dropbox means asking users to sign up for and and authorize one more app. "As much as I like Dropbox both personally and for Elements, I want to support iCloud because it’s one less barrier to entry for customers who don’t have or don’t want a Dropbox account just to sync files," Elements app developer Justin Williams told me.

Second, Dropbox uses Document-based syncing. If you’ve ever tried to sync an iPhoto library with Dropbox, you know that Dropbox also chokes on databases. As Jumsoft and several developers have confirmed, document-syncing isn’t what they’re after: the dream is to have databases on two or more devices that stay perfectly in sync. In truth, nobody has been able to do the job well in the iOS space, so iCloud was a beacon of hope at its inception.

The final reason to spend hours toiling over iCloud? Apple loves to feature apps that effectively implement its solutions, like in-app purchases, Game Center, and iCloud syncing. "If you don’t incorporate iCloud into your apps, Apple will never feature them," Göbel wrote. For developers, being featured can mean the difference between a breakout hit and total bust.

The waiting game

WWDC 2013 is just around the corner, and while many of iCloud’s syncing issues have been fixed, dozens of bugs remain unsquashed. So can these issues ever be solved? "[Apple’s] approach to the problem was very novel and interesting, and perhaps they will ship a version of it that works – but it functions very differently than typical sync solutions in that there is not a central server hub that maintains the ‘truth in the cloud,’" Pierce told me. "Because of this there is a lot of fragility to the implementation, and I’m not sure it will ever scale well to larger data sets," he said. In layman’s terms, it’s damn hard to keep databases with countless interdependent parts in sync.

"Our only recourse is to throw bugs into the black hole that is Apple’s Radar bug-filing system and hope that they fix stuff," another top iOS developer told me. It would be one thing if Apple made clear it was working to improve Core Data sync, but I’ve been told that there’s close to zero communication with developers about its progress. There’s only the occasional murmur, at WWDC or on the street between developers and Apple employees, who acknowledge the issue but provide no timeline on a solution. "I would love for Apple to tell us they fixed everything with iCloud in iOS 7 and we can finally use it without issue two years later, but I’m not getting my hopes up," one developer told me. Another who has thus far adamantly supported iCloud said, "If Apple doesn’t fix it in iOS 7, we’ll have to abandon ship."

Recommended by Outbrain

Comments

To date, never had an issue with iCloud. Now MobileMe, sheesh!

I’m the same way, but we may be the minority.

consider yourselves lucky – some people had their mail offline for days, yes days…not just minutes

Man, if you use iCloud mail, there’s your problem right there.

Also I’ve had my iPhones, iPods, iPad swapped or reset many times and restoring has been 9/10 for me. The one problem I have with restoring, is if your device dies while restoring, LOTS of problems occur which makes you have to restart the restore. That is it for me, Documents in the Cloud, Photo Stream, app backup has never been a problem for me.

I wasn’t sure about the way you worded your comment, but are you happy with the 9/10 restore?

I’ve never had an issue, and I use my iCloud email as my main email… my gmail has been hacked a crapload of times but neither has ever gone out on me.

With or without two-factor?

with. the last time, anyway.

Might want to change your gmail password from fluffykitten

/s

you know what, that could be it… lol…

i don’t think etwashoo uses any apple products. He just comments on them. (a lot)

Two iphones, two ipods and a mbp – you are right though, i don’t really use them. Two ThinkPads and 4 Android phones an acer ultrabook and two Galaxy Tabs. Dell Latitude at work docked with 2 monitors. That is all i got.

what iphones? two galaxy tabs? You’re out of control.

I would say it’s the opposite. He’s totally in control. He experiments with different devices from different companies and decides which ones suits his needs better.

If he’s a developer and a tinkerer that’s actually quite low.

you are a monster… it may be time for an intervention, lol…

nah, that’s just jealousy talking, carry on…

File restore is, as the article points out, not using the same syncing tools or technologies that Apple documents and pushes for these developers… often they simply dont work. Apple mostly uses a dropbox/iDisk like setup for syncing documents, backups, etc under the iCloud moniker because thats what these Core Data elements (mostly complex databases) sit on-top of. Its a native format transaction instead of something abstracted or bolted on. When you use the real features of iCloud (that it brought to the table over its iDisk former iteration) its mostly broken with out-of-sync issues that can easily cause data loss and overwrites.
Syncing databases in mixed bandwidth, intermittent connection environments (especially non-key based or higherarchical databases) is a pain in the butt that only a few companies have ever gotten it to work half decently (Google being one). You also have to feel bad for the developers at Apple that are suposed to make this “magic” work since they are understaffed and often ignored by the greater organization. Apple just doesn’t seem interested in fixing these issues because it doesn’t use them itself outside of a few outliers.

Microsoft e.g. has it’s own commercial database server, with mobile editions and with the Sync Framework a pretty well working Framework for doing Sync in those situations. The problem is: they don’t support it on Windows Phone and with the move from SQL CE on WP to SQLite on W8/WP8 it all falls apart.

But still they have the knowledge to build something like this properly. Apple simply lacks the experience in that regard and does not seem willing to invest into building it. It is one of the biggest problems in data management though.

So we end up with Apple being unable to do it and Microsoft unable to bring existing solutions to their platform.

I believe Apples problem with fixing theses issues are that’s its not sexy or something they can point at at a device release.

You didn’t have issues because the app developers worked countless hours to fix all the potential issues.
Now, what was the cost for them to support this feature? That’s another issue.

I only use 2-3 games that use iCloud, and those games I rarely play on my iPad. So my success rate w/ iCloud has about 0 to do w/ developers & everything to do w/ Apple. In fact, the only time I can think of an iCloud problem is when Infinity Blade II kept resetting iCloud data I have never had a problem w/ Photo Stream, iCloud backups, or any other 1st party iCloud products. But again I realize I may be in the minority.

almost all my games have used icloud. never had a problem with batman, infinite blade etc. But it only takes a strong and vocal minority.

It’s Core Data that is the issue, not iCloud. Core Data is part of iCloud as the article explained. Just because X uses iCloud does not mean that it uses Core Data. For example, Keynote does not use Core Data, it uses Document-based syncing.

Some of my friends and co-workers are iOS developers and I have never heard a kind word about Core Data. iCloud Document-based sync? Works like expected. Core Data? A world of hurt.

Apple tried to solve a complex problem and failed at it. They either need to fix it or apologize, remove it from their ad campaigns, and move on.

I don’t think it’s just Core Data that has issues. Until iOS 6.1 my iPhone 5 seemed to live in its own little iCloud world.

Everything I saved in Pages, Numbers, GTA Vice City, etc would be synced perfectly between my iPads, but my iPhone steadfastly refused so see any of it, and vice versa any items saved on the iPhone wouldn’t sync with my iPads. It was definitely saving to iCloud, as I could delete the app, re-install and my data would restore stuff from there. It just wasn’t seeing my other devices, despite seemingly being on the same iCloud account.

Then after the last update it suddenly all started working, although at the cost of wiping any documents I had on the iPhone (although fortunately it wasn’t anything important). So I think even the simple document syncing stuff on iOS has had issues.

The difference is this. If I play a game and save it to a file that file will get uploaded and downloaded on my other devices and everything is fine.

If I have e.g. a contacts database I don’t upload the whole database every time. I upload the datasets that have changed and update them on the other devices. Or I create them if they don’t exist there. It’s quite complicated to track what changed, etc. though even if you have only the master in the cloud and the database on the device. Now imagine having that App running on your iPad and your iPhone and changing the same contact on both those devices (one correction to the Adress, one to the name) and you have a conflict in a single dataset.

If that occured with game saves it could simply keep both savefiles and ask you during the next startup which one to use. If you start duplicating contacts or favorite entries, etc. it’s more problematic.

Hope that illustrates why you have more problems with one of those scenarios than with another.

View All Comments
Back to top ↑