October 2005


It seems over time I have become the defacto maintainer of D-Bus. Not because I’m particularly smart or wanted the task but because other maintainers saw their time pulled away from the project. As the story goes I needed a release of the 0.3x series and Joe, who was maintaining the 0.2x releases at the time was busy so I ended up doing the first upstream release of 0.30 and ever since have found myself in the position of pushing the project towards 1.0.

As it is we get closer every day. With the last major ABI changing TODO release being reviewed things are looking pretty good. After this round of patches gets in we will most likely skip 0.51 and move directly to 0.90. As I have said in the past it is in our best interests to get D-Bus API/ABI stable and to be able to support the library as quick as possible.

This also means I have no qualms about being the bad guy and saying a big resounding NO to any code, no matter how simple it is, that does not help us get to 1.0. The only way a feature will get in is if it is absolutely necessary. Nine out of ten times a feature can be implemented above the bus and doesn’t need to be part of the codebase. If it does it can get in after 1.0 but I challenge people to look at other avenues before coming to that conclusion. Did you know that you can talk to applications directly without getting the bus involved?

I don’t like to say no to people. They are usually passionate about what they believe to be a needed feature but at this point in the game I can’t come down and explain every bit of reasoning for not allowing it. The question that needs to be asked is will this get us to 1.0? Answer that and you have your answer to if it will be accepted or not.

This doesn’t quite apply to bindings as they still need some work and will have a tiny bit more leeway if they want to be considered for the 1.0 launch. For instance if there is a feature in the bus that is not mapped yet it should be able to be added.

Havoc had some notes on what really needs to be looked at:

Something we should consider for 1.0 also is getting the basic dbus tutorial written out, and cleaning up the doxygen warnings about any missing or broken reference docs, maybe glancing over all the doxygen output for silliness. The most important docs task is probably just a “hello world” example using each of the working bindings showing the right way to talk to other apps in a desktop session.

Should also look over:
http://dbus.freedesktop.org/doc/api/html/todo.html
(well, that says it was generated Aug 2, so a newer version)

Again, I thank everyone who is helping out or has helped out in the past. I don’t mean to be harsh but too many people are depending on a stable D-Bus release for us to lose focus of that goal.

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

It has been decided and I will be skiing at the Val Thorens resort in France around the New Years. Ski in Europe - Scratch that one off the TODO list.

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

I am sure Thomas is just venting his fustration with the state of wireless the same way we vent about kernel wireless modules being dismal. I don’t think it is FUD, the wireless story on Linux does suck but it is getting better thanks to you and Dan and everyone else who does contribute. Hey there are even times when I want to vent my fustrations on gstreamer :-)

A couple of hurdles to NetworkManager need to be addressed such as getting in the new session code in so it will be easier to start nm-applet automagicly. The wireless story won’t get better until drivers are better and manufactures start releasing there specs. I can say Intel has been a big help here and their wireless hardware seems to work the best because of it. Too bad they don’t sell PCMCIA cards and a lot of laptops whitelist mini-pci cards.

Also better documentation and visibility of the NetworkManager web page would help. Ohh, the web page comes up as the first hit for NetworkManager in google. That wasn’t always the case.

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

All the tests work in the test directory but I am still hitting an assert in the SHA1 connection tests

10169: assertion failed “d->n_services_owned >= 0″ file “connection.c” line 1237 function bus_connection_remove_owned_service

It looks like I am forgetting to own a service in one of the states. Or it could be with the new states being added that the test no longer takes them all into account and the tests are wrong. I much more inclined to say it is a bug in my code since I fixed a similar problem earlier today.

Anyway, it looks like I got memory management worked out as the tests are no longer failing on unfreed memory, not that those checks were ever foolproof. So tomorrow it will be all about fixing this bug and others that pop up and then looking to see if I need to write a couple of test cases to iterate over all the states and see if the bus stays well behaved. Then I can submit this hunk of code for review.

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

My last planned major patch for D-Bus, fixing up the RequestName semantics, is written and compiles. I’m still working out some memory management bugs but I am pretty happy with it. We shall see what other people think once it passes the make check and I submit it for patch review. After this it is all about merging other people’s patches and then doing a release.

Speaking of releases, I am pushing this one back a week so Robert McQueen has time to get in his boatload of changes to the Python bindings in. After that release I am giving a short period of time where features can be proposed with patches but then we will go into a feature freeze and concentrate on wringing out all the bugs. This sort of grace period is just in case there is something glaring we missed that would be important for 1.0 and could not wait until after.

WARNING - The next release will break some applications especially if you use the DBUS_NAME_PROHIBIT_REPLACE_FLAG since it is being supplemented with the DBUS_NAME_ALLOW_REPLACE_FLAG so we go the safe route and deny by default. I am not sure if I should add the prohibit flag as a deprecated flag but what is the point since we are removing all deprecated features right before 1.0.

A point of contention with me is the GLib bindings. They really need some love. I’ve been fixing bugs here and there as I find them but it would be really nice if someone who uses them extensively would step up. That is not to say they are not good, they just need someone actively polishing them. The Python bindings I am not worried about because there is an active community sending patches and bug reports. The Qt4 bindings I haven’t tried at all but I hear they are pretty good. This all reminds me if you have a D-Bus binding in a usable state please let me know so I can set up a page on the wiki to point people to the right place.

It is going to be a bit sad for me once 1.0 hits. I’ll still be doing the releases but as far as I am concerned for the most part it will be done and put into maintenance mode. We don’t want to bloat D-Bus, it is just plumbing. The interesting bits should be developed on top of it. A stable boring D-Bus is of much more value than a moving target that does everything under the sun. This is not to say development will stop. Requirements change and code rots, but D-Bus won’t be the moving target it has been in the past.

