Adium

Archive for 2007

LMX and message history Q&A

Saturday, March 17th, 2007

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.

New Patcher – Paul Roger Livesey

Friday, March 16th, 2007

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.

Adium in GSoC 2007

Thursday, March 15th, 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 . (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.

Beta!

Tuesday, March 13th, 2007

Adium 1.0.2 beta is now available. See the beta page for the changes… Happy testing! 🙂

More tips for new developer types

Saturday, March 10th, 2007

Just another useful resource, on the wiki we have a Map -O- Adium which you may find useful.

Wow

Friday, March 9th, 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 http://trac.adiumx.com/wiki/GettingAdiumSource 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
http://trac.adiumx.com/roadmap 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 http://trac.adiumx.com/wiki/DevelopmentTipsAndTricks 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.

We need help

Wednesday, March 7th, 2007

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.

Developers

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.

Of message history, and the thing that powers it

Sunday, March 4th, 2007

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.


Storage

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.

Format

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.

New patch writer

Friday, February 16th, 2007

Over the last few days, Mats Mattsson has been submitting patches to close out some memory leaks. Last count is I believe seven. Thanks and welcome to the project!

Attention Earth People: Adium 1.0.1 now available

Friday, February 16th, 2007

Adium 1.0.1 brings a hefty set of bugfixes for such a tiny version number increase. A common AIM file transfer problem (in which one side would immediately see the transfer as canceled) has been fixed. We’ve squashed a double handful of common crashes and bugs which will never again plague our beloved users. 7 distinct memory leaks in 5 different situations were closed, further lightening Adium’s footprint. Last but not least, my girlfriend Jade turned 25 today. See the version history for all 25 improvements, then download away!

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. 🙂