Galago

The Future of the Linux Desktop?, Part I

It seems there are a lot of interesting things being developed lately. I’ve been reading about GNOME Storage, which is a really cool concept. I haven’t played with it yet, or looked into the code, but I think that if done right, it can really add to the desktop experience. Perhaps it could be used as a feed for Galago.

Linux as a desktop system has, in my opinion, a lot of potential. Though I wouldn’t recommend it at this point to most people I know, I do hope for a day when I can. The reason why it has so much potential is that anybody can modify the source of any program to provide the integration, assuming there’s not an API and plugin architecture that would do the job. Of course, we all know this, but think about it. Work like Dashboard or Gnome Storage just wouldn’t be all that doable under a closed environment without a lot of collaboration and licensing between Microsoft and any other companies. Unless of course there’s an API available there, but MS APIs only go so far.

There’s a lot that can still be done. My goal with Galago is to be able to automagically retrieve information related to the task at hand on almost any supporting program, in a desktop-neutral fashion, and to have an indicator of a person’s status wherever you see his/her name, e-mail address, or other contact information. But this is just one small part.

I want to see a desktop where when I open my report for school, I can instantly see on the side of my screen or somewhere icons for the other files related to this report, URLs I accessed to find the information, and the status of any people on my buddy list I worked on the report with. I’d prefer not to see this in a big white window on the side, like Dashboard does and Galago will do, but something more integrated into the environment. How, I’m not sure yet.

Something else that may be neat to see in the future is a revision control feature built somewhere in the backend. I believe Gnome Storage has this in their plans, and I hope it ends up being a part of the desktop experience. I’ve had clients and family members complain that they accidentally deleted or overwrote a file they were working on, and wanted me to recover it. If this was built right into the system, their documents would be safe.

Drag-and-drop install/uninstall of applications is another feature I’d love to see. This was something that Mike Hearn brought up the other day. If a person could download a single package and drag it to their desktop to install, and then drag it back to the trash to uninstall, it would simplify package management for the user dramatically. Of course, this requires that we finally get packaging sorted out and standardized, but this isn’t likely to happen any time soon. However, his autopackage project does provide an interesting form of package management that I wouldn’t mind seeing take off. The rest could be abstracted through GNUpdate.

At this point, I’d like to bring up how cool the stuff Robert Love is working on. It’s one of the upcoming things that are really exciting me.

I had more I was going to bring up, but it slipped my mind, so I think I’ll end this post….. now.

Galago Notes

Just before I go to bed, I figure I’ll jot down some notes regarding Galago, as I’m sure I’ll forget a couple of them in the morning.

The storage of the data is going to be in a graph. I think this is fairly obvious. Using this, we can better fine-tune how specific one thing is to another.

We should allow the user of the API to search in many ways. Keyword searching, mime-types, and categories are a few that should not be left out. We should also allow data to be retrieved within a span of time.

Speaking of time, items should be set so that they have an expiration date and one or more dependencies. The dependency (perhaps almost all information?) should be in the form of a URI. So, a feed may push data with no expiration date but a dependency on a file, along with any relevant data, to the galago server, and the information would be cached and accessible, even if the program had been closed for awhile. If that URI no longer existed (say it was a node in the graph, or a file on the harddrive), the entry would be purged.

And it’s late, so enough rambling. Bed.

Galago

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.

Scroll to Top