As I was saying it is going to be sad because I really enjoy hacking on it. I can count my time on it as easily being the most rewarding project I have ever worked on with some of the smartest people I have ever had a pleasure to work with contributing to it. It has also been the best organized and least controversial project I have ever worked on. I guess I can attribute most of that to Havoc’s guidance of the project. He has the uncanny ability to disperse controversy and get people focused on the important aspects.

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

With the weather being really bad and me having acute bronchitis all I can say is thank you for dextromethorphan.

So as I sit doing relatively nothing, bored out of my mind, I am lifted by the fact that Loveland in Colorado is opened for skiing. My adopted mountain for the season Killington, the first to open on the east coast, will do so next month around the 12th. The season is almost upon us.

On top of all that I got news from my good friend Helena that she and her friends are looking at resorts in northern Italy for a trip around January. I haven’t seen her in five years since I went to visit her in Brussels after I had finished up school in London. I’m a bit worried that my skiing skills won’t hold water to her friends. I’m pretty good but we are talking about a bunch of people who took a week of vacation to learn kite surfing and then went out and bought the equipment so they could do it at home. These are hard core extreme sports enthusiasts. They are even going out and getting data on the resorts for the past 12 years and figuring out if Italy will have good snow by January. If not they plan on finding a resort more up north. I’m debating on if I should buy an inexpensive pair of twin tip ski’s as I am unsure if my 99cm skiboards will hold up. Luckly the Boston Globe SnowSports Expo will be happening on November 17th.

D-Bus

I’m looking to get a bunch of patches in next week and do a release. Along with this release I will post a schedule on how much time I think it will take to get to 1.0. Look to see the 0.90 release happening after this next release.

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

2 AM and I’m still awake, writing a song
If I get it all down on paper, its no longer
inside of me, threatening the life they belong to
And i feel like I’m naked in front of the crowd
Cause these words are my diary, screaming out loud
And I know that you’ll use them, however you want to


excerpt from Breathe (2 AM) by Anna Nalick

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

It seems that the company Xara is going to release their Xara Xtreme product under the GPL. What strikes me as really cool about this is that the company has stated in their FAQ that they want to work with Inkscape developers where possible. It is always nice when companies release their code under an OSI license. It is even nicer when they go out of their way to work with the community and not just try to become the dominate player in their selected field (in this case vector drawing tools). Hopefully the projects can feed off of each other and perhaps end up combining their talents to create a great tool for the FOSS desktop.

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

The Boston Gnome Summit ended today. It was a lot of fun and I was able to talk with the people I needed to talk to. I didn’t blog much about it because for some reason my laptop couldn’t get on the wireless network at the Stata Center.

David Zuethen and I talked to Kevin Ottens, a KDE hacker working on HAL integration. The specific goal was to find out where we could team up to further make HAL a common solution for the Unix desktop. The long term goal is to forge a culture of sharing between our communities building on the success already established by freedesktop.org. It is all about collaboration where it makes sense and competition where it pushes each camp to innovate. In this respect it was really nice to get to know Kevin face to face. Although many people who are not in the trenches may see GNOME and KDE as two bitter rivals I do believe most developers hold a great deal of respect for those in the other camp. At the end of the day it is just a bunch of smart guys trying to solve a similar problem from different directions and sometimes they end up meeting in the middle.

I also had the great pleasure of holding a D-Bus BOF. There are really awesome people helping out and a lot of constructive feedback came out of the BOF. Versioning of interfaces will be added and I was convinced to allow optional type signatures on when exporting methods and signals in the Python bindings. Thing look like they are moving smoothly as we work towards 1.0.

I got a chance to meet Christian Hammond and sit down with him and Rodrigo to discuss my work on libnotify. We are going to put it in his SVN server soon and propose it for inclusion in gnome 2.14. This is a simple technology that has the potential to add some nice little polish to the desktop but we all agreed it has potential for abuse by desktop components. Along with the code we also want to develop and propose a usage guideline for inclusion in the HIG.

Gnome-session was an interesting BOF. While our work on desktop services was well received it is not clear whether D-Bus is needed here. Mark McLoughlin developed a simpler concept working off of the desktop-services design but instead doing simple exec’s instead of using D-Bus activation. While we would lose the ability to define granularity in what it means for a service to be started I am more apt to jump on the simpler solution. That is provided we won’t have to jump to a D-Bus solution sometime down the road. The current plan is to benchmark each solution and discuss further. Either way we go it looks like we will be able to fix a lot of problems with the current system.

Thanks to Jeroen Zwartepoorte and Mark Drago for being great guests. It was fun hanging out with you guys and everyone else at the Summit. Until next year.

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

I’m halfway done with the Python binding introspection module. It parses the data and produces a hash of method’s input signatures. It throws away the rest because in Python, except for the values it is sending none of the other data is all that useful. What is left is to use that data to marshal the parameters when making a call.

After that is done I think the bindings will be good enough to go into a partial feature freeze. I still want to get a generic main loop which I will have code for in a form of an old dispatch and block patch Havoc wrote for doing quick mainloops in libdbus itself. I just need to make it apply to the current sources. It is sort of analogous, though not exact, to using getchar() rather than being a real mainloop. We block for input (or output), and when it is recived it is dispatched. It makes it easy for application that just handle D-Bus calls however most apps should still be using the GLib integration (or Qt if I ever get a patch).

As for the main source there is one more major ABI change to do which is revamping how RequestName works. Hopefully I can get to that (or someone sends me a patch) during the Boston Summit.

Until then, peace -

J5 Soul Grind

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

Next Page »