Laurent Pinchart, a.k.a. The Media Controller Guy, is a Linux kernel developer working on video capture and display. Here he tells us about the lucky introduction that got him involved in Linux and recalls the time a Taiwanese company tried to pay him $50,000 for the free software he developed. As are many of the developers we've profiled in our 30 Linux Kernel Developers in 30 Weeks series, Pinchart is motivated to work on Linux by more than money.
What role do you play in the community and/or what subsystem(s) do you work on?
I mainly focus on video capture (V4L2) and, more recently, display (DRM and FBDEV) support for embedded platforms. Depending on who you ask, people usually know me as The Media Controller Guy (a multimedia core kernel framework) or The UVC Guy (USB Video Class, a USB webcam standard).
In addition to maintaining several video-related drivers, I am involved in the design and development of the media controller, V4L2, DRM and FBDEV subsystems, and even write documentation for their APIs.
I also consider reviewing patches and providing support to users of my code as important, even though I can't spend as much time on this as I would like to.
Where do you get your paycheck?
Renesas Electronics is currently my largest customer. I also provide consulting services to smaller clients through Ideas on board, my embedded Linux consulting company.
What part of the world do you live in? Why there?
I live in Belgium, mainly because I have spent my whole life here. The kernel development scene is unfortunately pretty small. Free and open-source software is, however, well represented thanks to events such as the FOSDEM.
What are your favorite productivity tools for software development? What do you run on your desktop?
Vim comes near the top of my list, but I try not to be religious about that. More recently, another life changer was git. It has boosted my productivity and I now use it for all my projects.
As for my desktop, it runs KDE, probably for historical reasons. Development-wise I will be happy as long as my system provides me the option of keyboard-only console control.
How did you get involved in Linux kernel development?
Although I had started writing Linux kernel code in 2002 for a small Belgian company, the real fun started back in late 2005 with a usual "scratch your own itch" problem. I had bought a webcam for a personal robotics project and decided to try writing my own Linux driver. Seven years later I maintain the UVC camera driver that supports more than 250 models.
The unpredictable nature of Linux kernel development always amazes me. Working on the UVC driver got me in touch with Logitech (it turned out that a computer science student had planned to write the same driver for his master thesis during an internship at Logitech and had to change his plans when I released my code - sorry about that Martin). This led to a first paid contract for
embedded Linux development on a TI DaVinci platform, contacts with the ARM kernel community and eventually a contract proposal from Nokia. I would like to take this opportunity to thank Kevin Hilman, I wouldn't be where I am today if he hadn't recommended me back then.
What keeps you interested in it?
Linux kernel development makes me feel useful to people, not just to companies. Over the years I have learned to love its technical challenges, its amazing developers who I can continuously learn from, its sharing culture and its dynamic ecosystem that brings me to unexpected - but so far always interesting - journeys.
What's the most amused you've ever been by the collaborative development process (flame war, silly code submission, amazing accomplishment)?
Although more surprising than amusing, the story that comes to my mind happened in early 2008. A developer from a Taiwanese webcam chipset manufacturer contacted me to inquire whether I would consider selling them the Linux UVC driver for $50,000. After recovering from the shock, I answered that the driver wasn't for sale, but was available for them to use free of charge under the GPL license. A couple of e-mails later, not understanding how I could spend time on driver development and provide the resulting code for free, the developer offered to send me $150 from his own money, apologizing that he couldn't afford to pay more due his son's university tuiton costs. Needless to say I refused the money, but I remain deeply moved by this story.
What's your advice for developers who want to get involved?
Scratch your own itch. Few (if any) successful free and open-source projects start big. You will need personal interest in a project to put up with the darker times.
To students, I would advise getting involved during their studies. They might not believe it, but they will likely have less free time after getting their degree. Parties and drinks are fun and tempting, but they don't look good on a CV.
Finally, don't take code reviews too personally. Long time kernel developers tend to forget that not being offended by criticism is not an innate ability. Remember that the reviews target your code, not yourself (exceptions to that rule happen but are fortunately very rare). Consider them as expert advice, try to learn from them and don't get discouraged. You will find out that the process ends up being natural.
What do you listen to when you code?
This largely depends on my work and mood. I need silence (or sometimes even a good bike ride) to concentrate on difficult topics, but I like to relax with a good tea and background music when working on less complex problems, or listen to catchy songs to speed up my work pace. To mention a few, Girls in Hawaii (a famous Belgian indie pop band), The Killers, Indochine or Les Cowboys Fringants can be found in my playlists.
What mailing list or IRC channel will people find you hanging out at? What conference(s)?
I hang out on #v4l and #dri-devel on freenode.net. You can ping me there, but please use appropriate mailing lists for questions that can be interesting to a broader audience.
Conferences are my favorite venues to socialize with other kernel developers. I warmly recommend them; meeting people face-to-face makes future interactions over mailing lists much easier. I attend at least one such as the Linux Plumbers Conference, Embedded Linux Conference or FOSDEM every year, and try to give a talk about my current work. You will not always find me in the conference rooms though. Nowadays, I spend more time in informal discussions than listening to talks.