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