DBus status reprt
Back to DBus Project Page
DBus Status Report
By Mohamed Attar & Man Choi Kwan
If you know what DBus is and how it works skip to What is the DBus project status?
What is DBus?
D-Bus is an implementation of inter-process communication (IPC). It allows applications to connect and send messages via the DBus daemon. The message bus daemon act like a centralized routing system; where applications send messages to a specific application or broadcasts messages as signals (ex. events) via a bus on the DBus daemon.
Where does it fit in desktop integration?
DBus is used in the background operations. Many developers either add patches to existing code to make it work better with something available right now (such as the Hardware Abstraction Layer DBus Interface) or they implement a higher level library to give other developers the ability to code extensions to connect to other applications via DBus (add business logic as an extension to communicate with external application).
What is the DBus project status?
We are lost in two ways. 1) The need for Desktop Integration via DBus in Mozilla, and 2) figuring out how DBus and so and so technologies should work with Mozilla
- There are no clear needs for DBus in Mozilla.
- We have found one patch used to give Mozilla’s Gecko engine awareness of the network connectivity status via DBus via HAL via Linux Kernel’s NetworkManager. This patch was added to the trunk for Firefox 2.
- We have also found a project called DBuzilla which is aimed to implement the DBus specification and protocols as a XPCOM module. This project seems to be abandoned. However, this project was sponsored by Google and Mozilla was not aware of it.
- DBus isn’t meant to be called natively. Higher level libraries are created using the native libraries to make it easier and faster to develop. The problem is there is no Mozilla specific high level library. DBuzilla was meant to do that; Dbuzilla report DBuzilla report. However, there are several other higher level libraries in other technologies that could be used such as Glib. When reading DBuzilla and other DBus related subjects it seems that it might be possible to wrap XPCOM objects around the DBus-Glib library which would make development a lot faster, but we have no understanding what Mozilla wants and if using the DBus-Glib technologies would be acceptable.
What we have done so far?
- Research Desktop Integration needs
- Learn and play with DBus and so and so technologies
- Read a lot of specification and tutorials
- Tried some examples
- Tried various ways of coding
- Learn and play with some Mozilla technologies
- Read a lot about NSPR and trying to figure out how to connect the two or more technologies
- Made some extensions (Mozilla workshop)
- Went through some XPCOM tutorials
- HAL-DBus interface
- Make an extension to expose Mozilla of Network connectivity loss
- Somebody at Novell beat us to it https://bugzilla.mozilla.org/show_bug.cgi?id=312793
- Gnome/KDE application registry lookup
- we also have an idea that create a services to check for file type an preferred application that is cross desktop can be used in KDE and GNOME but this idea is out of the scope since we are trying to integrate Dbus with Mozilla.
- DBus XPCOM
- we also had an idea to create Dbus API wrapper using XPCOM that allow Mozilla components to communicate through D-Bus to have a better Linux Desktop integration. Then we find out that is what Google summer code project Dbuzilla tries to do. Considering if it possible with Glib or some other library.
Where are we going?
The next step is to try some higher level libraries that exist (Glib, DBus-CPP) and wrap them in XPCOM. More importantly, we want to write up a better tutorial and guide for non-Linux gurus to help them understand what DBus is and how to get started.
Ideas, Suggestions & Help
If you find some integration need for your Mozilla projects tell us.
Want to help us write a guide/tutorial (DBus for Dummies)