Do not post bugs or requests to the comments! Use Trac.
Thursday, March 29, 2007
Setting your outgoing text color

I've just posted a new screencast in the Videos section. It's episode 4, which shows how to set—and reset—your outgoing text color.

The process isn't pretty; it's highly non-obvious. The main source of problems is that whereas most other rich-text fields on the Mac go all rich-text or all plain-text, we juggle both. This won't really work for the user until we put in a dedicated UI for this; that will come in a future version, but we haven't decided on the best way yet. We do have a ticket for it; that ticket is #6349, which currently has a milestone of 1.1.

In the meantime, the current process is also described in text form on the FontsAndColors page on the Trac.


Monday, March 26, 2007
It's still not too late to get in on the Summer of Code!

Evan and I mentioned before that the deadline for GSoC student applications is today, Monday at 5 PM PDT. The nice folks at Google have extended the deadline to tomorrow at 9 AM PDT. I've updated the press release to reflect that, but decided that it would be a good idea to make a new post about it as well in order to poke your RSS reader.

And once again, for more information on applying to Adium for the Google Summer of Code, see our SummerOfCode.


Sunday, March 25, 2007
Adium 1.0.2 is now available!
What could possibly make this beautiful Sunday any better? How about a new version of Adium? Adium 1.0.2 is now available. This bugfix release fixes several "favorite" crashes, improves AIM file transfer (again!), speeds up the Chat Transcript Viewer, improves interactions with iTunes and the OS X keychain, and more - a total of 25 significant improvements.

As always, thanks to our site and support host Network Redux and our download host CacheFly. Want to help out with development? See Contributing to Adium for information on bug hunting, coding, and donating.

Are you a student interested in getting paid to participate in open source development this summer? Read about the Google Summer of Code and apply immediately; only 33 hours are remaining before the deadline!
Wednesday, March 21, 2007
Trac new account registration issue
I thought I had posted about this before, but it looks like I had not.

Currently we're experiencing a problem with registrations on the Trac system. Please do not report the issue to the trac folks over at edgewall, they already have about 20 tickets explaining why Adium doesn't work, and half of them do not use macs. :)

If you do not have an account for Trac and need to report an issue, the forums or our feedback email address are both viable ways to get feedback to us. We're working on this issue, but it's going to take some time.
Tuesday, March 20, 2007
Some additional Google Summer of Code 2007 information
Peter previously posted that we're now accepting applications for the Google Summer of Code 2007. While the Adium Summer Of Code page and Google's own SoC page have everything you need to know, I thought a summary here on the blog would be appropriate.

Google Summer of Code is open to students at all levels age 18 years and older. Students whose proposals are accepted by the Adium developers will work full-time on their open source project with the guidance of an Adium developer ("mentor"). This is a great opportunity to get involved in an exciting open source project... and to earn a paycheck in the process: Successful students will earn $4500 USD from Google for their efforts as well as gaining a fantastic addition to their resumés and making valuable contacts (both personal and professional).

Applications are due March 26 by 5:00 PM Pacific time (12:00 AM UTC March 27, 2007) — time is running out! Between March 26 and April 11 we (the mentors) can request more information and you'll be able to update your application.. so be sure it's submitted via the Summer of Code Web Application by the deadline.
Saturday, March 17, 2007
LMX and message history Q&A

There's been some discussion of LMX on the web since I announced LMX 1.0's release. For those who don't ordinarily follow the Adium blog, LMX is the library that powers Adium's message history feature.

I've written a post on my own blog that responds to some criticisms of LMX's underlying theories. It's rather geeky; it's for the sort of people who use XML themselves. If that's not you, feel free to skip it.

Labels: ,

Friday, March 16, 2007
New Patcher - Paul Roger Livesey
I would like to welcome one of our newest patchers, Paul Roger Livesey. Paul came to us due to the recent posts requesting help.

He has created patches for both #5753 and #6287.
Thursday, March 15, 2007
Adium in GSoC 2007

Google is doing their Summer of Code again in 2007, and we're participating for the second time. Woo-hoo!

We did really well last year. Two of the projects from that GSoC will be released in Adium 1.1, which we hope will be ready later this year: new and improved tabs, and better accessibility. (We'd have more, except that two others required Java, and we've since dropped that.)

