Many smart people have been commenting that GNOME apps should come out of the box web ready. I think I lamented once on this blog about the fact that we as FOSS developers have access to tons of great server software yet we do little to integrate with them. Why is that? While the technology to connect software running on other servers is there, beyond the standard, e-mail, web browser and rss reader we really haven’t ventured far. We certainly haven’t ventured far enough in terms of creating personal Internet servers that run from your standard GNOME app.

What we have done in the past few years is create a rich interconnected desktop and within the past year personal servers which work over intranets have been added to a few programs. I attribute this to technologies such as D-Bus, HAL and Avahi. When Havoc wrote his manifesto about hardware abstraction it inspired David Zeuthen to write HAL. HAL enabled all sorts of application integration with the hardware on the system yet at its core it simply gathered information from the system and presented it in an easy to grok form that desktop developers found easy to use. Before HAL the same things could be done by grokking sysfs and listening to hotplug events but few apps would do so and even if they did they did it in very limited ways. Avahi is another example of a technology that has turned developers minds into creating apps that are well integrated. Because of Avahi I can discover services on an intranet and a number of GNOME apps can take advantage of it. It is kind of nice to be able to put my laptop on a network and be able to browse my friends music collection.

So what do these technologies have in common? They presented consistent interfaces in a way which GNOME developers were comfortable using. So how do we make GNOME developers comfortable with adding personal services to their applications? One crazy idea is to use an interface in which many GNOME developers are already comfortable using. That interface is D-Bus along with a yet to be created D-Bus to XML-RPC/SOAP gateway which would mostly be transparent. Imagine while creating D-Bus interfaces for the local host to utilize a developer could simply tell the gateway to export a couple of methods over the Internet. In this scenario a developer would be freed from having to figure out yet another technology (assuming they already are using D-Bus) and could concentrate on scope and security issues. The gateway could also be used on the client side to talk with existing web services.

D-Bus really isn’t a ground breaking technology here. It is simply a technology that many people know how to use and provides good integration into the GLib mainloop. Any number of libraries can be written to enable webservices within GNOME. No matter how we do it hopefully someone will step to the plate and enable app developers to start thinking of how they will web enable their apps. It should be a fun ride.

[read this post in: ar de es fr it ja ko pt ru zh-CN ]