Improving ICQ

Ivan Komarov ivan.komarov at
Sun Jun 6 19:30:22 EDT 2010


I'm a GSoC student this year, working on improving ICQ prpl
( Mark, who is my
mentor, thought it would be a good idea to introduce myself to the
devel mailing list and to mention what I've been working on. My branch
is browseable via

First of all, I've created a tiny patch to properly support
HTML-encoded messages in ICQ (#11836). With this patch applied, Pidgin
behaves just like the official client. Unfortunately, #12044 suggests
that this is not enough: we have to somehow detect that incoming
messages from QIP (and Miranda, for that matter) are in fact not HTML
but plaintext. I think I found a way to do that, but as it is kind of
complicated, I decided to postpone it for when I'm finished with other

Then, I've made some improvements to the "Authorize buddy?" dialog
(#3207, #5038). These changes actually apply not only to ICQ, but to
all prpls that support authorization request.

Finally, I've refactored some of the code in liboscar while adding an
error handler for FAMILY_ICQ packets (which include buddy alias
requests and buddy info requests). Right now, the main liboscar file,
oscar.c, comprises dozens of functions piled together. This is mostly
because libfaim used to be a separate library and oscar.c contained
all the callbacks that were passed to libfaim. Now that libfaim is
merged into liboscar, this is no longer necessary, and some of the
functions can be safely moved to individual files where they belong.

Right now, I'm figuring out how to make the ICQ privacy system fit
into Pidgin. The problem is that the packets that in AIM would modify
Permit/Deny lists, modify Visible/Invisible lists in ICQ instead (ICQ
does have a Block list, but different packets are used to modify it).
Hence, the users who are used to the privacy system used in ICQ are
confused (see #10967, #10916).

I think that the privacy dialog for ICQ should modify the block list,
not the invisible/visible lists. For those, I suggest we have a custom
dialog (Accounts -> My ICQ Account -> Visibility) similar to what the
official ICQ client has ( I really like
how it is designed.

I briefly contemplated doing it the right way (merging the
privacy_rewrite branch into my branch and going from there), but it
seems like the privacy_rewrite branch does not even build yet and its
author is busy this summer.

Ivan Komarov

More information about the Devel mailing list