Writing

Feed Software, technology, sysadmin war stories, and more.

Thursday, August 18, 2011

Adium's raw XML leakage leads to pain and suffering

Over the past two days, I've noticed a disturbing uptick in the amount of random garbage which is coming through into Adium, my current IM client of choice. It seems that something is going on server-side which previously did not occur. It's not just me, since plenty of other people are reporting it, too -- just search Twitter for "Adium" and watch what comes back. There's even a ticket open to track this thing.

What worries me is that this might turn out to be some kind of anomaly in Adium or libpurple, and the fix will be a new version of Adium. It worries me because Adium got to a point last fall where I no longer want to upgrade it when they crossed over to version 1.4.0. That version added one brilliant change and then introduced many unforgivable things at the same time.

My initial excitement was that Adium 1.4.0 had disabled the "so and so has left the conversation" message sent to the far end upon closing a chat window. This has bugged me ever since the days of Gaim/Pidgin when it was first being transmitted. I even used to make custom builds of that client for my own uses just to turn that off. I even wrote a patch so others could do it, too. Notice that patch is four years old now.

The problem is that Adium 1.4.0 introduced a bunch of visual cruft which could not be ignored. They added unread counts in the tab bar below the chat window. This meant that a bar which might have been | x Name | turned into | x Name (1) |, then | x Name (2) |, and so on, as they typed while you were in some other window. This had the effect of pushing all of your other tabs over to the right. Also, since it's a proportional font, it would actually jog left and right according to the widths of the various digits: 1 is skinny, 2 is wider, and so on.

They also added these horrible blue bars out to the right of lines which were received when you were in some other window. The idea was to say "oh hey, this showed up when you weren't looking". Guess what. I don't need that. I don't want it. And as of version 1.4.0, you couldn't turn it off.

Also, 1.4.0 had this ridiculous problem where if you left your pointer over the chat window, it would display this timestamp popup at the right edge of the message. It would do this even if the pointer was (properly) hidden because you were typing in that window. It would remember the hidden position and would pop up times for that line. Who thought that was a good idea?

Your pointer is probably going to be somewhere in your chat window any time you're using it, since odds are, you had to click on it in order to start typing! Why they would then force you to slide it back OUT of that box to prevent the unnecessary time popups is just unimaginable.

There was a final insult. When I was fed up with this and rolled back to 1.3.10, I found that it did not come back as it had been before. The install of 1.4.0 lingered, and it had corrupted the fonts used by 1.3.10. Things were now being displayed as a smaller size, and no amount of tweaking would fix them. I finally wound up reverting to my old-school Unix ways: blow away all associated files and pull them back in from a backup. This "take off and nuke it from orbit" approach worked, and I've been back on 1.3.10 ever since.

Back in the present day, now we have this XML-spewing anomaly and I worry that the only way out will be to upgrade. I decided to check on the Adium 1.4 line to see if I still needed to stay back on 1.3.10, and tried installing 1.4.2 on a separate account. I learned my lesson from before and now know better than to test a new version on my real user account.

Adium 1.4.2 is a mixed bag. They managed to slay those useless blue "arrived while not focused" bars on messages, so those are gone. There's also now a preference under Advanced -> Messages -> "Show unread message count in tabs" to turn off the horrible number-by-name thing I encountered.

Unfortunately, that's where the good news ends. 1.4.2 still has those annoying time popups when your pointer lingers, and it seems to have added a new distraction. There's now this "WTF is that doing there" horizontal red bar which sits in the scroll bar trough on your chat window at times. Pointing at it produces no tip to indicate what it is. Clicking on it does nothing. Scrolling up and down to above, below, and on it doesn't show anything obvious.

I finally figured out what it meant by doing a bunch of dead-end searches until I got lucky. Those red lines are called "focus lines". According to ticket #12302 from two years ago (when 1.4 was still in beta), it's "not a bug". More recently, in the actual release version, someone filed ticket #14482. This one was closed as a duplicate and basically, "it's still not a bug".

This is the kind of stuff which keeps me on 1.3.10, and has me concerned about the future of my chat experience as a whole. Obviously, I had myself fooled for a while when I thought that using a Mac meant that other developers "got it" and that annoyances would be minimized.

Here's a mantra I wish more programmers would adopt: it's here, and it works, so leave it alone. Deal with entropy and long-lurking bugs, but stop trying to be clever.

Oh, and get off my lawn.


August 20, 2011: This post has an update.