Gaim/Pidgin rants, MSN history

Update: The Ruby version has started and the code looks quite clean: Link
Update: Now ruby-msn looks even more promising: Link
Update: To put some code behind my “server alias” rant I created a for of the msn prpl: Link

I’m surprised by how much time I have spent without a rant in my blog. Well, here goes the first one.

First of all I started to contribute to Gaim about 06.2002 on the MSN prpl (protocol plug-in) which was lacking a lot of features I wanted.

Back at that time Gaim had buddy “aliases” but no concept of “nicks”, I had a lot of trouble explaining that nicks where a good idea, and would not be so difficult to implement. I had to scratch my own itch, so I did the code and it worked pretty well. However, chipx86 (Christian Hammond) did the same and he saw some flaws in my code so his code got upstream. That’s how Gaim’s “server_alias” born. I can’t find the discussion thread anymore, but the I still think “server_alias” is not the same as “nick”; the difference is that your buddy chooses his “nick”, an alias is chosen by yourself, it can be stored locally, or remotely. In fact the latest versions of the MSN protocol include the option to save any kind of data related to a contact, including your prefered alias. So that’s a “server_alias” for me: something _you_ set that get’s stored in the server.

Now and then I tried to bring back the subject, but I don’t know why all my comments regarding how Gaim’s core should communicate with the protocol plug-ins always fell into deaf ears.

After a while chipx started doing what he does best: writing code as an unstopabble machine. So he did the first rewrite of the MSN prpl. He got some of the MSNSLP (display pictures, file transfer), but he got busy and I got excited about it and started first helping, and then changing huge parts of the code. Chipx got busier, so I ended up rewritting most of the code, altough the main idea remained.

It took a lot of time, but I was quite happy with the design, everything just felt right. But by that time development was on-going in a different branch, I was asked to update to the new one. The code was so different that I decided to start again, and make the changes step by step, that took me a long time.

As expected, no one wanted to apply this huge changeset without a proper review. Chipx was always busy, so he asked me to split the code. Again, I had to start over, this time send each step I had to wait for chip’s feedback which was always useful, but took a desperately long while.

So I finally came up with one 7,000 lines patch for 0.78, and a 16,000 lines patch for 0.79, that basically enabled display pictures, custom smileys and file transfers.

The answer from Sean Egan (the official maintainer aka Gaim’s god): good job! Nothing more.

The answer from the community was much more rewarding. And by the way, I want to thank a bunch of people that helped me with the testing:
Christian Hammond, Robert Mibus, Finlay Dobbie, Luke Schierer, Tim Ringenbach, Dimitris Michelinakis, Patrick Armstrong, Chris Buttosai. I think I never thanked them in a public way.

I kept doing what I was already doing, hacking Gaim, fixing bugs for quite a lot of time. After a while I felt I was contributing a lot to Gaim, and my voice still wasn’t being herd, I always was a crazy patch writer (cpw), I never had CVS access, I had to always send patches. After 3 years of contributions, being the only active developer on the MSN prpl with a clear picture of it needs, my opinions where never taken seriously.

I was not happy, but there’s was a lot of people using Gaim for MSN, so that kept me going.

The straw that broke the camel’s back is when Kris Marsh tried to update Gaim to msnp10. He and Richard Laager did a good job with the patch, but there were some issues and I helped with them, just when we thought it was getting ready Stu Tomlinson changed the landscape completely and then Kris Marsh lost interest, and eventually I did too.


The patch was still there, waiting for more feedback, until Google’s 2006 SoC came and Ma Yuan was assigned to work on msnp13 for Gaim. That really made me upset. She was doing a good job, but with something so simple as msnp10 Kris and I got so many issues that it seemed the best way to approach this was step by step.

Of course, Gaim developers did not ask me, nor moogman (Kris), they just took the decission and dropped all our work.

I checked periodically Ma Yuan’s progress in the repository, and she seemed to have been doing a lot of work. It doesn’t surprise me that the code is still not finished, it was a very hard task. I offered her my help, but she never asked me anything back.

In all those years, I have seen people interested in developing for the MSN prpl, but there’s just no Gaim developer interested. Patches gather dust, bug reports just stack. My last patch has seven months without anyone looking at it.

It is a shame that such an important project has so badly organized development. There is a lot of excellent people inside Gaim, but there’s also a lot that slow down development.

I always wonder what is the secret agenda behind the project. To me it seems Sean Egan is the owner of the project, and he takes the final decissions. That wouldn’t be that bad if he was a Linus kind of dictator (good thing), but he is not. I’m not the first one that complains about that, there is still the issue about gaim-vv, which Sean killed single handedly. There was never too much hope of merging it, but there was some, then Sean made pretty obvious where he… er, Gaim standed. It seems there’s hope beyond 2.0, which was supposed to come out many years ago.

