Table of Contents
- Welcome
- Galago-Daemon Crash Recovery
- Documentation
- New Features
- Bug Fixes
- TODO / Help Wanted
- Contact Information
1. Welcome
Welcome to this week's Galago status report. I'm starting to get a solid layout for these, for those who have been following. Each week, I'll have a little message up here (or not, depending), the main highlights over the past week, announcements (if any), a list of new features, bug fixes, a TODO list, and contact information. If at any point somebody has something they wish to contribute, please contact me.
This past week felt like one of those unproductive weeks, you know? The kind where no matter how hard you work, you can't seem to get anything done. However, as I write this status report, I realize that far more was done than I realized before. Some important changes and fixes went in this week, such as the new crash recovery functionality. All in all, it turned out to be a good week.
2. Galago-Daemon Crash Recovery
As Galago is still highly experimental and therefore unstable, some form of crash recovery was necessary. When galago-daemon crashes or is restart, all feeds and client applications would become unusable, and would have to be restart as well. This was especially painful for applications like Gaim and Evolution.
Applications using libgalago now listen in on special D-BUS signals indicating when a service is created or shut down. When galago-daemon terminates for whatever reason, all feeds and clients discard their local cache of foreign objects (such as presences, accounts, etc.). The UIs will then update accordingly.
When galago-daemon comes back up, the feeds using libgalago will see that, and push all their information back to the daemon. This will generate signals, as they normally do, for all clients listening in. The applications will then update with the information once again.
Nothing special is needed to bring galago-daemon back up after crashing or being shut down. The next query or push will re-activate galago-daemon through D-BUS.
Further work will begin soon on preventing a never-ending cycle of galago-daemon starting up, receiving info, and crashing, in case such a bug exists.
3. Documentation
Work on Galago's API and protocol documentation has begun. A fairly recent snapshot of the libgalago API documentation is now up. A lot of work still needs to be done on the protocol documentation, and it will probably come slowly over the next couple of weeks.
Furthermore, documentation on compiling Galago and D-BUS for MacOS X will hopefully be written soon. Jerritt Collord (collord) from LinuxFund and Colin Barrett (ramoth4) from Adium X have been working on getting a working setup of D-BUS and Galago going for MacOS X. Once it's completely successful, Colin will be writing a short HOWTO on setting this up, which will be put up on the documentation page.
4. New Features
libgalago
- Foreign objects from galago-daemon are destroyed when galago-daemon shuts down before the client application.
- Feeds now re-registers and re-transmit all presence, account, service, etc. information when a previously shut-down galago-daemon instance comes back up.
- Added a
"destroy"signal toGalagoPerson.
galago-daemon
- Implemented a message handler for
Account.GetContact(). - Feed applications stored in $prefix/libexec/galago/ and $HOME/.local/libexec/galago/ are now executed on start-up.
eds-feed
- eds-feed now installs to $prefix/libexec/galago/, which allows it to start up automatically when galago-daemon launches.
libgalago-gtk
- Added a semi-generic
GalagoGtkTooltipclass, which displays information on users such as their username, service, idle time, and status. In the future, it will be able to show the protocol icon and avatar, if available. - Added tooltip support for
GalagoGtkPresenceIcon. - Added protocol icons for Novell GroupWise and SILC.
5. Bug Fixes
libgalago
- Fixed a function that was calling
Service.GetAccount()when it was supposed to callAccount.GetContact(). - Matches for object watches were never removed, due to accidentally calling the addGalago Status Report #3 match function again. Fixed.
- Fixed a small memory leak in the
Presence.StatusRemoved()message handler. - Fixed a nasty crash where services and people weren't being destroyed in the right order when applications or plugins using Galago shut down or were unloaded. This affects gaim-galago and Evolution mainly at the moment.
- Objects were being left in the core's object tree even after being destroyed. When the program went to look up an object with an ID of a previously destroyed object, it would receive garbage data. This is now fixed.
- The various subsystems of libgalago are now shut down in the right order, preventing segfaults from garbage pointers.
libgalago-gtk
- Prevent a crash when the person set in an account list is removed from Galago. The person variable wasn't being reset back to NULL.
- If the person set for an account list is the "Me" person, and the "Me" person is removed due to a feed or the daemon shutting down, the "Me" person will be automatically set the next time it's added, and no other accounts will be shown until it's re-added.
- Prevent run-time warnings about property watch ID's being non-0.
- The
GalagoGtkPresenceIconis now hidden when the associated account is destroyed, rather than crashing. - The watch on accounts are now removed when the presence icon is destroyed, preventing possible crashes.
6. TODO / Help Wanted
There are many tasks in Galago that would speed up the initial release and provide desktop integration. If you would like to take on any of these tasks, contact us.
- Beta-test Galago and submit bug reports and/or patches.
- Integrate Galago into other programs (instant messengers, video conferencing software, e-mail clients, etc.). Good starts would be Kopete, CenterICQ, Mutt, and GnomeMeeting.
- Create Python, Ruby, C++, Obj-C, etc. wrappers for libgalago and libgalago-gtk.
- Create Qt widgets for use with Galago.
- Documentation and language translation.
7. Contact Information
People interested in helping out with Galago in some form, or those who are just curious about it may join #Galago on irc.freenode.net. We also have listservs set up for development discussion and SVN commits. See our Mailing Lists page for subscription information.
If you wish to contact me (Christian Hammond) directly, please see the Contact Information page.
Posted by chipx86