Archive for January, 2007

The path to 1.0, extended golden 3 disc edition

Monday, January 29th, 2007

So lately there have been some users requesting a new version of Adium. Well, it’s almost ready. 1.0 is almost done. At last, we’re getting ready for the release that’s been in the works so long, so it’s a good time for some history and some musing.

A History Lesson

In order to better understand what is happening with Adium now, and why there has been no release since May 4th, 2006, first we need to understand where things have been in the past. Firstly, Adium 1.0 has been in active development since May, 2005. To give some further perspective, Adium 0.70 was released in October 2004, and 0.50, the first release after a rewrite of the original AIM-only Adium code was released in April 2004. This should give you a bit of a time frame and perspective as to what has been going on so far.

Secondly, the big difference between 1.0 and the other releases is that it’s really 2 release cycles combined. We decided around the time that 0.80 came out that we would not be releasing 0.90, and instead forge ahead to 1.0 with a “fix everything” attitude. The additional time spent would allow us, we thought, to create a release that would be truly spectacular. It worked out well, but just not in an acceptable timeframe. We will not ever be doing that again if it can be helped. Taking on too much at once leads to lots of complications and unexpected delays.

We garnered the attention of Google for their Summer of Code. They invited us to be involved, and we gladly accepted. That in itself created a large amount of additional overhead, but we thought the benefits would be worth it. The six students that we got were a very telling sign in what we needed to do additionally in order to attract new developers in the future, and to keep existing developers happy.

We also attempted to do something we hadn’t done since before the 0.50 release: we worked towards a wholly new protocol library for a major protocol, AIM.

Java, Joscar and Smack

One of our developers, Augie, spent a great deal of time working along with Evan and Keith Lea on the new AIM implementation using Keith’s joscar library. The joscar branch, as of early July, was, we believed, better than the current libgaim based AIM, so it was merged shortly before the start of the 1.0 beta cycle.

One of our main priorities for the Summer of Code was to improve Jabber, also called XMPP, support. It’s an open standard, and so is much easier for us than a closed network like AIM or MSN. We received a superb application from Andreas, in which he explained that he wanted to improve our XMPP tremendously via a Java library called . Java is a hefty dependency, but we were already utilizing it for joscar and we didn’t expect that to change, so given the minimal additional resource consumption of a second Java library, this was decided to be a great direction for us. We accepted his application as well as Alvaro Saurin’s to implement Jingle (Google Talk) voice support in the Smack library and then within Adium.

Then, disaster struck. Rather, Apple did. They deprecated the Java-Objective-C language bridge that we were depending on. We had a few choices, none were very good. We could spend 1-2 years rewriting both Joscar and Smack to work using JNI, the supported way going forward for what we were doing with Joscar and Smack. We could have spent time doing other things. In the end, the decision was made to move back to Libgaim, and just take it. In some ways this is where Microsoft is a better platform, since they inform everyone of their roadmaps way beforehand. But it’s what we’re left with. Evan, David and myself came up with a letter to send out to everyone, Evan sent it, and we moved on.

Meanwhile, back in Gaim land

The good news is that the Gaim team had not sat idly by for the long period in which we were attempting to use Java libraries. For years we had been building our own unofficial hack out of Gaim and had been calling it libgaim. The Gaim project now officially has something called libgaim, which will evolve into something truly awesome. They also improved the AIM bits quite a bit.

They even were looking at Joscar for tips and tricks on how to improve the AIM support. Hurray Open Source.

The Competition?

I think a word needs to be said for what’s been taking place with our competition. Just to clarify, we generally do not attempt to compete with iChat. We simply cannot. Apple employs many times the amount of people that we could get to work on the Adium project, and in either case they fit another need in the IM space that we just don’t have the resources to compete in.

However, we do have competition. From Fire and from Proteus. It has always been a friendly competition between all 3 clients. Fire has always been around, and Proteus has been around for about the same amount of time as Adium, give or take.


With Adium 1.0, Adium will be able to import most things from Fire. There is a migration path for those folks on Fire in case they would like to use Adium in the future. Fire itself is a very respectable project with some of the same goals that are in place for Adium, and they should be commended for all of their hard work.


We also saw a change from Proteus, in that they haven’t really done too much. There was a change of hands, multiple times, over who would continue working on Proteus. For a long period we’ve seen only promises on the Proteus forums of new features and new features. Proteus is now resting in the hands of a person that goes by Tommy on the forums. He’s been taking things very well, and is promising that Proteus is being worked on, but isn’t promising new versions. In all honesty, the situation he is in is probably not that great, and he’s doing well in it.

However, there was a promise of full source code that hasn’t taken place. This has been promised for the next version. We’ll see, and good luck to them.