Student applications are now being accepted; more information is on the GSoC webpage, as well as our SummerOfCode page on the Trac. You may also wish to read the Adium GSoC students blog.

Labels: , ,

Tuesday, March 13, 2007
Adium 1.0.2 beta is now available. See the beta page for the changes... Happy testing! :)
Saturday, March 10, 2007
More tips for new developer types
Just another useful resource, on the wiki we have a Map -O- Adium which you may find useful.
Friday, March 09, 2007
I have to say, I was not expecting the kind of response we got to Chris's request for help. Thank you all for your enthusiasm and offers of help :)

We've attempted to respond to each email and IM we've received, but if we missed seeing your offer, here's some information to help people get started contributing code.

Getting the code
Check out for our documentation on getting the code and making sure your coding environment is set up and up to date

Finding things to work on is a great place to start looking, but possibly even better is to look into issues that you've run into yourself; personal motivation is always a great way to stay interested.

Asking questions
I've put up a page on the wiki at with some tips and tricks (most of them useful to other cocoa coding as well, actually), and many of the developers hang out on irc and can answer questions. Colin and I (at least, possibly others) are willing to answer questions on IM as well.
Wednesday, March 07, 2007
We need help
Hey folks,

So it's been a long road to 1.0. We're still recovering. Some things however have always been the same for the project. One of those is the following

We need help

We need help in a couple of forms which I will explain below. Basically we're at a point where we are getting a lot of new users, so we need some additional resources in a couple of areas.

Help with users

For starters, let's take a look at the "Needs Feedback" milestone on Trac. There are, at the moment of this writing, 242 open tickets in this milestone. It should be much lower. Our general policy is to leave a ticket open for 2 weeks once placed into this milestone, and then to close the ticket as "WorksForMe" until we get feedback on it.

In general we try to get back to users as soon as we can, but it's hard to do on a project like Adium. Ticket triaging is down to myself and Eric. The first week that Eric started helping with tickets, he processed about a thousand untouched tickets, which is why he leads the TicketTaskForce. If you would like to help with the TicketTaskForce, please contact him.


We are in dire need of more developers. We have some really great developers already, but they can't do it all alone. This is the reason we haven't done things like Voice and Video, because we just don't have enough hands to tackle something like that.

If you would like to help with development, please contact either David or myself

Summer of Code

Last, but not least. We've been invited to Summer of Code again. If you are interested in that, please see our summer of code page on trac.
Sunday, March 04, 2007
Of message history, and the thing that powers it

Adium has a feature called “message history”. When you open a new chat with a person, message history shows you the last n messages from your previous chat with that person, to remind you of the discussion from last time. This feature underwent some major changes in Adium 1.0.


Before Adium 1.0, Adium wrote those last n messages to a plist file when the chat closed. The problem with that was that when Adium crashed, the plist file would not be written out. This meant that when the user reopened the chat, the user would often be alarmed to find that the chat he had just been in (when he crashed) was not reflected in the message history, and would then conclude that the log of that chat had been lost.

This was never the case—we've always updated the log as messages are received and sent, never deferring writing to the end of the chat. But the confusion is understandable.

In Adium 1.0, we did away with the separate plist storage; we now use the logs (now called transcripts) for message history. This prevents the “where'd my history go?” problem, and ends the redundancy of writing out messages once to the logs and again to the plist.


Before Adium 1.0, Adium stored its logs in a faux-HTML format. It was sufficient for display, and moderately parseable, but it was not very extensible, and not a true log format unto itself. (This is the format that Chat Transcript Manager understands.)

In Adium 1.0, we switched to a new real transcript format, which we call Unified Logging Format, and which is based on XML.

The problem now was how to quickly retrieve the last n messages from an XML transcript for the purpose of displaying the message history.

We had two options:

  1. Solution A: Use an existing XML parser to read the entire transcript, ignoring all messages except the last n.

    This solution doesn't scale. A large transcript would cause a noticeable delay in opening a chat. This would be especially bad for chats opened from the remote side, since the user would not expect the beachball that would appear while Adium loads all those messages, discarding most of them on its way to the last n.

  2. Solution B: Write a new parser that parses the XML data in reverse.

Solution B is what I did.

I named the new parser “LMX” because it parses XML backwards (get it?). This allows Adium to read the last n without reading any of the messages before them.

Labels: ,