September 1, 2007

How Linus copes with criticism

Author: Joe Barr

So, you want to be a kernel hacker. Before you go down that path, or get involved with any other free or open source development project, you should know that it's often a wild, raucous place where -- no matter what level of coding skill you possess -- your tolerance for criticism or rejection might constantly be tested. Even Linus Torvalds isn't immune to criticism.

Most FOSS developers write code for the ego hit or the warm-fuzzy you get from being of service to others. Yes, the elite are often paid well by large corporations for the sweat of their brows, but for the rank and file, which includes some of the world's most gifted programmers, it's work freely given with no rewards expected.

FOSS development is often described as a meritocracy, where only the best code makes it into a project. That sounds good from the point of view of the user, but that philosophy has some harsh edges that can damage the ego and even cause developers to walk away from a project. Any developer's code submissions might come under heavy criticism from rival contributors as well as from the project hierarchy. You need a tough hide to survive.

The Linux kernel is the best-known project in the FOSS movement, and the rewards -- whether financial or ego-based -- are higher there than with any other project. With so much at stake, rejection by Torvalds, or by one of the maintainers who cull submissions before they ever reach Torvalds, can be a painful process, even for those with solid credentials in the FOSS community.

Two of the most notable examples of rejections of work by high-profile contributors are the CML2 kernel configuration tool submitted by Eric S. Raymond and Con Kolivas's work on the Staircase Deadline (SD) scheduler for the kernel, which he claimed would give desktop users better response. The reaction was such to the rejection of Con's scheduler code that Torvalds took the unusual step of defending the action.

The top decider

As founder and leader of the Linux kernel project, Torvalds is the top decider about what does and doesn't go in the main kernel tree. That puts him in the position of having had to say no many times. How does he himself cope with criticism? Had it ever weighed so heavily on him that he thought about just walking away and working privately instead of in public?

Torvalds says:

Not me personally. Part of that is that I actually *like* arguing (sometimes a bit too much ;^), so the occasional flame-fest really does nothing but get me pumped up.

At the same time, I'm actually pretty good at just "letting it go", so once I've argued enough and am bored with the argument, I can just leave the thing behind. Part of that is also having to occasionally just admit that you were wrong, and have the ability to send out a "mea culpa" email just saying so.

I also don't tend to get too hung up about any particular detail (even if in the heat of a "discussion" I can be very forceful about them). I certainly care more about some subsystems than others, but in the end I seldom end up caring really deeply about many of the technical choices: I tend to care much more about improving the general development model than about the details of some particular subsystem.

So that tends to make it easier for me to "let go." I'll state my opinions, but even if I'm convinced I'm right, if I'm not actually willing to write the code, in the end I'll happily be overridden by the people who *do* write the code.

This is obviously very much a matter of personality.

There are things that I tend to worry about, and that can be really painful, but they are pretty rare. The classic example is the old "Linus doesn't scale" argument, where it ended up being the case that I really had to fundamentally change the tools I use and how I work. And *that* was a lot more painful than worrying about the actual code.


Of course it's not automatically a bad thing when your code is rejected, in the Linux kernel or elsewhere. Disagreements with other developers led Daniel Robbins to leave one project and found Gentoo Linux. Gentoo has gone on to become the premier Linux-from-source distribution, while the project he left, well, I've forgotten its name.

More importantly, however, is the lesson that yes, your ego is exposed and vulnerable in the world of FOSS development, and sometimes it's a painful place to be. The "right stuff" for FOSS developers goes beyond just being a good programmer. You also have to have the ability to admit when you're wrong and the ability to just "let it go" when decisions don't go your way. If you do, FOSS development can be a fun and rewarding experience. If you don't, it almost certainly won't be pain-free.


  • Programming
  • Commentary