I tried out two new services over the last couple days, Highrise (contact management web app) and GrandCentral (a “one phone number for life” VoIP call-forwarding service). I’m not going to review them here, but I noticed that both services make the false, tired assumption that either my address book is static or their copy of it is authoritative. They provide a way for me to send them my entire address book, but it’s designed as a one-time operation. So either my address book never changes, or their copy of it is all-holy. I don’t want to single out these two apps, though; this is a serious problem. Skype, Adium, LinkedIn, Facebook, you name it. Many many more apps are culpable. And it seems ironic that, in 2007, the Internet is creating more data disparity for me across everyday applications, not less. I thought this was supposed to be the great connector of people and data?
Web applications are partly to blame. Highrise offers import/export options for vCards. To their credit, they do delete obvious duplicates when you re-import set of vCards. But that’s not syncing, it’s just dupe detection, and it still assumes that Highrise’s copy of the contacts is authoritative (their copy always “wins” on an import). I want to sync! I don’t even want to manually initiate it. I just want the network to assimilate my changes automatically. Unfortunately, as much as we all love JavaScript these days, this isn’t something you can do inside a browser window. But moving this data around manually is a 100% waste of time, so when I sign up for Highrise, I’m signing up for that time waste. I believe there is no customer for whom the import and export function for address books is a benefit.
We need syncing. We need to smoothly merge versions of our data from different contexts.
One answer is to store things in fewer places, but that’s unrealistic in 2007, unless my plan is to quit the Internet entirely. Fact of life: My digital data is dispersed all over the place. I have bookmarks in five different web browsers on two computers. And my address book is so dynamic that the authoritative copy is in my head and in a stack of business cards in my desk drawer, and the digital copy on my Mac is rarely up to date. But when I do bother to update it, I want to do that operation only once. I want to be able to make updates in different contexts; it really shouldn’t matter.
So why is syncing so hard? Part of the problem is that most software doesn’t remember my actions, it only stores the data I acted upon. So later, when I sync, the computer tries to compare one address book copy with another, but it often can’t decide how to merge the two. I have to explain my intentions again: I want this copy, I don’t want that copy, because this is the copy I changed most recently. Were a dated change log in place on both ends, fine-grained version control, the computer would already know what I intended in the first place. But developers have historically faced a lot of space limitations when programming, as computer memory and hard drive space were once a huge premium. So metadata still seems luxurious to some. Or it seems unrelated to the problem at hand; an afterthought. But notice that developer tools have long been able to sync: multi-user version control systems for code have been around forever.
I think the real trouble is that syncing is dangerous for software companies. Some see syncing as a potential recurring revenue stream, so they see little incentive in opening things up. Apple will let me sync—if I sign up for their .Mac service. Cell phone companies offer a centralized over-the-air backup service for my address book…so smooth syncing would eat into their subscriber base. I recently heard of a phone company that’s been able to monetize the sync operation itself: $2.99 a shot, for me to move the data a couple feet between phone and computer.
Syncing would also make it easier for me to switch to the competition. Companies would much rather hold my data hostage with artificial barriers like proprietary data formats and closed APIs. I’m part of probably 15 social networks right now, and all of them sovereign states who pretend the others don’t exist. Apple has been so successful not because they play well with others, but because they’re creating and selling all of the devices you’ll ever want to sync between. It’s magical to see all of these devices talking to each other so smoothly, isn’t it? Yet there never was a technical limitation to it!
It makes Apple a lot of money, but it’s not an open solution and they can’t possibly sustain it for a long time. Every company goes through cycles (see Sony), so we can never rely on one to come through for us. So what can we do to bring the Apple magic into the larger space of web apps, cell phones, and MP3 players?
Free software will help us; the political incentives are different there. Reverse-engineering will help crack the data monopolies, as well. This information wants to be free, and I believe the network will eventually destroy any false barriers. There are free phone projects in the works, and we’ve already seen open source iPod firmware replacements. The world is entirely hackable; so now we need to create more open standards for syncing all of this structure data, and start getting these free software projects talking to each other. No company would dare to do this, so it could be the next huge leap in the free software movement.

Comments
Aug 28 02007 11.29a
random8r #
Ummm… Apple *have* opened up sync services…
Aug 28 02007 1.21p
RS #
If this is not synching, can you say something about real synching would be different from this behavior in your view?
Aug 28 02007 1.22p
RS #
… about “how” real synching would be different, that is.
Aug 28 02007 2.07p
Carl #
Sure. I think there are a few differences:
The biggest one is that syncing, in my view, should happen without any action on my part. I set my phone down next to my computer and they sync in the background. Most possible conflicts can be handled if the phone and computer had fine-grained detail about when I edited which fields in an entry. So if I change someone’s phone number on my phone at t=1, and someone’s address on my Mac at t=2, and I change their phone number again on some other device at t=3, the systems should know how to deal with that, with no effort on my part. This is what computers are for, isn’t it? It’s not even a hard problem, per se, but it does require more cooperation between these systems than vCards will allow, and that’s the hard part.
Second, my contacts need to stay separate somehow. Highrise’s benefit seems to come from letting a group of people manage shared contacts and interactions. If I upload some vCards, and then you upload some vCards, and then I export, do I get both of our vCards, or only the ones I’ve added? (I haven’t used Highrise since it first came out.. maybe my model is wrong)
And third, imports need to merge. If I update one of my contacts on Mac OS X and then import it into Highrise, if Highrise’s version always wins, that’s not a merge. (again, maybe this isn’t the case anymore?)
I hope this is helpful.