Galago Release and SCO

Well, I finally did it. The 0.3.0: Wrath of Squirrel release of Galago is out! No, seriously. It needs some testing, and I have a bunch of neat little projects in the works. If you’re in the Silicon Valley area, I’ll be giving a presentation at SVLUG in the near future. That is, if I can get everything working in time.

There’s been some concern of code theft in a project I’m involved in, so we put in place an SVN repository wrapping my Source COde authentication tool. This is an old project of mine, and for those interested, you can read about it. With SCO, you’ll never have to worry about code theft again.

New Galago Hosting

I finally finished the transition to my new Linode account for Galago’s website and SVN repository. It should hopefully be more reliable, as I’ll have direct access to all services and account maintenance.

If you had an account on the old SVN repository and need a new account, please contact me with your username/password, and I’ll set it up. Also, please update any bookmarks or trees. The new site URL is at, and the SVN URL is

Various Updates

So a few things have taken place lately, and I haven’t blogged about them because I’m just really busy (or lazy, depending).

Galago and the fd.o desktop notifications reference implementation that Mike Hearn and I wrote have been proposed for GNOME 2.10. As I’m still new to this whole process, I don’t know exactly what to expect, but time will tell.

For the first time in a long time, I actually wrote up birthday and Christmas wishlists, as I usually get asked by everybody every year. I figured I might as well post them, as I find it useful to look at other people’s for ideas. I have them on Amazon, ThinkGeek, and

At sri’s constant urging (it’s appreciated!) I’ve been working on a couple of articles for GNOME Journal. Hopefully I’ll actually be happy enough with one of these and have it finished by tomorrow.

And I guess that’s it for now.

Galago .NET bindings and other news

I am pleased to announce that due to some, um.. gentle nudging on Nat’s part, work on the Galago .NET bindings has started. There isn’t a whole lot there yet, but it’s getting there. I hope to have something usable this weekend, when I actually have time to hack on this.

The Galago release is still being held up by two (possibly very related) critical bugs in galago-daemon. Once I find those, and finish up the avatar support (almost done!), it’ll finally be ready to release. The Evolution integration will be finished later (although I’m near completion), and I’ll be providing packages as soon as that’s done.

Impending Galago release

Welp, I’ve been thinking about it, and with everything coming up in my near future (possible full-time job, and if not, school), and with the current state of Galago, it may be time to do an initial release. It’s Mostly Stable (TM), and the best way to get some bug reports in is if people use it. After I evaluate the possibility of getting some certain code working some time this next week, I’ll be making my decision regarding its release.

Unfortunately, the Evolution integration won’t be part of the first release (although the Evolution-Data-Server feed will be). I plan to build some custom packages of Evolution and E-D-S based on the unstable 1.5.x releases and my patches a bit after the initial Galago release. We’ll see how that goes.

I have some scary-neat ideas coming up for some of this technology.

Update: Happy birthday Todd!

Projects picking up speed

I’ve been making some rather good progress with both Galago and the Gaim status rewrite as of late. Galago is becoming a lot more stable, and the structure is being more fine-tuned. Interest in the project has picked up as well. I have a guy working on some patches for Galago, and possibly working on GnomeMeeting integration. The Adium, Gnumail (so I’m told), and Proteus projects are interested in using it, so we’ll be getting a MacOS X port soon.

I’m in the process now of integrating Galago into Evolution. Very little work has been done on that yet, as I started tonight, but the results so far please me.

The Gaim status rewrite is coming together, and is forcing me to remove a lot of the old cruft still in Gaim. I don’t plan to finish this before 0.80, but we’ll see.

I’ve been spending a bit too much time on these projects lately, so I decided to learn to draw. I’m rather happy with the first drawing (shaded) I attempted, although I realize it has a lot wrong with it. I can only improve, and I’m striving to do as well as my “Harem” girls (which is what my friends are calling themselves lately).

Speaking of which, at some point soon, I’m heading over to one of their houses so they can use me as a model while they draw. That should be.. interesting.

Finally, a robot slave of my own

The property notification stuff in Galago now works (more or less :). The test program’s status icons update instantly when a buddy in Gaim changes status. Of course, that’s not Gaim-specific. I have small test utilities for manipulating statuses that also work quite nicely.

So, now the next step (aside from cleaning up some code and adding a few more features) is Evolution support! Woo.

On a related note, I just created #galago on Freenode, and have a few people hanging out there now. Hopefully I’ll get a couple contributors. But for now, bed.

Galago Status Update

It’s been awhile since I posted anything regarding Galago, so I’m about due for a status update.

SourceForge handed over the galago project to me, so I’ll be getting a site up in the next couple of days, as well as listservs.

Much of the daemon and libgalago library have been fleshed out. I still have some of the querying and signal stuff to do, and automatic merging of people, but it’s getting there fast.

I recently added a couple of new widgets to libgalago-gtk. One displays a list of services that Galago currently knows about, and the other displays a list of accounts that Galago knows about. An account list can be linked to the service list with one API call, and the account list will automatically be updated when the service is changed.

Galago presence test screenshot
Galago presence test and widgets

I’m in the process of writing the signal/property watch code now. When that’s done, programs will receive new presences and such as soon as they’re known, instead of querying. I haven’t had this functionality since before the rewrite, so it should be neat to see. As soon as that’s done, work on Evolution integration begins.

Nearing presence goodness

Although I took most of spring break off to attempt to relax (something that didn’t end up happening much at all), I’ve managed to make some really good progress with Galago. The library’s API is for the most part stable, and my work as of late has been with the daemon. Most of the functionality is there as well, though some stability issues need solving. I expect to have those issues fixed within a week. Then work begins on Evolution integration, as well as other applications.

The galago project name on SourceForge has been in use for some time, but the project is dead. I filed an abandoned project takeover request earlier this month, and today (well, yesterday now) was the deadline for the maintainers to respond, so we’ll see how that goes.

If all goes well this month with the Galago work, I should have a release out soon. I’ll get a page up before that, with example code, the details behind Galago, a FAQ, etc. Hopefully it’ll clear up some confusion that a few people still have.

Less Work is More Work

I began a rewrite of the Galago framework a few days ago. The original design was good for my initial testing, but I didn’t plan to stick with it. One of the neat things in this rewrite is that unless a feed wants to, it doesn’t have to manually push any presence info. Instead, the code (either via a plugin or the main code of the program) just keeps a couple structs (GalagoAccount, GalagoPerson, GalagoPresence, etc) updated as it does things, and the events automatically propagate.

This has required a number of new considerations when developing this, but I’ve worked out most of them. From an API standpoint, developing an application to work with Galago is really easy now, even easier than before.

The new framework allows for basic identity information, so you can say, “Give me all presence information for Christian Hammond.” Each feed will have a GalagoPerson per each user, which may or may not have a name or other info associated with it. When the daemon receives the presence info, it will get the person info along with that. The people and accounts are stored in a graph in order to determine if accounts are shared anywhere. If so, it can merge the person daemon-side and feed it to any watches or queries.

So, if Gaim sends presence for MyUsername, and Evolution sends a GalagoPerson with some GalagoAccounts for Christian Hammond, and one of the accounts is MyUsername, the daemon will associate them and pass it along. It should work well, barring any unforseen problems.

On a side note, Movable Type is being very strange and only listing one blog entry on the index page. I’m hoping this post bumps it and makes it work again, as it was working just a few days ago. Oh well.