While reading Haacked today, a question I've had for a long time finally boiled over to the point of writing this post. :-)

Phil commented on this post which puts up a good argument for why Microsoft should financially support Open Source projects.  Like Dave mentioned in the original post, I too have used DNN for implementing customer sites.  Without
it, development costs would have been too high for at least one project and I most likely would have lost the gig.  I'm also one of the many users of NUnit, NDoc, Nant, log4net and Subtext.

Ok now for my question: What drives people to write open source software?  What drives a person to write something as good as NUnit or DNN and then give it away?  What drives someone to create something like NDoc that's used by
jillions of developers, give it away, and then close shop because no donations were given?  Why not charge from the outset?

Is it because by charging people, you've taken on more responsibilty when it comes to support?  Is it because you don't think people would pay for your product?  Someone please enlighten me because I truly am curious.