SyncML is an XML based standard for data synchronization. For example its supported on a lot of mobile phones and would allow OGo to sync calendering and contact information with the PIM software of your phone or handheld.
OrganizerMax Berger works on a SyncML product for ZideStore. He likes all the help he can get :)
People currently involved:
These are the planned steps to get a complete SyncML support into OGo:
As this is a free time project, there is no telling how and when things will work the way they should or when things are completed. If you would like to help out, please contact Max. (see above)
Requirements elicitationThe SyncML vCardReceiver is finished! It can receive the OGo Contacts database, and uses fully SyncML compliant messages.
The AddressBookSync Application for OS X now works! It is able to receive the OGo Contact database and overwrites the local Address Book. It can also do a slow sync.
Warning: Although the vCardReceiver is fully implemented and uses fully SyncML compliant messages, there is still a lot of code missing. Therefore it will probably not work with any other SyncML products, produce strange results, or might even crash.
Howto get/build/install it?
If you like to see whats going on try this:
Defaults write NSGlobalDomain OGoDebugSyncMLConnectionLogStream 1 (or 0 to turn it off again)
The basic architecture of the library is working with callbacks, providing a framework for synchronization
Questions asked by Helge and answered by Max ;-)
Q: Is a SyncML transaction bound to a single URL? (eg all requests on /SyncML like in XML-RPC where all requests go to /RPC2)
A: Yes.
Q: Is a SyncML transaction bound to a single "data store", like a calendar or an addressbook, or does a single SyncML transaction involve all "folders" at the same time?
A: Could involve all data stores.
Q: Do you need a session / is SyncML stateful?
A: Yes. And even worse: I need data stored between Sessions.
Q: Can it use HTTP basic-authentication for authentication?
A: Yes - but It should not. It includes its own authentication.
Q: If you need a session, how is the SID transferred, can we change the URL? Or do we use a Cookie?
A: Its inside the SyncML message.
Q: can you summarize the kinds of actions a client may trigger?
A: delete (soft delete or hard delete), add, copy, replace, search
Q: In what kind of format is the data (eg a contact) transferred - does it really use XML for everything or is the XML just for the SyncML envelope - if so, how do you transfer contacts, using vCard?
A: Yes. The SyncML is a container which includes other formats, such
as vCard. If an Application supports syncing:
Contacts: It must be able to produce vCard 2.1 and optionaly
vCard 3.0 data.
Calendar: It must be able to produce vCalendar 1.0 and optionally
iCalendar 2.0.
Memos: It must support text/plain.
Tasks: It must support vTodo 1.0.
Email: It must support message/rfc822,
message/rfc2822 and message/rfc2045.
Q: Could you please give an example of a very simple and basic SyncML HTTP transaction (HTTP methods, headers, body)?
A: A SyncML Transaction, tunneled via HTTP always uses a POST to the
same URL: ...
Look at the complete example.