Many people ask us why Apple iSync support is not available for a particular phone. We’re going to outline what it takes to be supported, and that should help to explain why your phone in particular cannot work with iSync. Also, you’ll learn about why iSync does what it does, and understand how it is thinking as it handles the people, places, and things that sync your life together.
Apple iSync is a very open program. At its core is a simple data handler, it moves data from one area to another, processes and remembers what was deleted, changed, moved, and updated, where it happened, when it happened, and how that affected other sources of info. The delusions of grander of iSync being a sync app that does everything is an oversight; most of what iSync does depends on other system-level functions in Mac OS X.
iSync uses four main categories to process information; Clients, Truth, Conflict, and History. Clients are pretty simple, they are the devices or sources where information is gained from. Truth is a bit more complex, essentially, it is a record of all agreed-upon entries that are parsed and then given iCal identifications which are used in the process of keeping track. iCal is actually keeping track of calendar data, as is Address Book keeping track of contact data. All iSync is doing is keeping a second database of how events and contacts got into those databases, and what is the latest the computer is aware of them. In a sync, Truth is tapped and compared to the changes. This forms the Conflict, where the Truth does not match what the events in the Clients are saying. Conflict management is what iSync does, it figures out what has been changed, and how to best handle it. When it isn’t sure, it will present conflicts to the user to decide. Once conflicts are resolved, this history of each event grows and is re-constituted in the Truth for a particular event. Simple? Good.
Now, you probably ask, what does that have to do with getting a device to support iSync? Actually, it’s everything. A device needs to be able to keep a record of events, it needs to be able to quickly communicate changes in a standard iSync is prepared to talk to. That standard happens to be SyncML. Like its name sounds, SyncML is an XML-based system targeting sync data. OBEX (the ability to sync) is not enough, people need to get that very clear before asking further why iSync does not support a particular device.
Unfortunately, not all SyncML was created equal. Motorola, Nokia, and Sony Ericsson each have different interpretations of SyncML. iSync needs to be adapted to expect SyncML in the format it is being produced from the device, as well as device auto-negotiations for synchronization, as not all devices spit out SyncML in the same manner. However, once a manufacturer established Sync/SyncML protocol, it rarely changes. This is why you see hacks to add all kinds of phones to iSync that Apple does not yet support. Chances are, the “hacked” phone has the same core OS as a supported phone, and adding support is as simple as editing a preference file. We’ve even put up one for the rare-but-powerful Motorola A845 (it’s in the Cingular forum).
So, let’s say Samsung tomorrow released a phone that had OBEX and SyncML (there aren’t any Samsung phones that do this currently). Since it is the first phone from Samsung to support this, Apple would have to make a new client driver/handler to accept the SyncML and Sync protocols from the phone. This could then be adapted with greater ease for future Samsung phones. Getting manufacturers to adopt Bluetooth, then OBEX, and finally SyncML takes time, and it will continue to take time for late bloomers outside of the GSM world to adopt all of these necessary technologies.