D-Bus and other Linux desktop integration improvements

From CDOT Wiki
Revision as of 19:28, 13 December 2006 by Mckwan (talk | contribs) (Project Contributor(s))
Jump to: navigation, search

Back To Project List

Project Name

D-Bus and other Linux desktop integration improvements

Project Description

Various Linux distributors have patches in their Firefox packages that add bits and pieces of Linux integration, and we'd like to see even more available. One particular area of interest is controlling the browser via d-bus, and exposing dbus events to the application and extensions.

Introduction to D-Bus:

Currently on the Linux desktop, there is a void in desktop application integration. Many solutions are used such as CORBA, DCOP, etc…, but neither satisfies the new vision for an integrated Linux desktop.

D-Bus is relatively new; however, it has grown in popularity very quickly. The KDE project has announced it will replace DCOP with D-BUS in KDE version 4. Gnome has also made developments to include the D-Bus technology. Many corporations including Redhat and Novell are interested in this new technology.

D-Bus is meant to replace CORBA and DCOP, and provides a RPC communication technology. It is developed in the C language as an IPC process, but has high level language bindings for C++, QT, Java, Python, etc… Most Linux distributions already include a running D-Bus library. There is also a D-Bus port for Windows under development.

Possible Ideas

D-Bus can be integrated in two ways. One is to add a patch in code to use D-Bus functions that might be relative. Mozilla already has a patch that allows notifications regarding Network Connectivity. The other is to add some framework that allows applications to communicate with each other or with the system.

There is currently a project called DBuzzilla which has done a good job implementing a module which allows communication between applications and the system. The author has mentioned he had some personal issues, and has not touched the project since the summer of 2006. He said he will continue to maintain his project.

There are some problems with the previous project. It is maintained by one person, with some or none users. It is not complete, but is a good start. If this project is to be continued and maintained by Seneca students, it is probably better to fork or start a new that is updated to the latest version of D-Bus. It is unclear if the author of DBuzilla is willing to work in an open development manner.

This Project

The goal of this project is to create a module that will expose the D-Bus technology to Mozilla technologies. This will work by coding a set of libraries and processes in XPCOM and D-Bus. The learning curve in this project is long (assuming you do not know XPCOM). You should also be or become familiar with Linux.

You will be coding in the low level C library of D-Bus as per the recommendation of Havoc Pennington (D-Bus project leader). The D-Bus library C functions will be wrapped around your C++ objects. Depending on the development route chosen, you will either using the Glib library or the NSPR library to handle threads. NSPR must be used for the data type bindings. You will also code using XPCOM to expose the API to other Mozilla components.

The module must include the basic objects, data types, parsers, client/server processes, etc….

Considerations

D-Bus has recently frozen the API for version 1.0. It is unclear if the DBuzilla project has had any updates with this new version or if of the design will be affected. Documentation doesn't always exist for the technologies being used. When learning D-Bus, you may have to play with a function to understand its behaviour.

Important Links

Project Leader(s)

Project Leader: Mohamed Attar, Man Choi Kwan

Please contact Mohamed if you are interested in joining this project. Make sure you have done the following first:

  1. Be sure to pick out your favourite coffee mug.
  2. Find some music that will keep you up all night (trance, happy hardcore, etc... check out www.di.fm).
  3. TBA

Project Contributor(s)

Tom Aratyn - Gave us a lecture on XPCOM and helped us figure our where we should be looking for D-Bus/XPCOM integration.

Dave - Has given us direction and ideas to start the project.

Project Details

  • Shaver passed along this link to DBuzilla, which would be good to investigate.

Suggestions & Ideas

Project News

Status

November 13, 2006

Got some info from freedesktop.org mailing list, can be found here.

November 9th, 2006

DBus Status Report

November 7th, 2006

Per request of David Humphrey the DBuzilla Report.

We just got a response from the author of DBuzilla. I have sent another email asking him what the status of DBuzilla is and what he plans to do with it. Asked if he is maintaining it. Hope to get a response soon. =)

November 1st, 2006

Man and I (Mohamed) are kind of lost. We wanted to write an extension to expose a HAL signal via DBus for network connectivity updates to Mozilla. We found somebody from Novell already did that and its in the trunk. We've talked to Dave about our problem. He recommended we write up a report about what DBuzilla does, supports, whats missing, etc... and he'll talk to the Mozilla guys to see if that can be used for any purposes. We'll also ask around the GNOME and Freedesktop groups and see if they have some ideas about DBus integration with Mozilla.

October 30, 2006

We're waiting for a response from Christophe Nowicki about his project. Man thinks its best to write a patch and help improve the DBuzilla project.

We're still working on our extension to become familiar with the technologies, and we'll setup and try DBuzilla.

October 29, 2006

A few things to update us on.

Over the break I took that XUL and Firefox Extensions workshop, and learned how to make a basic extension.

Man and I have continued to play with extensions, and are trying to learn how to make XPCOM objects.

We've both decided to use Anjuta to start. We got our systems setup, built a few dbus examples and continued to read the specification.

We've decided to start our project with an extension that will give firefox some better awareness of the network connectivity. The progress has been slower than we expected by a long shot, but we figured if we can get something small working then we can build something more usable off that.

We've checked out the DBuzilla project and that looks great. I hope to steal some code from there. I've contacted Christophe Nowicki, the DBuzilla author, about his project. The project hasn't been update for about 2 months, so I was wondering if he is currently working on that project or if he has left it for now.

October 8, 2006

I finally got my laptop working with Ubuntu and was able to fix my resolution issue. Thanks to the Linux club and my friend Stewart from work for helping me fix that.

Since then I've been trying to compile some examples of dbus.

I had a lot of trouble because gcc coudn't find where dbus.h and other headers files were located, and no tutorial I found actually showed the command and flags used to compile it.

Thanks to this mailing list question I was able to figure out the paths and flags (with a few changes for my system).

Its not much progress, but its a step.

October 6, 2006

Man continued looking through codes in DBuzilla to further understand the existing code.

October 4, 2006

Try to install XULRunner with no successes. Ask Michael Lau for help, well try again later.

September 27th, 2006

Man and Mohamed are setting up a server to compile our work on. We're reading and playing around with some D-Bus client/server stuff before we try to find where it fits in Mozilla. Slow start so far. =(

September 15th, 2006

Today Man Choi Kwan and Mohamed Attar joined this project. We're just getting introduced to this topic and will be doing some research over the weekend.

To Do:

  • Ensure all group members have a machine they can run linux on with X11.
  • Research on D-Bus. Get some code and research to share with the group.
  • Find some Mozilla/Linux Gurus to bother. =P