Wednesday, March 30, 2011

From each according to ability = a really good system

From an interview with Linus Torvalds (chief architect for Linux operating system). The interviewer has asked him about the motivation: what was his motivation for doing all the work for free? why did he open up the project to other developers rather than view it as his own property?

LT: Well, I've put in a lot of work, and that's really what the thing has been all about: everybody puts in effort into making Linux better, and everybody gets everybody elses effort back. And that's what makes Linux so good: you put in something, and that effort multiplies. Essentially, in game theory terms it's not a "zero-sum game" at all: it's a positive feedback cycle.

Imagine ten people putting in 1 hour each every day on the project. They put in one hour of work, but because they share the end results they get nine hours of "other peoples work" for free. It sounds unfair: get nine hours of work for doing one hour. But it obviously is not.

Note that this isn't true of just the Linux developers who write the kernel code, it's also true of the actual users. Especially in the early days of Linux the users were also acting as guinea-pigs for new features and so on, and they (sometimes unwittingly) put in a lot of effort in determining whether something worked or whether it really should have worked another way. And for that work they put in they got the reward of seeing better and better systems.

What I'm really saying that there is no need for anybody to even try to put back as much as you get from the Linux project - because it doesn't really make sense. The whole project is built on the idea that everybody puts back whatever they can - and that the sum of a lot of small effort is a really good system..

An interesting aspect of the interview: the interviewer keeps trying to tie motivation to something that is basically like money, generally reputation or the possibility for future gain. Tovalds keeps appealing to more aesthetic criteria--"it's neat" or it feels good when people use something you've made or because something is fun.
LT: Note that I do believe that while the reputation I have built up is convertible, it still leaves off a lot of purely personal reasons to program even without any real material gains - be they direct or indirect.

A lot of people enjoy just the interaction on the Internet, and the feeling of belonging to a group that does something interesting: that's how some software projects are born.

So I think that yes, there are issues with "getting value back" from your involvement with any project on the Internet, and I think those should be a consideration, but I don't think it should be the first consideration. The first consideration for anybody should really be whether you'd like to do it even if you got nothing at all back. And if you answer "yes" to that question, then it is probably a project you'd enjoy doing, and one where concerns like how much you'd get out of it personally really are rather secondary.
In my specific case, it was really a combination of factors: one was that I was very much disappointed with the problems I had personally had trying to find a UNIX-like system for my own use. I strongly felt that a much more easily available and much cheaper version of UNIX was sorely needed, because I had tried to find one myself and failed.

So when I ended up writing my own, I was motivated by my earlier experience to put it out publicly on the Internet, because that was what I would have wanted six months earlier. "Do unto others as you would like others to do unto you", so to say.
Also, I've never personally been in the position that I felt I had to program for money - programming may be my job, but long before it was my job it was my pleasure. So the concept of making money or even just fame off software was really fairly secondary to the fact that I wanted to program anyway..
It was not really a quesiton of giving anything back to the Internet, although the later change in copyright to the GPL was definitely a gesture towards giving something back to the people who had given me gcc to play with and use.

No comments:

Post a Comment