There has been a meme going on lately where a number of folks have been talking about the death of NDoc and the implications of that on open-source .NET projects.
Kevin Downs, the leader of NDoc wrote this in an email to the NDoc list:
Unfortunately, despite the almost ubiquitous use of NDoc, there has been no support for the project from the .Net developer community either financially or by development contributions. Since 1.3 was released, there have been the grand total of eleven donations to the project. In fact, were it not for Oleg Tkachenko’s kind donation of a MS MVP MSDN subscription, I would not even have a copy of VS2005 to work with!
To put this into perspective, if only roughly 1-in-10 of the those who downloaded NDoc had donated the minimum allowable amount of $5 then I could have worked on NDoc 2.0 full-time and it could have been released months ago! Now, I am not suggesting that this should have occurred, or that anyone owes me anything for the work I have done, rather I am trying to demonstrate that if the community values open-source projects then it should do something to support them. MS has for years acknowledged community contributions via the MVP program but there is absolutely no support for community projects.
I hear what Kevin is saying, but it saddens me. It doesn’t sadden me that Kevin didn’t get paid. It saddens me that people weren’t jumping in to contribute to the project.
What good, successful open-source projects have is a solid core of contributors and a periphery of people submitting bugs, features and most importantly patches. But you know what? People don’t just step up and give their time for free just because they should. No. They have to be recruited. They have to be encouraged. And that is hard. It requires a project leader who is passionate, engaged, and who is interested in sharing responsibility with other people. It requires a leader.
Now, I don’t know if Kevin was a leader or not. I don’t know how Kevin ran his project. What I do know is that a large number of .NET open-source projects have a disease where the founder stands around wondering why he only hears from whiners wanting more and not from people volunteering time.
Is it because Microsoft has done something to squelch the community? I don’t think so. I think it is because most .NET open-source project leaders don’t understand that to build a team you have to work at it. You have to sell it. You have to recruit. You have to lead. Ruby and Java OSS project leaders get this. Our community doesn’t. I don’t know why.
I like what Scott Hanselman wrote on this front:
Personally, as an Open Source project co-leader, I’d much rather folks who use DasBlog pick a bug and send me a patch (unified diff format) than give money. I suspect that Kevin would have been happy with a dozen engineers taking on tasks and taking on bugs in their spare time.
Now, Scott also wrote this:
It’s a shame that Microsoft can’t put together an organization like INETA (who already gives small stipends to folks to speak at User Groups) and gave away grants/stipends to the 20 or so .NET Open Source Projects that TRULY make a difference in measurable ways. The whole thing could be managed out of the existing INETA organization and wouldn’t cost more than a few hundred grand - the price of maybe 3-4 Microsoft Engineers.
I think this is an interesting idea, but I don’t think INETA should do it. It should be another team, with a different goal and agenda. I’m not sure it would work though. What this ends up doing is monetizing the contributions of the project members. Suppose there was $20k available for NUnit development. Does this mean that someone can stop working their day job to work on NUnit? No. So I’m not sure how it will help. Healthy projects need people, not money. I know many .NET OSS project leads want to “get paid”, but that is about personal ego and not about the project’s success.
Someone used an interesting analogy the other day about a different topic, but I think it applies here. Suppose you donate your time to your local community center to build them a cool new website. You spend a large amount of your spare time at night and on the weekends doing it. When you are done, you feel proud. You did something GOOD. You bring it to the community center leader and show it to him. “Wow. That is really great. Thank you so much. Here is $100.”
Right up until they offered you money you felt good. But as soon as the money got involved, the whole thing changed. You will start thinking things like, “$100? Are you kidding me? I spent a hundred hours on that project. If you want to pay me, pay me $10,000!!”
I’m worried that bringing money into the equation spoils the really cool part about community developed software: it is made by a community of people for the benefit of the community itself. Not for money.
As an aside for those who believe that Sandcastle is a result of the “not-invented here” syndrome inside of MSFT, you are wrong. Sandcastle is an OLD tool inside MSFT. Almost every API spec you’ve seen come out of MSFT was created with it. And people were asking for it. So we gave it away. This is what everyone asks us to do more of and yet when we do it, we get criticized even more.
This is just my 2├é┬ó on this topic.