Photo of Ben Collins

Ben Collins

Interviewed: November 2006

Bio

IRC Nickname: BenC
Location: Virginia, USA
Age: 34
Profession: Kernel Hacker
Blog: ben-collins.blogspot.com
Website: www.phunnypharm.org

Ubuntu Stuff

In what way are you involved in Ubuntu?

I maintain Ubuntu's Linux kernel.

How much time do you spend working on Ubuntu?

I try not to keep count. Way more than I should.

How and when did you get involved in Ubuntu?

I started working for Ubuntu/Canonical a little over a year ago (just before breezy release). This was about the same time I started using Ubuntu. I had several friends already working for Canonical, and was contacted by one of them in regards to the kernel position (Fabio M. Di Nitto, thanks!).

Are you being paid to work on Ubuntu?

Yes.

What are you working on for feisty?

In regards to the kernel, I'm working to improve our hardware support and stability. We're finally ramping up our kernel team, and I'm hoping this gives me more time to work on bugs and new features.

What feature would you like to see/improve in Ubuntu?

I'd like to see a better GUI (actually any GUI, since none exists) for device driver management.

What is involved in packaging and looking after the Linux kernel for a distribution?

It's a huge undertaking. Most of my time is spent triaging bug reports, gathering information about crashes, and trying to debug those to find suitable fixes.

My work day usually goes something like this:

To what extent is there collaboration between the kernel maintainers in different distributions?

The kernel is very distribution specific. Different distributions have different policies on what they do with their kernel. Some distributions will remain as close to stock as possible, even with known bugs, while others are willing to integrate large patches, changing lots of core functionality, varying greatly from stock kernels. Also, distributions have different takes on whether they support drivers in their kernels that are not in stock kernels. This could be proprietary drivers and firmware, or GPL drivers that are not yet integrated in the stock kernel. So while I try to make Ubuntu's kernel as available as possible for other distributions to use, it's very doubtful that our policies will closely coincide with others. One area where we do overlap and collaborate is in kernel security vulnerabilities. Debian and Ubuntu have a common subversion repo to track our outstanding issues, and share patches.

To most people the kernel is almost a black box, their hardware either works or doesn't. How do you track down problems in it or decide if it is one of the thousands of possible programs misbehaving?

Generally it's very easy to tell if a bug is kernel related or not. True, with the huge advances and abstractions that have shown up as a result of better desktop environments (hal, udev, etc), users can have a hard time making this distinction themselves, but the developers who work on software that directly interacts with kernel will know if a bug filed on their package is in fact a kernel bug or not. As for fixing problems, 9 times out of 10, a bug one of our users finds is already fixed somewhere else, whether it's another distro, or in a newer kernel version.

In what way can choices made in the kernel implementation affect the rest of the distribution development?

There's a few ways this can create problems. For instance, as distributions start moving away from IDE drivers and to PATA drivers, users' devices will change names (e.g. /dev/hda to /dev/sda). This has forced quite a bit of development on our side to ensure that this migration goes smoothly, especially considering that we support in place upgrades from one release to the next. In general, however, there's usually not much for the kernel team to worry about while in development. It's rare that the kernel/user-space API changes, and when it does, it's usually known about well enough in advance that it doesn't cause problems.

How important do you think back-porting kernel drivers and things like suspend2 for LTS versions are?

Back-porting drivers for Dapper LTS is very important. We have a process where we are testing these patches initially in proposed-updates, in the hopes that they eventually move to stable point releases. The only patches really being considered are ones that could keep people from using LTS at all (new storage and network drivers for example). Things like suspend2 will never make it into an LTS update. While fixing suspend/hibernate support is at the top of our list, it does not prevent people from "using" Ubuntu. It's very tricky to weigh the pros and cons of patches, and not easy explaining this to users. Most just say "toss it in, it works for me", but fail to realize that the kernel is a very intricate bit of code, where even the smallest patch has the potential to regress the kernel on a large portion of machines, even if it works perfect for them. We've been bitten by harmless looking patches in the past, so we've tightened the flow of patches going in.

