Wow - any time you mention open source, you touch a nerve don't you...
First off - just because I work for Microsoft doesn't mean that I am against open source. In fact, I work in a team that builds class libraries and shares the source with the community so I am actually all for the concept. Now I am not trying to solve any issues at the OS level so I am not going to debate Windows vs. Linux. Let's think at a smaller scope for now.
Suppose you are creating a useful library for .NET development. It is the "Foo" library. Here is the question...
How do you collaborate with the world in the development and evolution of the "Foo" library while exposing the quality in an objective way and insuring that the quality of "Foo" is trending upward (getting better over time).
When I talk to developers I often ask if they use libraries like this and I find that few .NET developers (<10%) make use of these type of solutions and one of the primary reasons is that they are unsure of the quality. I believe that if we can find a way to address this concern we can take great ideas, collaborate on them and produce useful libraries that people feel comfortable using.
Here are the questions I think we need to answer:
- What would an objective measure of project quality be? Unit tests? Code coverage? Responsiveness of the community?
- What would it take for you to feel comfortable with using a "Foo" project? What do you look for? What does your employer require?
- If you were in charge of the "Foo" project, how do you insure that contributions from the community don't hurt your project because of quality problems?
I don't pretend to have the answers to these questions, I'm just honestly asking how we can address them. There are two other issues that loom large in this arena as well and they are licensing and dependencies, but I'll leave those for another blog.