I’ve been developing a draft of a system I call Galago, which will be used for associative information gathering (based on ideas from Nat Friedman’s Dashboard) and user presence information. I discussed this briefly on Advogato.
This is not all fledged out yet, but the current concept uses D-BUS and XML packets for communication. Every Galago Feed, which may be an application (such as Gaim) or a daemon, can push information it finds to the Galago daemon and/or listen for requests for associated information. Other applications (or even the same ones) can make these requests and retrieve the results.
The trick is deciding how I want to format the requests, figure out what information to return, etc. I’m thinking that a combination of categories and mime-types would work, but I don’t know how easily that will scale to things I haven’t yet thought of. It would require a standard repository for categories.. Must think about this more.
Another area of Galago would be presence information. Any application that can provide presence on either the home user or remote people would push it to the server or wait for a request and respond. The basic idea is simple. Any time you see a person’s name or information, whether it be in Evolution, Gaim, Straw, Pan, or whatever, you’d be able to retrieve information as to whether they’re online, what services, and their status (away, busy, etc.). It doesn’t matter what IM client you use, as long as they support Galago.
The base of Galago is composed of three parts: Galago Core (the main communication protocol), Galago Presence (presence and user information), and Galago Association (related information gathering, a la Dashboard).
I should mention at this point that Galago wouldn’t be designed as just as GNOME thing, even though that’s how it may appear from the examples I used. It would hopefully be more like a freedesktop.org standard, where it’s desktop-neutral. It would have libraries with controls for common assocation and presence indication, such as a little online indicator icon, a Today view control, etc. There would be Gtk and Qt versions of these.
I’m drafting up some ideas for this, and trying to figure out the protocol and get a base system up. It’s moving slow, but it’s moving. I’ll post more as I go.
That sounds interesting. I’ve been watching nat’s dashboard for awhile now, and the concept of it intrigues me. OS X has something -slightly- similar with it’s Address Book framework, but there’s no real information push, just sharing. I’ve found it to be really nice, so I imagine I’d like this even more.
I’ve found MT to be pleasant to use, but for some reason I stick with my hand coded garbage.
Are you familiar with ENUM 164? The huge interest in the Asterisk softswitch has led to the creation of http://www.e164.org for global addressing.
e164.org is serving up contact detail via NAPTR DNS records, including PSTN numbers, email addresses, IM, etc. which can be time based. Work has begun on a “status ap” to allow users to dynamically update this data.
Any interest in including ENUM-164 support in your daemon?
e164.org has an api available for software developers. the api allows for updates to enum records. the protocol spec lives at http://wiki.e164.org/moin.cgi/RemoteManagementProtocol