Conflicts

The Talk Show is one of my favorite podcasts. It is hosted by Dan Benjamin and John Gruber on the 5by5 network. On Episode 47, Gruber talked a bit about his thoughts on iCloud and one item has garnered a lot of attention around the web. Thankfully, the folks at Mac Stories typed up a transcript:

Gruber: The new way does not involve merging and conflicts. […] It doesn’t mean that Apple has magically solved the tech difficulties of syncing. […]

You’ve got 3 devices let’s say. Server-side data stored somewhere on a server, and you’ve got an iPhone and you’ve got a Mac. All data is up to date, say Address Book. You have an entry for Dan Benjamin and all it has is an email address. In all three places it’s the same and I sit down at my Mac, I add your home phone # to your contact and then I sit down with my iPhone at the same time (say everything’s offline) and enter Dan’s home # manually, but I enter it wrong. What happens when you sync? You’ve entered two phone numbers in two places, and at the server there’s no phone number. As it stands now MobileMe often will offer you a dialog box telling you that there is a conflict. It presents it to you and you have to pick which one is right. […]

In iCloud I believe you will never be presented with such a dialog, no matter how much has changed in one of the instances while it was “offline”. The server-side iCloud, when there seemingly is a conflict, will make a decision and it will decide which one is the best (in Apple’s terms the “truth”). That is what Steve Jobs means when he says “The Truth is in the Cloud.” iTunes will decide which one is right and that’s it. iCloud will push that right one to any device that has this account that has a different version. But, here’s the trick – what happens if it’s not the right one? On the server side, it will remember all of the other ones, almost like versioning. There will be some sort of interface like “go and look at your contacts.” There will be some sort of way to say “show me previous versions and let me pick the one that is right”. You pick it and push it back up into the cloud and tell it “that’s the truth” and Apple will push it out.

Dan Benjamin: Whatever is the most recent change will propagate but here are previous versions to pick from if you want.

Gruber: Apple won’t reveal it but iCloud, on the server, will determine the truth when it detects a conflict that will never be published. It will act like a “black box”. Most cases it will go by the most recently implemented change — it will be undefined. The key is that if there is a conflict, they will remember the different conflicting versions. If it picks the “wrong truth” it will be able to go back and get the right one. That’s what I mean when I say no more merging or conflicts. iCloud will make its best guess at merging & conflicts other than having you pick it.

Dan Benjamin: Do you know this or is it just a theory?

Gruber: I know this. What I don’t know but I believe, again, is that I think iBooks is an example of this in action. If you have the same iBook on the iPhone and iPad and take them both offline and flip a couple of pages on the iPhone then flip a different number of pages on the iPad, and them put them both online and they go to sync their “read state” or “current page state” to iTunes servers, iBooks never presents you a dialog. […]

iBooks is and has been one of the testbeds for what Apple is now calling iCloud.

I don't know about you, but I think data conflicts are aggravating and disruptive. Thankfully, I rarely see them, but I hate it when I see them, mainly because conflicts rarely affect just one file.

That said, I am curious if iCloud's conflict resolver will work well. At least when the user is prompted, they can do a little legwork to determine which info is correct, and then be done with it. I almost think it would be more frustrating to have iCloud pick the "wrong truth" and then have to rely on that when you are out and about.

Of course, the versioning support sounds like a great compromise, but how exactly do you access that? Through a Mac or PC? That isn't helpful when you are out with friends. If there is a way to access those versions in iOS, that could make things easier.

One thing that does make sense is that iBooks has likely been a large-scale test for iCloud. And it is very good, in my opinion. I haven't once noticed any anomalies between the last-read state on my iPhone or iPad. Even more so, all my highlights and notes seem to work just fine, too, despite sometimes reading my on my iPad while offline.

In the end, I can see why Apple doesn't want to burden users with conflict resolution. It doesn't exactly inspire confidence in a system when it throws up errors. If iCloud can make the right choice 99% of the time, that's pretty awesome. And for most types of data, like iBooks and bookmarks, an wrong choice every once in while isn't particularly devastating. Where iCloud will have very little allowance for error will be calendars and contacts.