INTERVIEWS by STEPHEN IBARAKI, I.S.P.
A Linux kernel authority and noted software engineer
This week, Stephen Ibaraki, I.S.P., has an exclusive interview with the internationally known
Linux expert, speaker, software engineer, and author, Robert Love.<
Robert is contributing editor for Linux Journal and a software engineer for MontaVista Software.
His kernel projects include the process scheduler, the preemptive kernel, the VM,
and multiprocessing enhancements. He maintains schedutils and procps.
Amongst his most recent writings is the book, Linux Kernel Development, a practical guide to the
design and implementation of the Linux kernel.
Discussion:
Q: Robert, your unique expertise will be of great value to our audience. Thank you for doing this
interview.
A: It is a pleasure.
Q: How did you get into computing and into writing?
A: My interest in computers goes back nearly as far as I can
remember. But while computers have always
been an interest, it was not until I started
programming that I could really call
computing a passion. Interestingly, I found
myself intrigued by operating systems very
early on, even before I began programming.
The concept of the inner internals
fascinated me more than the outer
applications. Growing involved with Linux,
and then ultimately the kernel itself, has
been extremely gratifying.
Similarly, I have
always enjoyed writing. Awhile back, I had
the opportunity to write an article for
Linux Journal, which I really enjoyed.
The entire writing process was very fun and
it is quite rewarding to write for an
audience similar to you and help teach them
something new. Thankfully, Linux Journal
has continued to provide an outlet for my
writing.
Q: How have you resolved the roadblocks in your career? What assets and processes proved to be the most
valuable?
A: I feel the most important approach to
anything you do in life is to genuinely
enjoy it. If you sincerely revere something,
and it challenges you, a natural reaction is
to challenge it back and be the best you can
be at it.
Q: Describe the major challenges you face in your job and how you overcome them?
A: Some aspects
of kernel development can be rather
frustrating. I talk about some of them - and
their solutions - in my book.
The kernel is not
afforded many of the luxuries of user-space
programs and, consequently, some facets of a
kernel make working inside the kernel harder
than working outside of it. Wrapping your
head around some of the nastier bugs, for
example, is sometimes particularly painful.
Nonetheless, through eternal vigilance, all
problems are surmountable.
Q: Describe your
latest book? Who should read this book and
what background should they have to get the
greatest value from it? Why would someone
want to carefully study this book—what makes
this book particularly unique and special?
A: Linux
Kernel Development is a book on the
design and implementation of the latest
Linux kernel. I approach the material in a
hopefully fun and practical manner, with an
eye toward helping developers either
understand the kernel for the first time or
gain a stronger grasp on kernel internals.
The book is of interest to developers
wishing to (better) understand the Linux
kernel, either simply for fun or so they can
work on kernel projects. The book is also of
interest to anyone simply curious about how
the kernel works.
To really get the
most out of the book, the reader should be
familiar with Unix and Linux systems, have
at least a basic understanding of the
concepts behind operating system design, and
know C. Really none of these are hard
requirements, however, as the book tries to
explain as much as possible from the ground
up. Where help is needed, I included a
bibliography of some of my favorite books.
A few things make
the book unique. First, its approach is
rather special in that it tackles the
subject in a pragmatic and fun manner. I
hope that the reader can relate to the book
and find the information accessible. Second,
as a kernel developer both by hobby and by
vocation, the book is ripe with insider
views and practical tips.
Q: Which parts of the kernel appeal to you most and why?
A: My personal
operating system interests are scheduling,
process management, virtual memory
management, and locking.
Q: What specific tips can you provide on the kernel that would be useful to kernel developers?
A: Play around. Study the source. Never give up. Have fun.
Q: What new
features are in the current kernel, and what
features do you see in future kernels and
when do you expect them to appear?
A: The new 2.6
kernel is rich with neat new features. A lot
of these are discussed in the book. Some of
the most notable are a new process
scheduler, two new I/O schedulers, a new
block I/O layer, a device model, a reworked
VM, improved scalability, a preemptive
kernel, and improved threading support.
Anything is up
for grabs in future kernels. We should see
development start on the next kernel, 2.7,
in the coming months.
Q: Provide tips from your work for Linux Journal?
A: When technical
writing, the most important thing to keep in
mind is your audience. You need to relate to
them, understand them, and convey the
information to them in terms they can
understand. It does not hurt to have a sense
of humor, either!
Q: Describe good kernel coding practices.
A: There is a lot
behind good kernel coding practices. Sane,
clean, KISS designs are important. The core
kernel developers, and consequently the
kernel itself, have a well-defined style. A
lot of it is just an extension of the Unix
style and approach taken to normal Unix
programming and Unix kernels in particular.
But there is certainly a bit of Linux flavor
in there. Understanding that style requires
understanding the source code, watching the
kernel development process, and so on.
Following the kernel style is definitely
important.
Q: Share your more vexing problems working with the kernel.
A: Even though I
am not a big user of debuggers, oftentimes
the lack of an official or standard kernel
debugger is a nuisance. Thankfully, in 2.5
and 2.6, we have had kgdb (a kernel
debugger) patches kept very up to date and
functional.
Another gripe is
our release behavior. I would like it if we
could switch to a release structure like
GNOME's. They do time-based releases. For at
least one release, I would love to try that
out.
Q: What are the major problems and successes with Open Source?
A: Open Source
has many positive attributes. Obviously, I
believe in it. It has definitely fostered
the creation of best-of-breed projects: the
Apache web server, the Linux kernel, and the
GNU C compiler, for example. Open source
creates a meritocracy, free from political
or marketing agenda, with which projects are
designed and built entirely in the open.
This provides the "many eyes" phenomenon,
which is often described as "with enough
eyes, all bugs are shallow.
But not all is
perfect. Sometimes innovation needs to be
pushed from somewhere other than within, and
open source might not provide that. It is
often argued that open source projects,
which are usually run entirely by
developers, lack accessibility required by
or features for non-developers. While I
think today that is largely an issue of the
past - just look at the resounding success
of GNOME, for example - it is still a cited
concern.
These problems
are largely issues of the past now that open
source has received corporate backing and
funding, which can fund work in the
less-than-glamorous chores.
Q: Can you make future predictions about specific products and services coming from the Open Source
movement?
A: I think we are
going to see more and more markets outside
of personal computing and serving moving to
open source based solutions. When I say
this, I think of markets such as traditional
embedded, scientific computing, and consumer
electronics. It is not that these markets
are going to engineer their solutions in
open source, although that undoubtedly would
be great, but that they are going to find
open source based systems the way to go due
to cost, technical superiority, wide
support, and vendor neutrality.
Q: What are some common problems and their solutions facing developers today?
A: These days,
systems are growing more and more complex
and the barrier to entry can only be greater
than it ever was before. I think this
happens in all aspects of society, stuff
just gets more complicated and involved, but
in computing the complexity is not augmented
by better tools or better methodologies. The
disparity between the current generation,
who understand the systems because they
built them, and the next generation, who
face this high barrier of entry, is growing
wider and wider. To counter this, it is very
important that documentation and education
improve to match.
Q: Do you have some stories about very challenging
situations and their resolution? Any humorous stories?
A: I once spent a
couple days debugging a kernel problem,
trying new approaches, recompiling,
rebooting my target system, and growing more
and more frustrated. It turned out, for
reasons still unknown, that my NFS (a
networked file system) mount, which was how
I was accessing the target, was not
synchronizing before I rebooted the target,
so I never actually tried the new code. I do
not even remember what the bug I was trying
to fix was or why NFS was misbehaving. But,
needless to say, when I figured out the
problem I put a brown paper bag over my head
for a week or two. The moral of this story
is to always check your build versions to
make sure you are actually running what you
think you are. And do not have freaky NFS
bugs.
Q: What trends do you see in program development? Please make
some predictions about the future, and future technologies that businesses and IT
professionals should be considering.
A: Business
professionals should be considering the
potential of open source technology, of
course!
Q: With regards to security, please provide your detailed recommendations in this area?
A: It is
important that security be an initial design
feature and built into the system from the
very beginning. Security cannot be an
afterthought. It cannot be tacked on to an
existing system. The initial design needs to
ask the critical questions and design the
requisite answers into the system. The
implementation then needs to carry through
with the design and correctly implement the
security.
Additionally,
security through obscurity (the practice of
"securing" systems by hiding how they work)
is nonsense. A system that is provably
correct and provably secure can have both
its design and implementation handed to the
attacker. It should not matter.
Finally, no
matter what you do, if the implementation
does not match the design (e.g., you have a
bug), then you have problems. If your system
is filled with buffer overflows and other
errors, then no secure design in the world
will help you. Many people blame these sorts
of errors on the programming language or
maintaining old systems. To some end, I
certainly agree with them. But, at the end
of the day, the errors are still occurring
due to incorrect programming. Many systems
are programmed in C and C++. Nearly all of
Linux is. Nearly all of Windows is. It is
inexcusable if either system were
continually plagued with security flaws,
despite not using "modern" languages.
Thankfully, Linux has proven very secure
over the years.
Q: Which ten resources do you find the most useful?
A: Ten? Hmm. My
friends, family, and coworkers. My personal
workstation and my Apple ThinkPad. I love my
Apple. Three great books: Knuth's The Art
of Computer Programming, Stevens'
Advanced UNIX Programming, and K&R's
The C Programming Language. I probably
never look at these any more nowadays,
except maybe the first, but they are still
incredible books. LWN [http://www.lwn.net/]
to keep me up-to-date with Linux news and
CNN [http://www.cnn.com/] to keep me
up-to-date with the rest of the world. That
ought to be ten.
If you were doing this interview, what three questions would you ask of someone in your
position and what would be your answers?
A: Q1: What operating system do you most respect, aside from Linux?
A1: Definitely Mac OS X. I am very impressed by it.
Q2: Linux excels in the server, workstation, and embedded markets. What is next?
A2: Definitely the desktop, as in the home or
office desktop. I feel the GNOME desktop is
incredibly mature and well-featured. GNOME
is beyond the "catching up" phase; it is now
an innovator in the desktop space.
Nonetheless, I think there are still
political and technical issues that remain.
Politically, Linux needs to continue to win
deployments in large corporations.
Management needs to be aware of Linux as an
option on the desktop. They need to realize
it works and realize it is a great option.
Companies such as Ximian, Red Hat, and SuSE
are making good inroads here. Technically,
Linux still lacks application support,
although applications such as Open Office,
Mozilla, and Evolution are certainly
excellent, especially as of late. We also
need better hardware management, with the
kernel reporting hardware events (such as
the user plugging in a digital camera) and
the desktop environment handling the event.
But we are getting there. I love my Linux
desktop!
Q3: Vi or Emacs? Boxers or briefs?
A3: Vim and boxers.
Q: Robert, you provide some deep insights and an interesting perspective. It was a pleasure
interviewing you. Thank you for sharing your wealth of knowledge with our audience.
A: Thank you for the opportunity. Take care.