Lonely Cactus

A life of punk, code and apathy

Monday, July 30, 2007

Guile and Online Code Libraries

Havok Pennington has been talking up the ideal on the online desktop. Essentially, he sees the future of the desktop to be something like XBOX Live or Google Desktop, where private data is stored centrally and is available for use from any computer. Each computer becomes a thin client.

A couple of outlines of his argument can be found at this interview, and in his GUADEC presentation.

In broad terms, this is not a new idea, obviously. "The network is the computer" is the central idea behind, for example, telnet, X, Java, Google Desktop, and XBox Live. There are Java-based OS projects, Mozilla-based OS projects. What makes it interesting is that the Fedora kids now have enough components lying around to actually accomplish such an effort with their GNOME infrastructure. To paraphrase his argument, a Live CD and a network connection should be all that is required to access much of the functionality of your desktop machine. Preferences could be stored online so that the look, feel, and functionality of one's desktop can be reproduced at any machine.

Let me quote his GUADEC slides.

IMPLEMENTATION

SEARCH AND DESTROY everything that leaves my data stranded on a single computer.

INTEGRATE the best web applications with the desktop.

RETHINK the user experience to take advantage of live connections to friends on the net.

CHANGE THE DEFAULTS so naïve users taking no special action will create collaborative, backedup, online data rather than local files.


The Guile project, a GNU project scheme interpreter, is somethat that I play with sometimes. I started thinking about how this sort of idea can be fused with something like Guile. I think one way to touch base with this concept is in the Guile Module system. The Guile interpreter has a small subset of the language hard coded in the libguile, and then loads further functionality from a set of modules upon initialization. Some of these modules are C-code objects with Guile wrapper scripts. Some are pure Scheme.

It would, I believe, be quite trivial to convince libguile to seek out its modules from an online repository upon initialization instead of from the local drive.

A rough outline of the simplest TODO might be as follows.

1. Move the %load-path to a GConf variable instead of a hard-coded value, and change it into a URI instead of a standard file path. This would allow one to set a %load-path such as "http://foobar.com/guile/1.8/".

2. Incorporate Gnome-vfs into libguile so that module loading can use any URI-style location.

3. Update the /usr/bin/guile executable to allow it to run scripts stored by URI.

4. Maybe update /usr/bin/guile to preprocess a file to seek a %load-path before initializing Guile.

There would need to be a division between what "core" Guile and module-loadable guile should be.

This alone might be useful, but, there are some fun questions that couldn't be answered by this framework.

0 Comments:

Post a Comment

Links to this post:

Create a Link

<< Home