Stroking AdiumX
One of the more common things I get asked regarding the AdiumX chat I did awhile ago is "What about Fire and Proteus?", and well, ok. It's worth noting that when I pick something for one of my 'chats', by choosing it I'm not dissing the others somehow.
To really go into it, its worth touching on something that you often encounter when using software. One of four things are going on:
- You're using it because you have to
- We're using it because it's the best alternative at the moment, but your eye is generally wandering for what you really want
- It's the first thing you used, it did the job, so you stuck with it and haven't really investigated alternatives
- You're using it because it's clicked with you and subsequently owns the mindshare in your brain for that app's market, and everything else has to give you a reason to switch
Fire fell into the second category for me. In terms of 3rd party clients on the mac, I pretty much started with Fire and a few clients built around ICQ. And Fire is really worth noting, as it was a trailblazer in terms of multi-protocol clients on the mac. But it was really, really rough to use simply because they were trailblazers, and I could never really get things to work as they should, but it was pretty much all that was there so you kinda put up with all the weirdness and went with it.
I distinctly remember downloading the code and getting this sinking feeling in my stomach as I poked around: no one but those specifically working on it day-in-day-out were going to be able to make any headway into it. And it sort of confirmed what I was seeing on the mailing lists: they'd throw up a fix for one issue, and find out they've just created a whole bunch more. That's not good, and is generally a red flag for larger issues.
Around then I got turned onto Adium, which wasn't AdiumX yet, just Adium, and only did AIM. I was enthralled. It had an exceptionally clean UI. It was very resource-friendly, using spartan amounts of memory and CPU. And it was stable, which was a huge selling point to me at the time. And it had that damnable cute duck icon. I was so surprised at its resource usage I downloaded the code and within ten minutes was enamored in a different way: the code looked like it had been written by someone who expected other people to see it.
It was a little surreal; I'm not coder and within ten minutes I saw how the entire app pieced together and what did what. Later on I saw an interview with Adam Iser that, while omitting the fact that his family has a penchant for owning goats (found that out while researching the AdiumX interview with Evan, and sorta had to put it to use somewhere, sorry) mentioned that at the time, Adam had been doing Adium as a sort of portfolio piece for his portfolio to hopefully get work writing Cocoa apps for OSX. That made a lot of sense and jived with what I was seeing.
AdiumX came out of a long rewrite, and if you download and look at the code yourself you'll see much of the same things I saw when I first downloaded that code back in the infancy of OSX. The new plugin-architecture not withstanding, everything is cleanly separated out again just like the original code into clearly defined classes and sections. Quite honestly, it's not the type of discipline you see in every OSS app. Usually OSS devs are scratching an itch, and if you're like me, when you're scratching an itch you scratch hard and fast.
I recognize this discipline in the AdiumX team simply because I lack it, so I know what I'm looking for. And no, I'm not a reverse fanboy; back when the blog had 1.5 readers (I think the count is at 13?) I was saying much of the same thing.
The maintainability issue is really what makes me give Adium such a big nod over Fire, UI and niceties aside, and I believe it's just starting to really show its benefits with the 0.7 release. Having code that is designed to be maintained from the start, and is heavily modularized takes extra effort but allows you to go so much farther down the road.
You're able to, say, rip out and refactor the entire chunk of code that handles your buddy lists without overly worrying that it'll break lots of other things in a relatively short time span. Someone can check in a fix in one area and those fixes trickle down correctly to someone checking in a fix in another area, rather than breaking something obscure in another.
I feel safe in saying that the biggest thing holding back the Fire team at this point is the state of the code itself. That's an incredibly hard thing to recognize when you're in the thick of it, and it's much easier to just stop and hit the bugs you're dealing with at the moment rather than taking time to change the conditions so that you'll be dealing with fewer bugs in the future. And Fire has a ton of bugs.
AdiumX has bugs too, you can take a look at the bugs they're dealing with at the moment for yourself, but the situation is very different.
AdiumX usually has an idea of where to start when a bug has been introduced or discovered, not "Well, it worked before I checked in the last code... better look there". Fire is playing whack-a-mole, it shows, and it's only going to get worse as time goes on. There are things, whether you care about them or not, that the AdiumX team can do in fraction of the time the Fire team can now.
This might sound as though I'm calling the Fire team out; I'm not. It's a great app. I have tremendous respect for the project and would do a chat with them in a heart beat. There are real, solid reasons for choosing Fire as your app of choice right now. It has some brilliant guys, and a lot of its features and protocol handling are more fleshed out than others, Adium included. If I was a heavy Jabber/ICQ user I'd be banging my head against it more, and for encryption its really the app to use right now.
As for Proteus... I can't wrap my head around it. More power to those who like it, I just have some severe philosophical differences with the author and how he's handled his app. And no, it's not because it's not free. I have nothing against software you have to pay for. But even getting beyond those philosophical differences, I just don't really like the app. If you're heavily into ICQ I can see valid reasons for using Proteus, and there are some nice features here and there.
But when I tried to use it felt inordinately gooey, and not in a good way. There's a lot of eye candy, but it just seemed forced and heavy. Kind of like the difference between a light drop shadow behind an image to give some depth and definition and those horrid monstrosities you see on 15yr olds' websites that would make Tammy Fae Baker feel at home. I'm going to fall short of saying it felt bloated, but quite honestly I couldn't figure out where all the cycles were going.
You don't have to take my word for it (and shouldn't); if you're an OSX user, by all means try them all and see which rocks your socks. Different strokes for different folks.
Comments (6)
Posted by: ChipButty at September 28, 2004 11:17 AM
I used Fire in the past and gave up on it in favour of Yahoo IM and iChat. Since reading the rave reviews here I'm now using Adium and it's GUI is wicked! However, I think that as more and more people use broadband there is going to be wider use of audio chat and webcam use and hopefully Adium will implement these features in the future.
Posted by: Mindflayer at September 28, 2004 03:07 PM
Proteus is solid - a lot of people prefer the drawer. I like the fact that messages do not pop up until the reader is ready.
Posted by: Hemmel at September 28, 2004 09:18 PM
I prefer Fire, but Adium is good work
Posted by: Mark Rowe at September 28, 2004 10:46 PM
Speaking as a Fire developer, I must say that I find your commentary eerily accurate yet a little dated.
Some background: Eric Peyton of epicware Inc released Fire 0.1a onto the world on April Fools day in 1999. I believe that it was the first AIM client available for Mac OS X. Shortly afterwards support was added for ICQ and Yahoo pager.
It's fair to say that the code isn't up to the highest standard, but it should be noted that this area has seen a lot of attention recently. Graham Booker has put a lot of effort into refactoring large portions of the codebase with the aim of improving the architecture, simplifying the code and removing artificial limitations. These changes have lead the way for other features such as the tabbed chat windows that will be present in the soon-to-be-released Fire 1.1 and support for having multiple accounts per service online is actively being developed for Fire 1.2.
While I greatly admire the work that the Adium team has done, in particular the simplicity and clarity of the code that you mentioned, there is something about the Adium UI that just doesn't "click" with me. That's why I decided to pitch in and help with Fire :-)
I've more thoughts on this topic, but work has removed a large portion of my lucidity today.
Posted by: Pete Prodoehl at September 30, 2004 01:56 PM
I'm a Fire user, and it might have some bugs, but they don't seem to affect my use in ways I can tell. It works pretty darn good, though maybe I just don't stress it enough. There is one feature that is really missing for me, the ability to log into multiple Jabber accounts, which would be very nice, as I tend to use Jabber as a notification service in some of my applications.








Hehe, and what about the lovely iChat?
I started with Fire as well, then used Proteus for a short while. I never felt too comfortable with those. Finally I 'graduated' to iChat.
Sure, Fire could gpg encrypt my messages and connect to Jabber. But then, about a single person in my contact lists could live up to those features... and iChat is so much prettier (and has the 'audio' plus).