Wed 16 Aug 2006
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 ]
August 16th, 2006 at 10:29 am
That’s great thinking. I wonder how easily integrated d-bus and avahi are? i mean, if you are talking about exposing d-bus methods to the internet with an xml-rpc bridge, why shouldn’t we do the same via roundez-vous using a dbus-avahi bridge?
“attributed programming” or whatever you want to call it sort of begs for this kind of use-case…
ideal scenario (pseudo code)
@dbus
@webservice
def some_method:
blah lbah
i dunno. i think you’re on the right track as far as where things should be heading.
August 16th, 2006 at 11:11 am
Yes, and some standard interfaces for some generic useful web things. What are those things, I wonder?
August 16th, 2006 at 1:31 pm
Hey John,
I agree that the Linux desktop is in a unique position to make the internet more of a desktop->desktop world, but there are a few hurdles that will be difficult to overcome. Not the least of which is NAT. NAT has this way of making the client/server paradigm in to a consumer/producer paradigm which is not intrinsic to the internet. But, the idea of having a single daemon which exposes certain DBuS interfaces via XML-RPC is very interesting.
Mark.
August 16th, 2006 at 2:00 pm
Ya NAT kind of sucks but there are ways around it plus ipv6 will eventually come (though there still may be hurdles because of security). In any case it is not really an important part of the equation right now. The interesting part is the application interface to enabling these services. The daemon can export them over any manner of transports including jabber.
August 16th, 2006 at 4:10 pm
For office use, Evolution desparately needs write support for iCalendar calendars stored on WebDAV. It’s an easy, convenient way to share calendars in an office. This feature would really help Evolution replace Outlook.