Monday, July 30, 2007

Full compliance!

Yeah! The features I was talking about the last posts are now done! After two months of coding I proudly present: my SyncML server implementation in PHP. Currently it support only version 1.1, but I intend to make it support 1.0 too. After all, the differences between 1.0 and 1.1 aren't that big.

So, there's three weeks left of Summer of Code 07 and here's how going to spend them:

* Make it sync with Addressbook and Todo too.
* Make it handle WBXML (hopefully without need of third party extensions.)

Thursday, July 26, 2007

Multiple messages

Today/tonight I've had great success with testing and debugging the Multiple Messages (or package chunking) support I wrote about a few days ago. My SyncML server now handles incoming chunked packages perfectly. I have prepared support for outgoing chunking too, but it's not yet activated.

After a very productive today I am now passing 28 of the test suite's 35 tests when using SyncML 1.1 and XML settings. Only feature left now is Large Object which is much alike package chunking, but with data items instead.

My mentor Dave tells me I should add more synchronization sources (there's only one currently), but I think it looks more fun to implement a WBXML writer/reader. We'll see about that.

Wednesday, July 25, 2007

Syncronization Interface 0.1

Mid-term is passed and my first release of the synchronization interface is near.

The code is probably not very usable as it lacks many good features.

* No WBXML (binary XML) support. Used by lots of devices with narrow bandwidth.
* No GUI. It means you have to add your databases and sources using direct access to you database.
* Only one source for now -- the notes application. More advanced stuff (todo and contacts) is coming up.

The good news is that the code looks good and many new features shouldn't be far away.

Tuesday, July 24, 2007

Package chunking

Right now, I'm working on the code that implements the Multiple Messages in Package functionality. It's basically there because the clients with small amounts of memory may want to slice up a SyncML package into several messages, or HTTP requests in this case, and process them separately.

SyncML clients often tell the server that it can't handle messages larger than x kB. Servers have to accept that and keep count of the output length and be ready to continue with what it was doing after the break. And since it's XML (and later, hopefully also WBXML), the data stream can't just be cut off -- it has to end gracefully.