Blog d’un « connard amer »™

lundi 8 juin 2009 à 00:15:24

GSoC & me #1

It's been two weeks since I started the GSoC on Gajim. I chose to start with the roster versionning so I read the XEP-0237 the first week.

By and large, it's clear. I just regret that some points are not enough clear. By example when the server is sending us an iq without a query, it means that it will send us roster pushs to prevent us the changes between the version we have and the server one. But this iq doesn't let us to know if we have the last version and if we will receive roster pushs.

Another problem: when we must receive roster pushs, we have no idea on when excactly we received the last one. So we can't wait until we get the last to continue the connection procedure... For now I made the choice to consider the response iq (with or without query) at the roster request as enough to continue the connection procedure. The XEP says : ‘This specification is specifically designed to allow for a wide range of implementation choices’. So we have no other choice than to decide ourselves when some points are not covered.

Thanks to Matthew Wild and his jabber server written in Lua, called Prosody, I did some tests immediately in the Gajim XML console. I had a better understanding of the XEP after that.

With my mentor Asterix, we decided on a first draft about the way of storing the roster in the client side. Thats how I take one's first steps with sqlite and the Gajim configuration system (I knew that only with the Advanced Configuration Editor (ACE for friends)).

It's not inevitably permanent but that's how i do for now. I am storing the roster version key of each account in the Gajim configuration file (~/.gajim/config). Then i have a table which will store the different rosters inputs (the account jid key, the contact jid key, the name we gave to him, the subscription to the presence and the primary key on the first two fields) and the belonging to the group of each contact (the account jid key, the contact jid key, the group name and a primay key on those 3 fields).

For now the management of the version number is working wonderfully (it is sending well and updating it when there is some changes). I manage roster pushs too (as well at the table level that contains the roster inputs than for the groups).

The next big thing to do will be the management of the response iq when the roster is asking for it. I already found the place I will deal with and I have an idea on how to do it. Now I only have to do it (but it will have to wait until my exam week is finished (and it's starting today)).

Commentaire(s)

  • Par Merwok
    (vendredi 12 juin 2009 à 15:31:22)

    Thanks for the news. In addition to the progress you make on the technical front, it would be nice to know how you deal with the social aspect of being part of a free software project (how you get information, how you work with the rest of the team, how you feel, etc.).

    Could you add a paragraph describing what is roster versioning, or at least a link to the XEP?

  • (samedi 11 juillet 2009 à 12:29:23)

    For the social aspect, I will write a post about it in a few days. For roster versioning, I already explained a little what it is in the post “Google Summer of Code 2009” (from March), and I also gave the link to the XEP. In the post “GSoC & me #2” (from this month), I give more precision.

Ajouter un commentaire


Je leur diffuse la bonne parole :

This blog and all its content is under the GNU GPLv3.

Running Djlog 0.42.