And why they don’t take over the world. If you ever wonder about it, you probably already came up with perfectly good explanation. I’ve heard and read quite a few and agree with most of them, but still want to add my two cents. IMO, in open source there are generally two kinds of approaches.
When people excited about new cool technology, they often start open source projects to learn/promote this technology. What is the better way to learn SilverLight or WPF or jQuery than to start project all built with new shiny tools? And if you want to spread it around, why not build Starter Kit? This is all great and helps developers a lot. The problem is that this approach almost never results in the good end product and project always remains reference application, until Next Big Thing. Then it is either thrown away and abandoned or re-written again using new, cooler platform/language/framework/whatever. These projects never mature and you won’t see them in the top one hundred contesters of any Weby Awards. Most of the .NET open source projects in this category.
When people come up with idea of a cool product, they look around for the best tool for the job and then stick with what they got. All efforts are thrown at making product better, radical changes to the code base almost out of the question. Because it works, because it is big, because all thoughts on making product better, not on making code better. You can argue that it is all and the same, that without good foundation building will fall apart sooner rather than later etc. etc. and you right. But I’m talking about what makes people on the project tick. If it is product first – you’ll see project tirelessly climbing up to success. All the awesome web applications built on crappy PHP code used by millions users belong to this category.
So, if Microsoft want .NET open source become a major player in the field (and this is a big “if”), it should concentrate on people thinking about products, not frameworks. We, developers, are not very good in this. We good in writing code - but without adult supervision we will improve and refactor this code to perfection in the endless loop until we run out of coffee and pizza.