My Google Summer of Code summary

Google Summer of Code is over, so there is a need for a little summary. Pidgin was accepted with four projects, three of them (this one too) succeeded. Gadu-Gadu related project changed a bit since it was accepted, but I’m still satisfied with progress done – you can judge it for yourself by reading this post. Some promised features weren’t completed yet, mainly because of need to make changes in libgadu. They will be done, but it must take time: discussion, libgadu implementation, libgadu release, updating libgadu in Pidgin, Pidgin protocol plugin implementation and finally pidgin release.

This project wasn’t only stripped down. There were improvements, which were not planned, but they came up to be really useful to bring better experience for Gadu-Gadu users. This is the point, where we got perks from 3.0.0 break – I was allowed to change anything I liked to in libpurple API. This is also a point, where other protocols gets benefits. Continue reading

GSoC finish: more features, more code refactoring

Yesterday, we had firm pencils down date. That means, this is the last set of updates within this year’s GSoC. But not the last one for Gadu-Gadu prpl – I will continue my work in the meantime, to make Pidgin up-to-date with current GG service features.

The biggest feature done this week was browsing and editing public directory with GG10.5 protocol. Unfortunately, just like some other features, there is no possibility to use current, GG11 protocol, because this service requires IMToken value (not accessible in current libgadu) to authenticate. Continue reading

Libpurple API changes for better Gadu-Gadu support

Libpurple is a library with a very stable API. That’s convenient for users, because most of old plugins works with new versions of Pidgin, but it’s also restrictive. That means, Pidgin cannot evolve as much as other messengers to support well new protocol features.. Fortunately, there is Pidgin/Libpurple 3.0.0 coming, so we may change what we want here.

Indeed, recently I was working on libpurple API in areas, where Gadu-Gadu had too little air. For example, I have implemented validation of usernames: GG service uses only numerical identifiers, while Pidgin allowed to type in anything. Now, dialogs like buddy adding or account setup won’t accept invalid GG numbers. Continue reading

New file transfer protocol analyzed

I have successfully managed to reverse-engineer a new file transfer protocol for GG11. Good news is, that I implemented my own client, able to send a file. Bad news is, that it requires a token, which is send by Gadu-Gadu service after successfully logging in using GG11 protocol.

That means, Pidgin (and other clients, like Kadu) will be able to support new file transfer method just after introducing GG11 protocol support for libgadu. On the other hand, old file transfer protocol implementation for Pidgin have questionable value, because original Gadu-Gadu client seems to be in middle of dropping support for it. Continue reading

New feature: contact list synchronization

Recently, I’ve been working on a new feature: contact list synchronization (#9463). Gadu-Gadu service introduced support for it while ago. It works similarly as for xmpp protocol. Changes were extensive, so it may not work perfectly yet, but I’ve done my best to do it well. Although, if someone wants to help with testing (Linux machines only at this moment), don’t bother to ask me for sources. Or – even better – check out them directly from repository. However, I may not be able to access Internet in following week, so the second option would be better. Continue reading

Images support and account management improvements

This time I have mostly been doing code refactoring, resulting in bugfixes and following improvements.

After 3.x.x API changes, receiving of inline images was broken, it’s fixed now. There is one more issue related with new API: sent inline images are not displayed in conversation window, but it’s not Gadu-Gadu protocol plugin issue.

New feature related to inline images was introduced: notification about delivery status of sent pictures. Continue reading

New Gadu-Gadu protocol revealed

New DNS resolver for libgadu is already done. This effects in stability (especially, under Windows: #6263) and some code cleanup (win32 related code is no longer needed).

Also, now our libgadu fork have just one-lineĀ difference against upstream (#343). At least, it will be one line after upgrading to 1.12.0, because now we have some patches plucked from upstream trunk. Continue reading

New GSoC project: Gadu-Gadu protocol plugin for Pidgin – improvements

After a gap year, Pidgin applied for Google Summer of Code. One of accepted proposals is set of improvements for Gadu-Gadu protocol plugin – that’s my task. I will post here some news about progress on that. Also, if there would be anyone interested, I will publish nightly builds for testing purposes.

Most important improvements to do:

  • file transfer;
  • contact list synchronization – something like xmpp/jabber does;
  • Windows SSL support – now, encryption is available just for Linux with GnuTLS;
  • code refactoring (it’s unnoticeable for end-user);
  • voice chat support – I will try to do this, but I don’t promise anything else.

Continue reading