Greg K-H is the current Linux kernel maintainer for the -stable branch and is well known for his contributions to the Linux device drivers project that has enabled the kernel to support the MOST number of hardware devices, compared to any other kernel or OS. Here we present a quick interview with the man.
Swapnil: What was your first computer?
Greg: My first computer was a Radio Shack TRS-80, Model 3.
Swapnil: What was the first piece of code that you wrote?
Greg: I learned and wrote programs in BASIC for that first machine, some of which ended up being used by my parents for different volunteer tasks they were involved in at the time.
Swapnil: How did you come into contact with the FOSS folks, and how did that journey start?
Greg: I came in contact with the code before the people 🙂 The first large gathering of open source people I met was at the first Linux Kernel summit back in 2001. That was the first time a large group of Linux kernel developers had got together in one place. It was very good, and spawned a number of projects that ended up in the kernel, as well as created a number of good friendships that still are ongoing.
Swapnil: What does Greg K-H do when he is not coding?
Greg: Play with my kids, pull weeds from my garden, snowboard in the winter. Normal family stuff 🙂
Swapnil: Which distribution do you use, and which desktop environment?
Greg: I use openSUSE as my main distro, with Gentoo still on a few server or ‘tiny’ machines I use for infrastructure. I use SLED for testing new hardware out as part of my job.
As for the desktop environment, my laptop is now running Moblin. Before that it was running Fluxbox. My main desktop is running GNOME, and I have a test box running KDE to ensure that the FACTORY branch of openSUSE is still working properly.
Swapnil: What books and programming language(s) would you recommend to aspiring kernel developers?
Greg: For kernel developers, C is essential—that’s all the kernel is written in. (OK, a tiny amount of assembly is also used, but that’s usually never touched by anyone any more.)
Books for kernel development include:
- Linux Kernel in a Nutshell, for how to build and install a custom kernel. This is the place to start if you don’t know how to do this. [It’s freely available online at www.kroah.com/lkn]
- Linux Device Drivers, Third Edition, is a bit outdated, but still a good overview of Linux drivers and how to develop them. [It’s freely available online at lwn.net/Kernel/LDD3]
- Understanding the Linux Kernel is a good overall kernel development book, as is Linux Kernel Development, Second Edition, although both of them are getting a bit out of date these days.
Swapnil: Is there any difference between the present generation of developers as compared to the first?
Greg: I don’t think there is any difference. We are all unique and different people, just like everyone else 🙂
Swapnil: A lot of people point out that even Linux/free software developers use an Apple Mac. What do you say about that?
Greg: I don’t tell you what code to run, you don’t tell me what to run, and we will all be happy.
Swapnil: What are your key areas of responsibility at Novell? Do you work full time on the Kernel?
Greg: I work on the Linux Driver Project with Novell’s blessings. I’ve also been involved lately in some work to get Moblin working well within openSUSE, which has been a lot of fun playing with a wide range of different netbooks. All of this is related to the kernel, so I do work full time on it.
Swapnil: What was the idea behind LDP (Linux Driver Project)? How many of its goals have been achieved?
Greg: You can see my longer response for this at www.kroah.com/log/linux/linux_driver_project_status-2009-06.html; hopefully that answers this question sufficiently.
Swapnil: We have been experiencing better driver support on Linux as compared to competing operating systems. What is the reason behind this? How different is the Linux driver development model compared to its competitors?
Greg: The development model is very different. All drivers for Linux end up in the main kernel tree, which allows the drivers to always stay up to date with the kernel, and for a lot of good optimisation and fixes to be made. It is very powerful to be able to look at a large number of drivers that all do the same thing, and merge them together into a smaller code base that is easier to maintain. This happens all the time in Linux, and has turned out to work very well.
Swapnil: How hard is it to convince companies to work with the project? Theo de Raadt [Open BSD project head] has been quite successful with Taiwanese companies in terms of hardware support. What is your approach?
Greg: It has been very easy to convince companies so far. We have worked with Taiwanese companies, as well as European- and US-based companies—there is no difference between countries.
Swapnil: Companies like ATI and NVIDIA have still maintained a distance from Linux. What is the status currently?
Greg: ATI hasn’t. They have released the specifications for their hardware, which has allowed an open driver to be written. NVIDIA has its own reasons for doing what it does. I suggest asking them about this if you are interested.
Swapnil: Although binary-only drivers make life easy for the end user, in your opinion, how good are they?
Greg: They do not make life easy for end users; they make life harder. My opinion, as well as those of a very large number of Linux kernel contributors, was published last year and can be seen at www.linuxfoundation.org/en/Kernel_Driver_Statement.
Swapnil: What do you say about hacks like ndiswrapper, technically as well as legally?
Greg: Technically, ndiswrapper is wonderful. The ability to run a driver written for a different operating system, on Linux, is a wonderful engineering achievement. I can’t say enough good things about that hack, and I love it. Also, from a legal standpoint, there is nothing wrong with it.
As a long-term solution for users to rely on, that’s not a good idea, as remember, the driver was not originally written for, or even tested with, Linux. So it usually does not work as well as a native Linux driver does and can.
[Image courtesy: Julien]