What are your plans for developing a Device Manager?

First I have to get the spec done and approved :) Aside from that, I have started work on it. I plan to push my tree into launchpad for public consumption soon. For now, it currently will show driver information, like author, description, and module params and current values. What I still have to work out is how to manage all this information so user-space makes intelligent use of it, like udev and initramfs-tools integration. There are also some limitations in the kernel itself, which prevent this from being implemented like I want it to be. I'll be working with upstream kernel developers to iron out these details and providing patches that will hopefully be included in stock kernels.

What are your views on binary firmware and drivers with no source code being used in the Ubuntu kernels?

My personal view is we should only be using free drivers. I have a strong dislike for hardware vendors that don't give proper support to people who purchase their products. Lack of specs is almost a sure way of locking people into using an operating system they may not want to use. However, my practical view is that as of now they are a necessary evil. Users just getting into Linux are uninformed about these issues. It's easy to just leave those users without proper hardware support, and tell them to buy something else, but that doesn't serve us at all. Those users would probably never switch to Ubuntu, or Linux in general, given that view. The approach that Ubuntu has decided to take, and that I agree with, is to make the user's system work as well as possible out-of-the-box, but to educate them about the problems. At the Ubuntu Developer Summit in Mountain View, we worked on a spec for just this issue, and as a matter of fact, devoted discussions over the period of the week to it. How do we balance our use of proprietary drivers and firmware, with our free software ideals? Our solution is to inform users that their system is using such drivers, and to point them to details about the pros and cons of this. We're hoping to see two results:

  1. Users will become more informed, and hopefully make better decisions on their next hardware purchase, while still being able to start using Linux without losing functionality.
  2. Hardware vendors that fall in this category will begin to see this trend as detrimental to their image, and their bottom line, especially when we are suggesting that their customers buy hardware from their competition (e.g. don't buy nVidia/ATI, buy Intel graphics). We're hoping that this, along with pressure from the rest of the community will send the right message to these vendors, while still turning users on to Ubuntu.

Computer Stuff

Do you contribute to FLOSS (Free/Libre & Open Source Software) in any other ways?

Not as much as I used to. I've been doing free software related things for about 8 years (back when I started with Debian). Two projects I have are sXid, and libugci. While sXid isn't really maintained anymore, it still serves a lot of folks. The libugci project was developed from my interest in xMAME, building my own arcade cabinet (http://www.phunnypharm.org/~bcollins/). I used to be fairly involved in Linux1394, but that work has also slowed down to an unnoticeable crawl. Most of my time now is spent on Ubuntu kernel work.

Which window manager/desktop environment do you use and what do you like about it?

Up until I started working with Ubuntu, I never used X except to use firefox. I was a console junky. 12 VT's was my workflow, with vim and mutt. Even for web browsing, I prefered links over firefox. Once I started working for Canonical, I felt it was time to give X a try again, and found that I could actually make use of a graphical environment, something that wasn't true back when I started in Linux. Mainly I did this to make sure I stayed in the same environment that the users I was supporting were in. So it went from mutt to evolution, and VT console's to gnome-terminals. I still use vim :)

What programs do you use daily?

My session includes:

Desktop 1: Firefox, xChat-gnome, GAIM
Desktop 2: Evolution
Desktop 3: 4 gnome-terminals
Desktop 4: 4 gnome-terminals

My most used program: vim

What does your computer area look like?

Whoa. Anyone who knows me will tell you I'm a hardware whore, so I'll truncate this list to just the machines that stay powered on :) All systems are running Ubuntu, except where noted.

Build systems (kernel compiles and testing):


Misc (desktop, etc):
Hitech Rack Magnify Hitech Security Magnify Guard Cow Magnify

The photo probaby needs some explanation. I get a lot of flack about this from co-workers :) Yes, my primary systems are hosted in a barn. I live on a farm, surrounded by cow pastures (not my cows). The barn provides the best ventilation and noise reduction. Not only that, but it's surrounded by a high voltage live stock electric fence and cows. I can't think of a better security system than sending a would-be thief into cardiac arrest, or having them trampled by Lucky, the 1-ton bull :)

