Galago FAQ
1 General Questions
1.1 What is Galago?
Galago is a desktop presence framework for UNIX systems, such as Linux. It transmits "presence" information on people gathered from applications on the user's system, such as the [http://gaim.sourceforge.net/ Gaim] instant messenger, and makes the information available to other applications on the desktop.
1.2 What is presence?
Presence is the state of a person or person's account. Whether they're at the computer, away from it, idle, talking on their cell phone, in a VoIP call, etc.
1.3 Why is presence information important?
There are many uses of Galago. Most haven't been thought of yet, as presence technology is still relatively new.
The idea is that anywhere on your desktop that you see a person's name or an account, you should be able to see their presence information. In many of these areas, there should also be a way to contact the person. Say, for example, that you are in your address book and you click on a contact with IM accounts. You should be able to see which of those accounts are online and what their idle time and state is. It's one more way to get to useful information in a natural way without interrupting your work.
There are plenty of other possible uses for presence information. One such example is a PredictiveAvailabilitySchedule, which would intelligently give you a best estimate as to when a person will be available or unavailable, and on what service or device.
2 Installing Galago
2.1 How do I install Galago?
See the InstallingGalago section.
3 Implementation Details
3.1 How do Galago-enabled programs communicate?
Applications that use Galago interact through the libgalago library. This abstracts the communication. In fact, applications never even have to know that data is being transferred anywhere. It just happens.
The actual communication happens over [http://www.freedesktop.org/Software/dbus D-BUS], using the per-session bus. This requires a supported version of D-BUS and a properly set up session bus. The FirstTimeInstallationGuide covers this.
When applications that act as presence feeds use libgalago, information that they set on the various objects are transmitted to galago-daemon. galago-daemon then combines the new information with information it may already have on the various type of object (which would be sent from other presence feeds) and then retransmits it out to anything that's listening. Other applications using libgalago will then update their objects based on the new information from galago-daemon.
3.2 Galago doesn't need a daemon!
I've heard this one far too many times. Believe me, if Galago didn't need a daemon, it wouldn't have one. Sure, it's technically possible to build this framework without the need of a daemon, but you lose a lot in doing so.
First of all, more than one application may tie into Galago to provide information on the same object (a person, account, presence, etc.). The daemon helps to prevent inconsistencies and conflicts by storing all information from the various feeds and returning one single resulting model for the information. While in a non-daemon model every client could put together that information by themselves, that would require that they all keep a copy of every feed's data at all times, and query for every feed's data when it first executes. This would cause the data to be duplicated far more often than it should. A single daemon keeps things clean and tidy, and prevents unnecessary excess communication.
Due to the design of D-BUS, daemons can be auto-launched only when needed. There is no need to run galago-daemon in the desktop session manager's startup list or in an X config file, because D-BUS is going to take care of it for the user. In theory, we could also shut down the daemon when it's no longer being used, but in practice this is pretty much pointless. In a typical environment, at least one feed will always be present, and this is typically the one that ties the address book's list of people to the IM accounts the people have.
