Present Perfect


Picture Gallery
Present Perfect

Who stole GNOME’s Enter key ?

Filed under: GNOME — Thomas @ 11:23 pm

11:23 pm

If you find it, please bring it back. It would let us fix monstrosity warnings like this one:

WARNING: failed to install schema `/schemas/apps/gnome-sound-recorder/popup-warning-v’ locale `C’: Unable to store a value at key ‘/schemas/apps/gnome-sound-recorder/popup-warning-v’, as the configuration server has no writable databases. There are some common causes of this problem: 1) your configuration path file /etc/gconf/2/path doesn’t contain any databases or wasn’t found 2) somehow we mistakenly created two gconfd processes 3) your operating system is misconfigured so NFS file locking doesn’t work in your home directory or 4) your NFS client machine crashed and didn’t properly notify the server on reboot that file locks should be dropped. If you have two gconfd processes (or had two at the time the second was launched), logging out, killing all copies of gconfd, and logging back in may help. If you have stale locks, remove ~/.gconf*/*lock. Perhaps the problem is that you attempted to use GConf from two machines at once, and ORBit still has its default configuration that prevents remote CORBA connections – put “ORBIIOPIPv4=1” in /etc/orbitrc. As always, check the user.* syslog for details on problems gconfd encountered. There can only be one gconfd per home directory, and it must own a lockfile in ~/.gconfd and also lockfiles in individual storage locations such as ~/.gconf


Filed under: GNOME,GStreamer,Hacking — Thomas @ 12:24 pm

12:24 pm

I find it highly ironic that Ronald still complains about DVD menu support in GStreamer. I remember going out on a limb discussing with the release team the state of DVD playback at the end of the 0.8 cycle when Ronald did a lot of work to get it somewhat working. In retrospect I think that was a huge mistake – DVD support was only in its infancy, it wasn’t very synchronized, it only ever worked on one out of five DVD’s. Live and learn. Also, it was at the same time as Ronald was moving to the US for his studies, and it wasn’t clear at the time if he was going to maintain and improve support. It was both the release team’s and my worry that we would be announcing support for DVD playback in Totem with no clear maintenance path. Today it is obvious that this worry was justified – Ronald never touched DVD code in GStreamer since then.

I still have a huge amount of respect for Ronald as a coder. But not finishing a feature you introduced in, 0.8, and not porting it to 0.10, and then complaining about the team you have left not cleaning up your dirty work, takes chutzpah. Meanwhile, my hope is on Tim Philipp-Müller (author of Thoggen and GStreamer bugmaster) and Martin Soto (author of seamless) to work on the open-but-patent-encumbered version of DVD playback.

We’d love to have Ronald back on the team, picking up the thread where he left it in 0.8, and finish DVD support in the “free-but-not-free” version of the GStreamer stack. He’d have a much easier time doing it too, compared to the monstrous 0.8 hacks we needed to get it even somewhat working. As I’m writing this Jan is showing off his DVD player to Christian. It’s already heaps better than the 0.8 DVD support was – it follows menu items immediately, without hanging on still frames, or taking five seconds to know that it has entered a new path on the DVD. It’s not ready yet for release but it’s progressing at a steady pace now that we’re keeping Jan on-task. I’m sure a hacker like Ronald would have no problems implementing the necessary support for menu’s in the 0.10 version of GStreamer. How’s about it, Ronald ? Do us all a favour, yourself included, and finish the work you started before you left to the US.

Volume control in GNOME

Filed under: GNOME — Thomas @ 1:18 pm

1:18 pm

Ronald asked for some input on the volume applet, and since Seth gave him some advice that I consider bad, I’m posting my thoughts here so I don’t have to repeat myself too often.

My personal interpretation of usability is “do the right thing for the user automatically, and make other functionality as easily possible as can be without compromising the first goal.” This might be a wrong interpretation, so clue me in if it is. But to me, this means that it’s the software’s/developer’s responsibility of making the user do the right thing.

Now, the right thing for usability is, for most of GNOME, UI-driven, but sometimes also task-driven. In the case of the mixer applet, there’s another factor that comes into play, and that is “how audio works”.

Seth argues that there should be a slider that controls all of the inputs *at the same time*. While this might be nice UI-wise, it is the perfect way of getting really bad audio. And that’s because it conflicts with common sense principles in audio.

Let’s start with a ground rule: at any time you should only activate/turn up the volume for an input that’s actually usefully contributing to the signal. This means you shouldn’t have the CD volume up if you don’t have a CD playing. The reason for this is simple: it adds noise. It decreases the quality of your sound. Imagine that I have my phone line jacked into my SB Live, and the phone volume would be on all the time – it wouldn’t take me long to throw out my PC or switch to a sensible solution instead.

A second working principle is that the “master” volume is in fact quite different from all the others, so it’s a bad idea to change master *by the same amount* as all others that are mixed into master. The practice is simple – all levels beside master or to be set so that a) all inputs sound about equally loud for normal use and b) while respecting (a), each of them is set as high as possible without actually going into distortion. After that, you can use your “master” volume control to control your output volume for everything combined at any given time.

A third rule, quite succintly parodied in Spinal Tap, is: don’t turn the volume up all the way. This is a very difficult principle to get across to ANY person that doesn’t really know how audio works. I cannot count all of the times anymore that I went to some party or to someone’s home and the volume is cranked up ALL THE WAY because otherwise it’s not loud enough. At some point, turning the volume knob only gives you more distortion, making the output sound louder indeed, but also makes it suck incredibly for people that actually like listening to music. You’ll quickly notice that turning it back a few makes it sound a lot more pleasant without making it that much more silent.

The principle here is simple: If you can’t get it loud enough, buy new equipment. There is really nothing else you can do here.

Now, I hope I convinced you that having “one slider changing all others at the same time” is a bad idea. And I’m not saying that the solution is that the user should know all these rules. But I am saying that anyone that writes the code for this, or offers accessibility advise on this, is required to understand these rules in order to come up with a good UI.

So I’ll offer my suggestions on how I think this should translate to the platform and applications.

a) The platform should have a wizard that helps the user set decent volume levels for all the input tracks. The goal is to make sure that all the input tracks have relatively the same volume level for normal inputs without distorting.
Technically, this can be implemented by having the software monitor the level by monitoring the master output level, if the soundcard allows you to. If not, the user should do it by ear. The user should provide some audio on each of the sources you want to calibrate; ie. play a CD, talk into the microphone, … The software should mute/unmute each track as the wizard switches between them, allowing the user to switch between all of them until the levels are all more or less the same.

If the level controls are linear (I’m not sure if this is true for most soundcards, but it would make sense if they were), then the thing you want to store in your backend is their relative positions towards eachother. This way, you can nudge them all up or down a little if you notice distortion in either of them.

b) When this is done, the mixer applet should only export the master volume level. It would be nice if you could mark a distortion threshold somehow, so that the mixer applet makes it harder to cross it. Typically, the sliders just allow you to go from 0 to 100, where 100 means “sounds like crap” and 50 already means “you can only hear this if you’re a ten day old baby”.

c) applications should unmute the input controls they actually produce signal on, and remute them when they stop, and nobody else is using it. So the information on what application is using what control should be shared.
In practice, this means that the CD playback level is muted until an application starts up that plays CD’s through the cable connecting your sound card to to the CD player. When it exits, and it is the last CD using application to exit, it should mute it again. Preferably this would be done through library hooks, of course. And, the volume control preference program would also be a “user” of this track if the user decided to override global settings and wants to hear the CD always.
Same goes for your phone application, or your music player.

So, this in my opinion the correct way to translate the technical domain of “how it works on the system level” to “how you give the best user experience”. When all these parts are implemented correctly, the user experience will be that it “just works” and that “it doesn’t sound like crap”.

Codewise, it would mean:
a) there needs to be a wizard to set up sound levels correctly
b) there needs to be a daemon tracking the state of applications and their use of mixer channels; or some other way to exchange this information

I’m interested in what people think about this, and if there’s enough interest to actually make this happen for GNOME 2.10 ?


Filed under: GNOME — Thomas @ 10:36 pm

10:36 pm

Another year, another GUADEC. I’ll post more on stuff later when I’m awake again, because I’m completely wasted. It feels nice to have the support of a community behind you, thanks to all you people.

The one thing I wanted to mention right now, lest I forget, is that I kept thinking about Bruce Perens’ heckling Dr. Edgar Villanueva Núnez. While Bruce’s argument sounded reasonable, something didn’t gel with me, and I couldn’t put it under words.

When getting off of the plane in Amsterdam I noticed a guy carrying a really big carton box with Peru-Lima on the side, looking eerily familiar. So I stepped up to him and polished up my best Spanish to ask him about it, since at the talk his explanation might not have been very comprehensible with the ad-hoc translation, and I was very tired myself to follow.

Talking to him I realized what I felt was wrong with Bruce’s attitude. Basically, Bruce’s argument revolved around the idea that there should not be discriminating laws that favour open source, because it turns us into the bad guys. A choice should be made on technical excellence.

But you know, that argument is completely not relevant. Dr. Villanueva’s mission statement is not to put free software on the map, or favour it, or have it prosper. People jumped on him making him a hero to the cause – a fact which he himself seemed most of all surprised at – and then he gets attacked by another hero.

What Dr. Villanueva is trying to do is to enforce laws to have free software because he wants his people to have the possibility of getting good software that doesn’t have to cost much and they can look at and change. He’s doing it for his people, not for the free software community. And really, wasn’t that the point of free software in the first place ?
Sure, Bruce makes a good point, and I agree with him.

But Dr. Villanueva is not a free software hacker. He’s a statesman trying to do right by his people. And to see a politician honestly trying to do right by his people is a refreshing sight. And on top, he seems like a very bright man and he took out the time to answer someone he doesn’t even know in a private conversation and explain his reasoning. I hope Bruce after the talk yesterday did the same thing.

For those wondering, recorded Ogg streams will be online sometime soon. The hard disk is in my backpack and there’s some basic splicing to do, and then they’ll be out there.

« Previous Page