Life in a shell

bash$ tiagosh

GSoC final report

GSoC is about to end. The good news is that I was able to finish my project, and the bad news is that I would like to have more time to implement more features than I proposed.
All the patches are committed to kopete svn (and libmsn) and trunk (crazy) users can already test them.

As I did not have time to blog (aka ‘I’m lazy to do so’), I am going to report all the status at once in only one post.

Ink support:
The goal was to add a small box where the user could draw something. The ink support will only be compiled if you have libgif. Some people cannot receive inks because they are using old MSN protocols, so the ink button will only be shown if the user is able to receive it correctly.


Voice Clips Support:
It was added to kopete a new action, so it is possible to play and save received and sent voice clips directly from the chat window.



Proxy Support:
The account properties window received new entries, and now it is possible to use a HTTP or a Socks5 proxy.


Emoticons Support:
Three new options were added to better control the emoticons behavior.
1 – Do not send custom emoticons to other contacts.
2 – Do not show custom emoticons from other contacts.
3 – Block emoticons from a certain contact. (this one is in the last screenshot)
Contact List Improvements:

It is now possible to see contacts that deleted us from their lists. A red ‘x’ will be shown on the contact status icon.
Another improvement is that it is possible to refresh the avatar from any contact manually.

deleted usermenu

So that’s it. I would like to thank Google for the opportunity and specially my mentor Gustavo Boiko, who helped me a lot on my project. It was really amazing to be part of this program and I hope that my work can be useful to others.



August 19, 2009 Posted by | gsoc, kopete, libmsn, Uncategorized | 11 Comments

Paint it Black

Hi all,

It has been long time I do not write anything here, so it is a good time for an update.

The news:
well, this year I got accepted to Google Summer of Code and last week I started working on my proposal.
The first feature I suggested is the support to send Ink Draws, and I’m working on it right now.
Just for the record I’m posting here the first screenshot of what I have done so far.

Now the bad news:
MSN supports two kinds of image formats: Gif and Isf (Ink Serialized format, from Microsoft).
My first idea was to store the draw to a QImage (from qt4) and then save it to gif, but unfortunately there is no gif writing support in Qt. The Isf format is now open, and there is a library made by the aMSN people to manage the Isf images, but unfortunately third party clients still does not support Isf.
People from kopete-devel@ ML said that it is ok to link kopete to an external library (like giflib) to manage that, but the right approach was suggested by my mentor, that is to write a QImageIO plugin to deal with this gif stuff.

At the moment I’m busy fixing other bugs and adding some more stuff to the Ink plugin (pen color and size), but as soon as possible I will evaluate what is the best approach (giflib, QImageIO plugin, other? suggestions are welcome) considering my programming skills.

For now I’m using a dirty trick: I save the image in PNG and then.. well.. QProcess::exec(“convert old.png new.gif”);, but do not worry, I will not keep that in the code 🙂

May 19, 2009 Posted by | gsoc, kopete, libmsn | 4 Comments

one step ahead

Just for the record:

SVN commit 884493 by mattr:

Enable the new WLM plugin for Kopete.

This new plugin replaces the MSN plugin and requires an external library
called libmsn which can be gotten from
We're working towards a 0.4 release of that library but until then, please
download the beta versions.

The new WLM plugin provides support for the MSNP15 protocol version and in
general lays the groundwork for a better MSN plugin.

Thanks go to Tiago Salem Herrmann, Gustavo Boiko, and Roman Jarosz for doing
all the heavy lifting.


November 20, 2008 Posted by | gsoc, kopete, libmsn | 24 Comments

May the source be with you

Some months ago I tried to join GSoC (Google Summer of Code), but
unfortunately I was not accepted. Even this way I decided to keep working
on the project that I submitted as my proposal.
About two weeks ago I was notified that Google was going to send me
a swag because I completed my project even without being accepted.
Today when I got home I was suprised by a package coming from google.

My sincere thanks to google.

“May the source be with you..”

October 18, 2008 Posted by | gsoc, kopete, libmsn | 6 Comments

Kopete and libmsn – 2


