In this week's30 Linux Kernel Developers in 30 Weeks profile, we talk to Oracle's Chuck Lever. Chuck works on the Linux NFS and FedFS implementations and got his start while at the University of Michigan. He also has some very specific advice for Linux newbies. Read on for some interesting insights from another member of the largest collaborative development project in the history of computing.
What role do you play in the community and/or what subsystem do you work on?
I work on the Linux NFS and FedFS implementations.
Where do you get your paycheck?
What part of the world do you live in? Why there?
Ann Arbor, Michigan. I came to school here nearly 30 years ago, liked it, and so I stayed. It was close to family. Over the past decade, a cadre of NFS developers has formed here. Working with a global community like Linux means travel, and I've certainly learned to appreciate the uniqueness of my home town and of many other cities.
What are your favorite productivity tools for software development? What do you run on your desktop?
This is anathema to some, but I run Mac OS on my desktop and do Linux kernel development in a virtualized environment. Mac OS offers ease-of-use along with a strong set of productivity tools. One productivity tool I use extensively is Evernote.
Virtualization means I can have as many Linux development systems as I need without worrying about power, noise, cooling, and hardware acquisition and recycling. I prefer command-line tools and vim, and I like Stacked Git for managing patches.
How did you get involved in Linux kernel development?
Some might remember an embarrassing report during the Internet boom in the late 1990s that claimed Windows/NT was a more scalable internet server platform than Linux. A research program at the University of Michigan was started to help Linux run Internet services better. Back then, this meant just the basics: LDAP, IMAP, and HTTP. I was tired of being a large-scale system administrator, so I signed on. Eventually the work shifted to focus on NFSv4.
What keeps you interested in it?
I help improve software that people use every day to get their work done. Performance scalability, ease of administration, and reliability of data storage is deeply critical to every computer system in the world.
What's your advice for developers who want to get involved?
There are many important technical skills: coding fluently, source control tools, reviewing others' code, tool chain, troubleshooting, testing what you've written, and so on. The most important of these, and the most difficult to do well, are code review and thorough testing. Start mastering them early.
A young developer should find a mentor who understands and respects your working style. One of the best things you can learn from a good mentor is how to hear criticism constructively. Another important thing is how to work well with other developers. The breadth of our community is something closed source methodologies can’t touch.
What do you listen to when you code?
Ambient/downtempo, non-vocal classical, and occasionally traditional jazz. Anything with sung or spoken words becomes distracting fairly quickly.
What mailing list or IRC channel will people find you hanging out at? What conference(s)?
#linux-nfs on oftc.net… LSFMM (Linux Storage, Filesystems, and Memory Management), and on occasion, LPC (Linux Plumber’s Conference). Recently I've been attending IETF (Internet Engineering Task Force) meetings.