Monthly Archives: January 2012

SyncML Status 18.1.

I’m making some progress with the SyncML client.

Todos:

  • add try/catch to all callbacks to receive notions of errors that happen. Especially look at iCal, eventCallbacks and SyncML. Maybe als SyncMLMessage.
  • write to O3SIS and ask if they have an idea why their server (used by O2) does not accept my device information.
  • work on js service implementation
  • implement message retry mechanism, sometimes I only receive an empty response… 🙁
  • test on funambol server and on http://www.o-sync.com
  • supply the  type of iCal to iCal.js, i.e. if it’s 1.0 = x-vcalendar or 2.0 = vcalendar. Do what you can for x-vcalendar conversion (not so easy).
  • save global event id in externalId

Issues to look at:

  • O2 server does not accept allDay events from the device (thought I had fixed that)
  • look in “quoted_printable_decode/encode” to try to solve umlaut issues and similar
  • does the webos calendar without patches allow to choose the colour of an calendar?
  • eGroupware did send me duplicates of allDay events during a slow sync. Those were not duplicated on the server which means either I did not send them (or what I send was faulty) or…? Look into that. Maybe this was because of the ongoing timezone issue?
  • see if funambol needs sync to “configuration” datastore for credentials checking or if my empty SyncMLMessage is sufficient… Example for funambol configuration sync:
    <Alert><CmdID>1</CmdID><Data>200</Data><Item><Target><LocURI>configuration</LocURI></Target><Source><LocURI>config</LocURI></Source><Meta><Anchor xmlns=”syncml:metinf”><Next>1268079974281</Next></Anchor></Meta></Item></Alert>
    URL: https://core.forge.funambol.org/ds/viewMessage.do?dsForumId=405&dsMessageId=94713

Thoughts about contact sync:
Contacts Service has readVCard => can I call that?

Maybe need to write vCard parser myself. Does not seem more complicated than iCal parser. Some ressources:
http://en.wikipedia.org/wiki/VCard#Properties
https://tools.ietf.org/html/rfc6350
maybe also:
https://tools.ietf.org/html/rfc4770
or extensions mentioned in wikipedia.

This is also interesting: frameworks/contacts/…/vCard/vCard.js
Has importer, here I can set importToAccountId to my accountId and let it do all the work. There also is a importToContactSetId. Maybe that is useful to implement categories? Keep in mind for later… 😉
Let it return an array of contacts to the app, so I can do the add’s myself and supply the local ids to the server mapping. Also this seems necessary for updates instead of adds.

Interesting also: VCardImporter => processOneContact creates hashes to check for duplicates. Maybe that is a good thing to have in case something goes wrong?

Look what is the same for contacts and events and move that into common js files to make the single files smaller. It’s getting quite messy already. 🙁

SyncML as Synergy Connector

Since a long time now I am using an eGroupware Server at home as my personal cloud. I tried some hacks to use it with webos, but none really worked out as I liked it. Most lead to data corruption and I always was required to leave my valuable data (what I’m doing everyday!!!) on big company servers like google.

SyncML on webOs 1.4.5

So I started a project to implement a SyncML Client for webOs, because SyncML worked good for me with Windows Mobile 5-6.5. I first tried to implement something based on some SyncML libraries. I managed to combile funambol for webOs and build a client app around that. It worked good for calendar syncs. But it never made me really happy. You need to manually fire up the app and start a sync and the sync is quite slow. There are some issues that reside deep inside the funambol library and in the iCal parsing I needed to do. Then this all was for webOs 1.4.5, which mostly was not  usable for webOs 2.x anymore that my new phones are all using (only my old Pixi Plus is on 1.4.5, still and comes with me as second phone just for calendar syncs since some time now). I won’t work on SyncML for webOs 1.4.5 anymore, but you can get the code and an ipkg here.

SyncML on webOs 2.x

As I said, my 1.4.5 version won’t work on webOs 2.x. I fixed it to basically run on 2.x (you can view that here) but never managed to fix the issues I had. There were bad conversion issues from iCal to the new calendar event structure in webOs 2.x.
But the worst issue with that approach was, that it would never be able to work as new and cute synergy connector. So I restarted from scratch and implemented SyncML and a new iCal parser in pure JavaScript (which made the libraries much more flexible and smaller and I understand them and can fix issues. :)). I (ab)used the last holydays to finish  those libraries and today debugged my fingers off, but now I am happy to announce that I managed to get something that syncs with my eGroupware Server via SyncML. There are still some missunderstandings between the two which my iCal Parser tries to circumvent. But it works.
It’s far from finished and still has the old app interface, but it is on a good way forward. You can have a look at it here.

My list of Todo’s

  • Build synergy integration
  • Build service for that
  • Rebuild App to use the service (for easier debugging)
  • Test the service
  • Modify account management  and sync management for better integration of calendar and contacts to add more datastores
  • Implement contacts sync (will require new or extended parser)
  • Modify app to view service logs and allow to send them per E-Mail
  • Optimize old eventCallback structure to be more database optimized and collect all adds, updates and deletes to do them in one batch.
  • Try to respect server max msg size by only adding like 10 objects to a message (currently sends all in one message and has reached like 20kb which is way over the server advertised limit of 10kb. Luckily that does not matter much to the server, as it seems).