Personal Stuff

Where were you born/grew up?

Born, raised, and still living in Virginia, USA. I've never lived more than 60 miles from where I was born.

What memories do you have of growing up?

I remember this hot teacher I had in 4th grade...wait, you probably want something computer related, right? Anyway, I grew up around the time of the technology boom. My computer interest started with an Atari 400, and soon moved to an Apple //e. One thing I remember about this was getting in trouble at school and having to write a sentence about 100 times. Instead, I went home and wrote a BASIC program that printed the sentence 100 times, complete with incremental numbering (a small feat by today's standards, but was way cool back then). Teacher was none the wiser of my short cut. You wouldn't be able to get away with this today. Wasn't long before we upgraded to a Mac Plus. The things I have the best memories of is figuring out how these machines all worked. I rarely played games, and mostly took them apart and did a lot of programming. With my Apple //e, I built a plotter out of some old DC motors and stuff from the hardware store, and interfaced it through the printer port. Never wrote a proper printer driver, but I could control it programatically. I also built a light pen, and actually did make use of that in some programs. This was my first taste of hardware level programming.

Married, partner or up for adoption?

Married for almost 12 years.

Do you have any children or pets?

Three boys, 10, 6 and 2 years old. One dog. My wife will tell you she has 4 kids, though. I don't think I've grown up yet :)

Where do you recommend anyone visiting your country sees?

There's so many great places, it's hard to point at just one. If you have the heart of child (like me), you have to go to Disney World. One of my favorite places to go is a drive down the Blue Ridge Parkway, through the Apalachian Mountains, during fall. It's very scenic.

Favourite place to go on holiday?

Camping, just about anywhere.

What are you passionate about?

One of my favorite pastimes is poker. Some people see this as strictly gambling, but I play it for different reasons. For one, poker is a very social game. I love interacting with people, and playing games of wit and strategy. Poker requires making educated assumptions based on very little information, and usually on the smallest of details that may need to be recalled from hours prior to the decision. It also requires skills in math, figuring odds, and quickly calculating probabilities. I love studying the game. It's one of those things you never master, but have lots of fun trying to.

What does success mean to you?

Success to me now is very different than what it used to mean to me. My only guage is my kids. I want them to be proud to say I'm their Dad. If I've succeeded in their eyes, then I'm happy.

Who do you most admire?

This might sound kind of typical, but I really admire Jobs and Wozniak. They were a rare combination of innovation and the foresight to bring it to the masses. No matter what you may think of one or the other, Apple most likely wouldn't have gotten off the ground with out both of them together. Most of my career I've been hoping to be a part of something as great as that. Probably one of those things you don't realize while it's happening...maybe I'm part of it right now :)

Favourite quote?

Random quote from a friend of mine on why girls don't have hair on their butts: "It's not in their hygene."

Favourite food?

Anything you can cook on a grill. Doesn't matter if it's hotdogs, hamburgers, steaks or seafood. I love cooking out, and drinking a few beers with friends.

What do you do in your spare time?

I fish, play paintball, and like to build things (potato gun anyone?). Mostly, I just love being out doors. I listen to all kinds of music. Favourite genres are rock, metal and rap. Love to watch movies. Recently watched "Let's go to Prison". My reading is restricted mostly to technical documents. Unless you're interested in the latest IEEE specs, or hardware documentation, you probably wouldn't care about my reading list.

Recommend a non Ubuntu website?

Random link from my bookmarks: www.homelandstupidity.us This is basically a site dedicated to how dumb the US government can be. Not news to most people, but interesting none-the-less.

This interview is also available in German