I wonder what are the difference between SyncML and CalDAV in terms of features, pros, and cons.
I'm trying to determine which technology to use in order to synchronize events/calendars between a web app and mobile devices. I need to handle conflicts and bi directional synchronization.
At first glance, CalDAV seems to be the most suitable for my needs but I'm not sure to know possibility drawbacks. SyncML is a standard but I read some posts on Oracle's blog which said CalDAV is better...
I know Google supports both but also provides ActiveSync (Exchange) which is a Microsoft technology as their main solution. I'm not interested in this way.
Cheers, William
SyncML is a protocol for synchronization of data collections between two devices - a SyncML Client and SyncML Server using an XML data representation. The client is typically some mobile device or mobile PC. The Virtuoso server implements the SyncML server protocol over HTTP.
SyncML is a standard for personal organizer data synchronization between different devices. This can cover any type of personal organizer data, such as contacts, to-do lists, notes etc. The devices synchronized can be mobile devices (phones, PDAs) as well as stationary ones (PCs).
SyncML works by exchanging commands, which can be requests and responses. As an example: the mobile sends an Alert command for signaling the wish to begin a refresh-only synchronization. the computer responds with a Status command for accepting the request.
CalDAV synchronizes calendar data across different devices and is available through your Hover email account. It utilizes Apple's iCalendar format and is compatible with Android, Gmail, Mac OS X, iOS 5+, and Thunderbird. All functionality, such as editing and RSVP, are available.
Well, I can answer myself.
CalDAV is a protocol on top of WebDAV which is an extension of the HTTP protocol. CalDAV is described in RFC 4791. It uses iCalendar as data format. There are a lot of implementations.
About conflicts CalDAV uses the 409 Conflicts
status code (HTTP 1.1). The client has to deal with this error code, as far as I know, iCal (the Mac client) just reverts local changes.
Then, it's quite easy to define rules in the server to know what to do if there are conflicts, if you cannot solve one of them, then we just need to send a 409
status code.
As a standard, CalDAV is dedicated to manage calendar data, and there are a lot of clients.
Unfortunately, Android doesn't provide any native solution to use this protocol, actually it doesn't provide anything else than Exchange ActiveSync (used by Google). But there are tons of CalDAV clients on the Android Market.
iOS has a native support of CalDAV.
Synchronization Mrkup Language is a platform-independent synchronization language to manage data, created by major companies like Nokia, IBM, … It's an open standard. It uses HTTP as transport and XML to describe information. There a various server implementations, Funambol is a well-know for instance.
SyncML describes seven synchronizations:
SyncML handles conflits on the server with a set of predefined rules like Updates mades on the Client always win
, Updates mades on the Client always win
, …
SyncML is dedicated to synchronize data but neither iOS nor Android support it. Nokia or Samsung smartphones seem to support this protocol, as well as Windows Phone 6.
Microsoft Exchange ActiveSync is the best choice to support almost all smartphones, and heavy clients too. But, it's not an open standard, and it's commercial, and I didn't describe it for these reasons, just remember it.
About mobile Operating Systems:
In France, iOS represents 60% of the mobile market, and Android has 30%.
The best solution (at least for me), is to start by implementing a CalDAV server with a set of custom rules to handle conflicts, and then to implement a SyncML server to cover the rest of the market.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With