Wednesday, October 27, 2004

Linus on taking up and working on open source projects

Nobody should start to undertake a large project. You start with a small
_trivial_ project, and you should never expect it to get large. If you
do, you'll just overdesign and generally think it is more important than
it likely is at that stage. Or worse, you might be scared away by the
sheer size of the work you envision.

So start small, and think about the details. Don't think about some big
picture and fancy design. If it doesn't solve some fairly immediate
need, it's almost certainly over-designed. And don't expect people to
jump in and help you. That's not how these things work. You need to get
something half-way _useful_ first, and then others will say "hey, that
_almost_ works for me", and they'll get involved in the project.

And if there is anything I've learnt from Linux, it's that projects have
a life of their own, and you should _not_ try to enforce your "vision"
too strongly on them. Most often you're wrong anyway, and if you're not
flexible and willing to take input from others (and willing to change
direction when it turned out your vision was flawed), you'll never get
anything good done.

In other words, be willing to admit your mistakes, and don't expect to
get anywhere big in any kind of short timeframe. I've been doing Linux
for thirteen years, and I expect to do it for quite some time still. If
I had _expected_ to do something that big, I'd never have started. It
started out small and insignificant, and that's how I thought about it.

- Linus Benedict Torvalds



1 comment:

Kannappan said...

>>Don't think about some big picture and fancy design. >>If it doesn't solve some fairly immediate need, it's >>almost certainly over-designed.

Premature optimisation is the root of all evil.
- Knuth