We’ll start looking into a migration path for those folks using Proteus into Adium after 1.0. Fire is, however, the priority for 1.0, since they were more than willing to work with us on this.

So what now?

So now we’re winding down development of 1.0 of Adium. We only have a few bugs left on our betas. The current betas have run for 2-3 times the normal beta period, and the results of running the beta for so long have been many additional fixes on top of our original beta.

In total we’ll have around 660 issues resolved in 1.0. 1.0 includes a very large featureset, and a huge amount of bug fixes. Those who remember each of our .50, .60, .70, and .80 changelogs will remember that each were gigantic. What people usually don’t know is that it would take us about 2-3 hours to write up the changelog via SubEthaEdit with 3-4 devs working on it. We could do it automatically, but it’s a very fun part of what we do. We’ve already spent about 10 hours on the changelog for all of the 1.0 betas, and it will take another 2-3 hours to finish combining them all.

It’s going to be an awesome release, and we’re all hoping you folks like it a lot.

Temporary AIM server issues (now resolved)

Friday, January 26th, 2007

On Thursday, there was apparently a server side issue at AOL affecting some (but not all) AOL/AIM/ICQ users on all clients, including Adium. If you were already logged on, you didn’t have a problem getting your buddy list or sending or receiving IMs or locating people. For a couple of hours in the early afternoon eastern time, if you were in an unlucky fraction of people who signed on, you didn’t get your buddy list and couldn’t IM or locate people. You also might have hung while logging in – you would have signed in, but the spinning black square in the Dock icon would have been remained while Adium tried to retrieve your buddy list.

Apparently AOL fixed it across the board around 3:30/3:45 eastern time. Not everybody signing on during the 2 hours or so was affected; it seems only about a third or so had the problems, and the other two thirds had no problems at all. No buddy list information should have lost, even for “recent buddies”.

The Trac dance

Tuesday, January 16th, 2007

The PostgreSQL switch for Trac which Peter mentioned in the last blog post didn’t work out well; resource consumption drove the server to its knees. We’re working on a solution which doesn’t require going back to SQLite with its database-locking problems. Thanks for your patience.

We can rebuild him; we have the technology.

Friday, January 12th, 2007

Chris is currently converting our Trac to a different database engine, in order to make it nice and fast and hopefully more robust too. It will be down in the meantime. It will be up when he is done.

UPDATE 03:03 PST: It’s back up!

Apple, Openness, and the iPhone

Wednesday, January 10th, 2007

Yesterday, Apple released potentially one of the most interesting devices in computing history. The combination of mobility, relatively good power, rich OSX APIs, and multiple types of connectivity and sensors (phone, bluetooth, wifi, proximity, location, visual, audio, and orientation) could result in some truly spectacular new classes of applications. Unfortunately, it appears that they’re making their most classic blunder once again: locking out third parties. We have the opportunity to make ourselves heard, and request that Apple open the iPhone to third party developers. The only avenue of communication Apple leaves open to developers is Radar, their bug tracking system.

Jonathan ‘Wolf’ Rentzch has filed an initial bug report on the topic, which he describes here. I strongly suggest that anyone interested in open application development on the iPhone (or being able to use third party applications on the iPhone) follow his lead and file additional requests at (Please be polite though; ticket techs are people too!).

A sample bug report (filed by our own Augie Fackler) is below:

You can’t do any development for the iPhone.

Steps to Reproduce:
1. Write a cool app
2. Try to compile for iPhone

Expected Results:
A binary that should work in the spiffy iPhone.

Actual Results:
No way to compile for the iPhone exists, so no binary is produced

None known.

This is the same as Rentzsch’s bug rdar://problem/4917169 to make your life easier when you flag this as a duplicate.

Trac downtime

Tuesday, January 9th, 2007

Trac will be going down in a few minutes for some maintenance, in order to try to make it not so.. ya.

In the meantime, this video is cool. It has some very mild cursing in it, so if you don’t like that kind of thing don’t watch it.

MacWorld San Francisco 2007

Monday, January 8th, 2007

First I’d like to say “Hi”, since I just got blogging access here (thanks The_Tick!). I was one of the SoC developer on the Adium project, and I’ll probably be one again this year 🙂

Anyways, a small fruit company from a (to me) foreign country announced that they’d like to have a short keynote tomorrow Tuesday at 9am PST (that’s UTC-8) to 11am on the MacWorld San Fransisco 2007. Since they no longer supply a live stream, some nice folks agreed to demonstrate their typing abilities by summarizing what is said and shown live from the conference.
If you’d like to make use of this service, you can join us via your favorite IRC client on #mwsf2007 on freenode!

Weekly Cocoa App Challenge

Thursday, January 4th, 2007

For those of you who may be interested, I’m starting a weekly challenge on my personal blog. Click here for more information.