Wednesday, March 27, 2013

Syncing is harder than it looks

It used to be that Apple's marketing didn't grossly outstrip its technology. That happy state no longer appears to be the case.

TheVerge.com has an article entitled, "Apple's broken promise: why doesn't iCloud 'just work'?" by Ellis Hamburger. While a simple form of synchronization, so-called Document-based sync, works reasonably well, the equally important synchronization of Core Data, a key Apple technology that wraps databases, is unreliable.

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.
Apple has made the situation immeasurably worse for its third-party developers by inaccurately (or, if you're inclined to be suspiciaus, falsely) giving the impression that iCloud synchronization just works, no matter the circumstances.
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.
Users cannot be expected to know the difference between synchronizing a self-contained document and synchronizing a database, so developers take heat when their iOS apps and Mac OS X applications experience sync errors.

Make no mistake, synchronizing is hard. You have to take into account many odd possibilities for user behavior. Multiple users updating a shared database (or document, for that matter) make for a nightmarish synchronization problem. Even a single user making conflicting changes to the same database or document on different systems is a real mess. I've been on the periphery of that problem: I know how tough it is.

If you're still not convinced, ask yourself this: why is Larry Ellison so rich? It's not for his charm. Oracle has made and continues to make a very good profit by addressing this problem.

Apple was, I suspect, ill-equipped managerially to support iCloud. I say "managerially" because the blame for such a technical fiasco does not generally rest with the engineers: they aren't miracle workers.

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.
Four people. From what I know of the company, that sounds plausible. And that jibes with Apple's long-time disinclination to play in any technology area that requires sustained back-end software support or that involves providing "software as a service".

Apple got plenty of heat for its misbegotten MobileMe service, and before that .Mac, both of which featured less advanced versions of synchronization. The fact that it didn't do significantly better with iCloud suggests that mid-level management didn't learn from the company's past mistakes and didn't adequately respect the problem space. Now, a handful of engineers are paying the price for the company's willful disregard. With Amazon and Microsoft aggressively leading the cloud market and defining robustness against failure as a feature of that market, Apple can't just pretend to incorporate the cloud. It either has to do the technology right, or stop supporting it altogether.

No comments:

Post a Comment