It’s been a long time I don’t write here, so it is time to update the wlm plugin and libmsn status.
Too much work has been done in wlm and libmsn since the last post. Boiko helped me on porting wlm plugin to kde4 + qt4 (thanks), The avatar management and identity integration was improved, file transfer works better now, some issues with blocking connection were fixed by changing libmsn layout, and so on.

Two weeks ago I sent the source code and the current status of libmsn and wlm plugin to kopete-devel@ mailing list. Some days after this Urs Wolfer and Olivier Goffart from #kopete channel helped me on getting an account in the kde svn and to upload the source code to kopete’s svn playground.
So the new (temporary, I hope) wlm home is here:


September 14, 2008 Posted by | kopete, libmsn | 12 Comments

Kopete and libmsn

kopete & libmsn

Last weeks I’ve been playing with kopete and libmsn.
I don’t know if it will become part of upstream kopete development,
but at least now I am able to send/receive files and offline messages.
Features up to this moment:

– send/receive regular messages
– send/receive offline messages
– file transfer.
– multi-chat (more than 2 people)
– display pictures transfer
– chat while in invisible mode
– “Listening to” and “Personal Messages” support
– Nudges

kopete TODO list:
– voice clip
– ink support
– improve address book management
– formatted messages (fonts and colors)
– winks (argh, I’m not sure about this one yet)
– custom emoticons (not sure about this one too =)

libmsn TODO list:
– webcam

February 24, 2008 Posted by | kopete, libmsn | 21 Comments



Last months I’ve been working on porting libmsn to MSNP15. Yesterday I decided to talk with Mark Rowe about uploading the code to the mainstream development tree.

He agreed and added me as admin on libmsn project.

For those who want to test some of the library capabilities, there will be msntest command line program after the build.

I’ve been using msntest with my main msn passport (to receive oim’s and to talk when in invisible status) and everything is ok up to this moment. Anyway, more tests are needed.

My changes on libmsn are on sourceforge svn. There will be too much work until the first release, so, patches and discussion about the library layout are welcome.

Thank you all who have offered help on development and have commented on previous posts.

(svn co libmsn)

September 3, 2007 Posted by | libmsn | 8 Comments


First of all, the best cover ever:

No comments. It reminds me Anton Maiden. Don’t you know Anton Maiden? Shame on you.

If you are not a geek, you dont need to continue reading below 🙂

As in AC/DC song: It’s a long way if you wanna… do things in the right way.

libcurl is a great library which provides ways to open and manage sockets and http requests in a simple form. I was using it to help libmsn development, but as I intend to keep libmsn as independent as possible, I’ve decided to use openssl sockets instead of libcurl. The best part is now the code is prepared to handle non-block sockets, even when using ssl connections, which is, in my opinion, a big requirement to not block the whole library (as we can have many sockets alive at a time) when we are requesting something through SOAP, for example.

The code is broken and I’m working to fix it, but I must admit it is a very boring work.

July 28, 2007 Posted by | libmsn | 8 Comments

OIM? Yes!


Sunny Sunday: a good day to develop OIM (Offline Instant Messages) to libmsn.

Yes, now libmsn has full OIM support (receiving, sending and deleting).

I could write here all my feelings about the protocol, SOAP and XML parsing, but I’m trying to avoid this kind of discussion because I can discover very soon that it was really needed to do something I don’t know yet (btw, xml text inside another xml text node?? I think there are too many ways to not need to do that. I hope I’m wrong, really!).

Next step is try to finish Address Book management (add groups, add user, move user to group..). All these operations are made now through SOAP requests (oh my..!!). Wish me luck.

see ya!

July 16, 2007 Posted by | libmsn | 10 Comments

libmsn news


yesterday my friend boiko encouraged me to contact Mark Howe, the original libmsn developer. I told him about the changes I made in libmsn, and I asked him his thoughts about forking libmsn. He told me it’s been 2 years the development is stopped, and if I want to maintain the code and revive the project I’m welcome. So, there is no need to fork libmsn so far.

Now it is time to face the worst part, which is code the library. 🙂

Today I dropped all the qt code I’ve been using to help on xml parsing. Instead of qt I’m using xmlParser, which is a tiny library I found when I was googling xml related subjects.

Probably next week I’ll have some news about the current development status.


July 6, 2007 Posted by | libmsn | 3 Comments