Bugs, facts and figures

A long while ago, I contributed to the mozilla plugin in Totem. It worked somewhat, but I kept seeing weird crashes here and there. Unreproduceable crashes, with no clear indication of what’s wrong. Rather than to assume this is related to non-existing issues that I cannot fix and will thus not look at, I decided to have a closer look at the issue, collect facts about the crashes and fix it.

After some research, it appears that mozilla (firefox) unmaps plugins after use and remaps the shared libraries when they’re needed again. That is normal, right? Well, not for me, since this is generally not possible with GObject or glib. The issue is related to type registering and mainloop integration: the Totem mozilla plugin uses dbus-glib for interaction with a separate executable; dbus-glib registers some GTypes, and after a unmap/remap, it will re-register them (because the plugin links to dbus, and dbus is thus reloaded every time the plugin is recreated). However, they already exist in mozilla’s main type register (don’t forget mozilla uses gtk+!), and thus the whole thing collapses. Similarly, it appears dbus-glib does some glib mainloop integration tidbits, and after an unmap of the plugin, the glib-mainloop of mozilla will still call the no-longer existing memory areas in the plugin and this will cause pain and torture.

As a solution, I rewrote the dbus-glib pieces in the plugin to use raw DBus. Nice exercise as for how dbus works, also. The practical consequence of the above is that the mozilla plugin should be a lot more stable in the GNOME 2.14 series. So if you were experiencing odd crashes, regardless of the backend used (Xine or GStreamer), this may well be a good sign for you.

It’s not finished yet. The user experience can be improved a lot, still. I’m currently seeing popups on some sites using multiple media objects embedded in the webpage, telling me that the Xv device is already in use (by the first media object on the page). There’s probably similar issues with the sound device for some people. This needs fixing. Also, performance can definitely be improved, although that may also be related to my crappy download speed…

Contribution facts

It appears Andy misunderstood my comment. I’m not claiming that GStreamer was written by Fluendo. Rather, I’m noticing that most maintainance on GStreamer, nowadays, is done by Fluendo-employed persons. This claim requires data. GStreamer 0.9 core had 86% contributions of Fluendo-employed persons, GStreamer plugins base had 89% contributions from Fluendo-employed persons. The numbers are fairly similar across the other plugin modules. Interestingly, if we count the number of people affiliated with the Nokia 770 project (so this includes the Brazilian Nokia office, Movial, Fluendo and Nokia itself), it gets close to 100% for all modules. As a comparison, the numbers for the 0.8.x GStreamer series are somewhere along the 40%-60%.

What does this mean? It means Fluendo-employed people have been doing pretty much all the work for the currently stable GStreamer series, and they will probably be doing all the maintainance work on it in the near future. Cheers on that, keep up the good work. I hope you guys can fix the issues that I’m seeing, so that I’ll be able to enjoy the recent 0.10 series as much as you guys appear to do.

Script used for those figures is available here, you run it in the directory containing the trimmed ChangeLog of all contributions you want to analyze.

Wishes for 2006

I’ll take my girlfriend to go ice-skating in central park and buy her hot chocolate.

Or, in other words, she saw my homepage (with picture from central park) recently. ;-) .

Almost there

So it seems I’ve successfully finished quarter 1 in gradschool (chemical biology), and quarter 2 (cell signalling) is well underway, and appears to be going well; that is, better than quarter 1. This back-to-school experience has been hitting me a bit, but I think I’m back into it now. Think about it: readings, assignments. Not that much different from having a good job, but a lot more stressful at times where you don’t want to care.

However, if you do care, it gets interesting. Being able to understand the research you’re doing and talk to your peers is important, but sometimes takes an awful lot of time and effort, depending on the subject. And admittedly, neuronal axon growth may seem like an irrelevant detail in the big picture of life, but for me, it’s currently my whole study subject. And a very interesting one, I must say.

My PI (”head of lab”) is a peculiar person, with interesting ways of motivating people. At times, he will tell me that someone else (a “senior” colleague) made a mistake and that it’s my fault since I didn’t correct him/her. At other times, he will suggest new readings to get to know new techniques, and require me to prepare presentations for a next meeting about that subject. His ways appear to work, though, I’m quickly getting into all this. It just eats a lot of time. At my birthday, I regretfully told him I could not finish one of his requested presentations for the next day because I wanted to go out to a bar that night. He looked at me, understanding though disappointed, and we agreed that I would do it in a less formal way, though still that same day…

Some people… :-) .

Around
During thanksgiving, I travelled to Boston with my girlfriend, where we stayed in a hotel and had dinner with some friends of hers from Harvard. People keep telling me how Boston is supposed to be “New York, but smaller and cleaner”. Well, it is cleaner, but that’s not surprise if there’s only ten houses there! I still don’t understand how people can compare the two, Boston is at least a zillion times smaller in all possible aspects. They have good restaurants, though, and the waiters are a lot nicer.

During christmas, I hope to visit DC, for the cultural part of my stay here.

Hacking
So, with all this school- and travel-work, I have had little time to do cool stuff in GNOME. I’ve fixed some small but annoying usability-related bugs in both Totem and the Volume Applet, but nothing big yet.

Related, I noticed that Fluendo released GStreamer 0.10. Interesting release, excited to see the new core. I hope it’s as stable as promised. It’s unfortunate to see that several interesting plugins have not been ported, leading to a huge decrease in media support w.r.t. previous versions. Let’s hope Fluendo will be able to fix that. You don’t want GStreamer to be the “finally stable framework that can still not play my divx” (figure of speech, of course, since I myself ported divx playback almost a year ago).