June 13, 2005

Linus compares Linux and BSDs

Author: Joe Barr

I recently asked Linus Torvalds for his thoughts on the relative strengths and weaknesses of Linux and BSD, and about how much synergy there might be between the Linux kernel and the BSDs.I prefaced my query to Linus by recounting my observations from a Usenix conference in San Diego a few years ago. He was a speaker that day, and a group of BSD users came right down to the front row to hear him. In fact, they laughed and joked with him, and eventually gave Linus one of the beanies with horns on it they were wearing, a familiar symbol to BSD fans.

They may have been surprised by his reaction. I was. He took the beanie they offered, put it on, and wore it during his entire presentation. No big deal, the leader of the Linux kernel wearing BSD colors. He defused what could have been a contentious moment.

NewsForge: I want to ask you a few uninformed questions about the similarities, differences, and synergy -- if any -- between the Linux kernel and the BSDs.

Torvalds: I really don't much like the comparisons. In many ways they aren't even valid, since "better" always ends up depending on "for what?" and "according to what criteria?".

NF: BSD is still considered by some to be more "technically correct" than the Linux kernel. Do you think the BSDs are better technically than the Linux kernel?

Torvalds: Linux has a much wider audience, in many ways. That ranges from supporting much wider hardware (both in the driver sense and in the architecture sense) to actual uses. The BSDs tend to be focused in specific areas, while I have always personally felt that any particular focus on any particular use is a bad thing.

Which one is "better"? To me, Linux is much better, since to me, the important thing for an OS is how well it performs under different patterns, be they embedded, server, or desktop, or just some totally crazy person in a basement trying something new.

But some people disagree with me, and like to limit their work to specific areas, and like the fact that developers have one cohesive goal, and don't care about anything else. Some people consider the Linux development model "too permissive," in other words -- they want the project to concentrate on X, where X is some random area that they care about.

Which mindset is right? Mine, of course. People who disagree with me are by definition crazy. (Until I change my mind, when they can suddenly become upstanding citizens. I'm flexible, and not black-and-white.)

NF: If the BSDs were better technically five years ago, has the playing field leveled since then?

Torvalds: I don't think they were better five years ago (see above), and I don't think the question really makes sense.

Are there areas where you could point to "X does Y better"? Oh, sure, that's inevitable. But exactly because Linux tries to be "good enough" for everybody, you'll find a lot of areas where Linux is better (often a lot better -- as in "it works"), and then you'll find a few narrow areas where one particular BSD version will be better.

To me, it's largely a mentality issue. I said "good enough," and that's really telling. The BSD people (and keep in mind that I'm obviously generalizing) are often perfectionists. They hone something specific for a long time, and then they frown on anything that doesn't meet their standards of perfection. The OpenBSD single-minded focus on security is a good example.

In contrast, one of my favorite mantras is "perfect is the enemy of good," and the idea is that "good enough" is actually a lot more flexible than some idealized perfection. The world simply isn't black-and-white, and I recognize a lot of grayness. I often find black-and-white people a bit stupid, truth be told.

NF: Is sharing between BSD and the Linux kernel a common occurrence? And if so, does it go both ways?

Torvalds: It's quite rare on the kernel level. It happens occasionally, mainly in drivers, and sometimes on the "idea" level (don't get me wrong -- it's not an acrimonious setting, and people do talk about things). But the fact is, it's usually more effort to share things and try to synchronize and agree on them than it is to have independent projects.

On a user level, there's obviously tons of sharing, since there you don't have the communication issues, and user projects tend to be pretty independent of each other (and the kernel) anyway.

NF: Are there parts of BSD today that you would like to see adopted in the kernel?

Torvalds: I certainly don't have any specifics, but that's not saying that I'd be against it. It just means that I don't know anything about BSD technical internals, so I'm the wrong person to ask. Ask somebody who uses both.

Note: Tune in Wednesday for the views of BSD leaders as they answer the same questions posed to Linus.


  • Linux