this looks like a job for... tomorrow!


Congrats to the SUSE Studio team on releasing their awesome service. Their hard work and dedication to usability has made it so easy to create your own Linux distro that even I can do it.

Great job guys!

Now lets clone the Studio team and put them to work on some of our less usable things. (I'm looking at you, OBS!)

The Power of Moore's Law

One of my personal projects has been writing a buildbot that builds Mono on Windows. Although we have an official one on monobuild, it takes about 4.5 hours per build, so it can't build many revisions. Mine doesn't do everything that the official one does yet, like running tests, but it looks promising as far as cutting down on the build time (primarily by not using cygwin).

I run it on an old desktop that was lying around that I converted to a dedicated builder server. Its stats are roughly:
  • Windows Server 2008 (32bit)
  • Pentium IV 2.4ghz
  • 768 MB ram
  • 5400 rpm IDE HD
It builds Mono on Windows with the following times:

Svn update mono, mcs2:25 min
Copy mono and mcs to a fresh directory6:38 min
Build Mono runtime4:38 min
Build 2.0, 3.5 assemblies (101 assemblies)8:01 min
Remove mono/mcs directory1:00 min
Total22:42 min

Not horrible, but it's hard to be satisfied with that knowing I have a spiffy quad core machine and could build most of the managed assemblies in parallel. I had to try it out on my main desktop machine, which is:
  • Windows 7 RC (64bit)
  • Intel Core2 Quad Q6600 (2.4ghz)
  • 4 GB ram
  • 7200 rpm SATA HD
Unfortunately, my build system isn't set up for parallel builds, so I had to write that first. My first step was to simply get it running serially on my desktop. This yielded:

Svn update mono, mcs1:03 min
Copy mono and mcs to a fresh directory4:29 min
Build Mono runtime1:57 min
Build 2.0, 3.5 assemblies (101 assemblies)3:23 min
Remove mono/mcs directory0:25 min
Total11:17 min

I of course expected my desktop to be faster, but it was already completing the build in less than half the time of my server. On top of that, it builds the managed assemblies in 3:23 minutes.

Even with excellent parallelization, there isn't a lot of time to chop off of three and a half minutes. And we know we won't get perfect parallelization due to the bootstrap and the common assemblies that have to be built first that everything depends on (corlib, System, System.Xml, etc.). I think I could maybe cut two minutes off of that with a parallel build.

For now, I have aborted my plan to parallelize my build system. It turns out that Joel is right that sometimes its better to throw money at a problem instead of spending time to optimize it.

Of course, that's also a dangerous idea, because now I look at my copying numbers and want an SSD disk drive. :)

My GTK Pet Peeve

One thing I've never really liked about GNOME is GTK. I like GNOME for its focus on simplicity, however I've never thought it was particularly attractive (no matter the theme).

I especially don't like the large amounts of padding around every object. I get the feeling that having 100px buttons is like giving me safety scissors. Granted, it probably helps people who are just learning how to use a mouse, but at some point we outgrow that and should be given real scissors.

It makes me feel like I'm playing with a toy instead of a real operating system. Of course, this is all very subjective and I'm sure there are just as many people who feel the opposite.

At some point, I was playing around with what *I* would like an application in GNOME to look like and chose Nautilus. Monday I saw David Siegel's blog post about his redesign of Nautilus, and I was inspired to finish mine.

I am definitely not an artist, and I may be the only person who finds this appealing, but I would like Nautilus (and GNOME) to look something more like this:

(just a mockup)

for comparison:

It removes a lot of (IMO) wasted space, while being more visually pleasing. It feels like it's of a higher quality than the current look.

Of course, giving actual artists the ability to easily theme GTK is probably the better route. I can't wait to see what jimmac can do with a fully functioning css based theming system. :)

Audio Killer Feature

Last night I listened to the latest Stack Overflow podcast, since it was about Mono. Personally, I am not a big fan of podcasts or videos, as I find them to be a very inefficient way of learning. It is much quicker to read an article (and reread the sections you want) than to listen to an hour of rambling.

Anyways, the one thing that makes it more tolerable is a feature of Windows Media Player called Fast Playback (they also have Slow Playback). It plays the stream at 1.4x (I think) speed, so less time is wasted.

I have never seen this feature in another media player. Are there any other media players that support this?

Banshee as a Platform

Every time I use YaST's Software Manager, I wonder if it would be better implemented using Banshee. Banshee's interface has been tuned for usability, both on its own, and what it borrows from iTunes. Software management is a naturally scary operation, and using an interface that the user is already familiar with could help reduce user fear.

Of course, it would just be the interface pieces of Banshee in a new app, you wouldn't actually start Banshee for software installation.

Another feature I would like to see taken from iTunes/Banshee is downloading/installing in the background. Once I hit Install, go ahead and download the application in the background, and install it in the background. I can click on the "Downloading/Installing.." menu item if I want to see what's going on. Most of the time, I'd rather be looking at other things to download.

Speaking of looking at other things to download, why not help me find apps I want to install? We have the openSUSE build service chock full of applications for users, but they're all hidden behind a terrible search-only interface. We need to give the user a way to browse applications and find cool things to do on their Linux machines.

App stores are all the rage, as they give users a way to browse and find new apps, guided by category browsing, "front-page" recommendations by editors, and ratings by other users. "Store" may not be the right word for us, as everything is FOSS, but the idea is the same. One key would be to only show things that are user applications. The user isn't interested in finding things like perl or x11 or gstreamer.

On the same topic, I think F-Spot could benefit from a Banshee interface as well. It's already pretty similar, so code sharing would be nice. Are there other apps that could benefit from using an interface that the user is already familiar with? Monsoon? Nautilus?