In short this is what I think of Gaim:

  • It will _never_ be the most featured client for MSN, and possibly a lot of other protocols
  • Things that are extensible enough that make things easier for the MSN protocol are blasphemy
  • The MSN prpl should implement work arounds for the Gaim’s “sacred” prpl API
  • The main reason the MSN prpl is maintained is to keep quiet #gaim
  • The UI is awesome, but the internal API’s plainly sucks
  • Christian Hammond and Luke Schierer rock

I like much more Telepathy‘s concept.


PS. I never liked the name Gaim

Update: The link to the msnp10 patch was wrong: it’s Link.
, not Link.


10 thoughts on “Gaim/Pidgin rants, MSN history

  1. Sometimes things are not as bright as we wish them to be. Although many people may ignore what you have done for the MSN support on Gaim, the few ones who do know how wonderful your work is šŸ™‚

  2. Hehe, thanks, it’s not that wonderful, but it works… mostly.

    The thing is that Gaim has really bad management. With a little more motivation I would still be fixing bugs, but now I think it’s a waste of time.

    I’ll rather work on pymsn, but I have other priorities right now (my todo list is huge).

  3. I think you’re right about Telepathy… it seems to me to be extremely exciting in terms of its use as an IM framework. I need to start mucking around with these in-development clients and see if I can make any contributions.

  4. Hey! Thanks for the thanks šŸ™‚

    On behalf of everybody who used your and ChipX86’s work on the MSN prpl, *thankyou*.

    I left Gaim dev myself for big reasons – my time was becoming far more constrained (moving to full-time work, starting a family) – and I was also becoming increasingly frustrated with upstream (especially when ChipX86 became less involved and the process started getting harder!)

    These days I too am looking at the Telepathy project – Felipe, I think you should make your Ruby MSN library into a telepathy protocol plugin! If it ends up being better than telepathy-butterfly, then everybody will switch. If not, at least it will encourage code-sharing and competition šŸ™‚

    For those interested in starting with Telepathy, Debian (and I think ubuntu) have gossip-telepathy and the some of the various telepathy protocols available. The python-backed MSN plugin should be fairly easy to develop, especially given you don’t have to continually recompile and re-run the whole app!

    (PS. Hi Felipe! Long time no see šŸ™‚

  5. I personally think it scandalous that the gaim project was taken over and renamed (branded) solely to provide it’s new trade mark owners rights for merchandizing and book sales… Don’t get me wrong, it is important for open-source projects to find their revenue streams to keep the good work going, but what about the original founders/authors of Gaim and the numerous contributors? I mean, was Sean elected to be the Gaim God or was it more of a coup (reinforced by Google and his Wikipedia page)? I think I’ll check out Telepathy now…

  6. I can only give you my experience. I think I did pretty good contributions, and nobody ever told me about the Gaim->Pidgin rename, I found out just like everyone else.

    I think the rename is not just for commercial marketing stuff, but it also helps to revitalize the project and bring new contributors.

    Probably the project is more open now, but in essence things will stay the same. You will not be able to criticize the guts of Pidgin nor it’s God. You’ll better look into other projects.

    I’ll post something about how to get started with Telepathy. It has been always complicated to me. You need to understand quite a few things. Unless you install everything in /usr or distribution already comes with it šŸ˜‰

  7. Hi felipe.

    Thank you for your contributions. I agree with you in that the development of pidgin is really slow.. I would like to know if your big patch also fixed the msn transfer speed issue?

    Here is a post I made a couple of days ago, tired of waiting for the devs to fix the msn speed issue.

    You seem to know alot of things and have ideas of improving pidgin, why dont you start a fork of pidgin and be the head developer, in this way you can do as you like?

    great work, and thanks again.

  8. I left the P2P file transfer half implemented. The code is there but commented, I don’t remember how well it worked, probably there would be some corner cases that would make it crash. It shouldn’t be so difficult to fix it, but devs are interested in other things.

    Most Pidgin devs hate MSN, and the few ones that work on it are working to make MSNP14 work. IMHO that’s a major pain in the ass to try to do it in C, so I’m not sure how well that’s going to work.

    A fork of Pidgin is too much, but I have thought on making an independent MSN module. I have several ideas in mind, but I don’t have enough time.

    I’ll work a little bit on my Ruby code, maybe soon it will be ready.

  9. Pingback: 100,000 views, and some stats « Felipe Contreras

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s