Monday, September 3, 2007

First synchronization with SE w800i

Just minutes ago I performed the first real world synchronization using my SyncML server. It was performed with my Sony Ericsson w800i as client and it involved a slow sync of the built in notes database. Seven items where sent from my phone in the 12kB (4 messages/4 packages) large session.

Sony Ericsson w800i supports SyncML 1.1 and uses WBXML 1.2 to encode the messages. The messages I received did not use the strtbl feature (except for the FPI), but instead encoded strings inline. The actual data items were encoded as opaque strings.

Saturday, August 11, 2007

1.0

My code now supports SyncML 1.0 as well.

Cool.

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.

Tuesday, June 26, 2007

Offline online services

I've recently started to use two services that's both online and offline;

* Remember The Milk and
* Google Reader.

Remember The Milk is a kind of online notebook. You basically keep tasks, like any other todo list. Sounds very dull and low-tech, but imagine this in a very slick web 2.0 costume. The features included are just what you would want without any bloat at all. It has some good services around the site (f. ex. low-graphic mobile version and a rich API). I'm keeping a task list for my SoC project on that site.

But it also sports the sweetest thing: Google Gears integration, which of course is a killer app for everyone with sparse time-to-time internet access. Think plane, train or car travels. It allows you to download the whole site with one click, then disconnect any internet access and keep using the site as you were when you were connected! Any changes you made offline will be uploaded to the site when you go online again.

When I heard about Google Reader, I thought "why would you want an online news reader -- isn't the point of news readers to be offline and local so you don't have to load a page aross the big sea every time you find something interesting you might wanna read?" Coming from liferea, running a friggin browser just to watch if some feeds changed just felt like a major waste.

Now I get the point. Reader also uses Gears (in fact it was the first app to ever go live with Gears.) and now has all the strengths of an online application (being available from everywhere) and offline application (being available from everywhere, for real.)

Please come to me, Future, so I can use GMail offline too.

Thursday, June 21, 2007

The book

It's about time I write something about the book Google sent us.

The book is Producing Open Source Software by Karl Fogel. But, it's a little special -- Karl signed each and every one of the over 900 books Google sent out. Spectacular effort. Thank you Karl and Google.

Google has picked the perfect gift as the book is perfectly on topic. Even though the book is targeted at open source development, I think it can be a good read for anyone who's thinking of participating in any kind of distributed development, as it focuses much on communication and collaboration.

And of course, the whole book is published under a Creative Commons licese, so it's downloadable, redistributable and modifiable.

Monday, May 21, 2007

FSF copyright assignment contract

My Free Software Foundation copyright assignment contract arrived on friday. It's a contract that every contributer to GNU projects have to agree and sign. By signing it, you agree to give up the copyright of all contributed code to FSF. In return FSF will grant me back to use the code (basically) however I want.

The reason for this is good: if any legal problems around my contribution comes up (ie. GPL violation or similar) FSF will have the power to respond and enforce the license. This would have been much harder (impossible?) if they didn't own the full copyright of the code.


The letter also contained some GNU and Free Software Foundation stickers. Now I just have to find some good spots to put them... I'm thinking of sticking one to my door and one somewhere in our kitchen :-)

Saturday, May 19, 2007

The surprise gift

A couple of days ago, Leslie Hawthorn (program manager, summer of code something), announced that Google is going to send out a gift to every SoC student as a start of coding surprise. Interesting! However, it appears she spoiled parts of the surprise in the announcement. It's most likely to be a book of some kind. But you never know as Leslie dropped this in students mailing list:
"there's a twist to this surprise. ;)"
Hmmm... :-)

You can count on a blog post about it the minute it arrives!

Tuesday, May 1, 2007

Running SCTS in Wine

Yesterday I did some research on how to get SyncML Conformance Test Suite running in a Linux environment (i.e. my computer running Ubuntu 7.04.) This test suite can come handly when working on my Summer of Code project which involves implementing a SyncML server.

To my help, I have Wine. I grabbed the installer from their SF page and ran it with msiexec, Wine's Windows Installer engine:

$ wine msiexec /i SCTS_DS_1.1.2.msi

Installation went without problems. It installed its files in "~/.wine/drive_c/Program Files/SyncML/SCTS Data Synchronization 1.1.2" without asking. The executable, SCTS3.exe, was put in the same directory.

When I tried to fire up the program ($ wine SCTS3.exe), wine complained about a missing file called MSVCIRT.DLL. In wine's system directory I found a file with similar name (MSCVRT.DLL) so hmm... let's try symlinking them.

cd ~/.wine/drive_c/windows/system
ln -s MSVCRT.DLL MSVCIRT.DLL

Score! I have no idea what the difference is between MSVCRT and MSVCIRT but OMA-SCTS is up and running and I'm happy with that. Wine rules.

Friday, April 13, 2007

Summer of Code 2007

I'm participating in Google Summer of Code 2007!

A couple of days ago, I received the good news from Google that my proposal for a SyncML interface for phpGroupWare was accepted. So, during the summer I'm going to write open source code for the phpGroupWare project.

Later I found out that my path to acceptance was rather bumpy. My participation look very unsure until just one day before Google's final decision. They luckily assigned one more spot, the 9th, for GNU, which my application grabbed. I'd like to pass some credit to my project mentor Dave Hall (skwashd) for fighting for my application behind the scenes. Thanks :-)

I'm going to post stuff about my project in this blog, so if you're interested, look out for posts tagged with summer of code.