Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

The title might seem to be inflammatory, but it's here to catch your eye after all.

I'm a professional .NET developer, but I try to follow other platforms as well. With Ruby being all hyped up (mostly due to Rails, I guess) I cannot help but compare the situation in open-source projects in Ruby and .NET.

What I personally find interesting is that .NET developers are for the most part severely suffering from the NIH syndrome and are very hesitant to use someone else's code in pretty much any shape or form. Comparing it with Ruby, I see a striking difference. Folks out there have gems literally for every little piece of functionality imaginable. New projects are popping out left and right and generally are heartily welcomed.

On the .NET side we have CodePlex which I personally find to be a place where abandoned projects grow old and eventually get abandoned. Now, there certainly are several well-known and maintained projects, but the number of those pales in comparison with that of Ruby.

Granted, NIH on the .NET devs part comes mostly from the fact that there are very few quality .NET projects out there, let alone projects that solve their specific needs, but even if there is such a project, it's often frowned upon and is reinvented in-house.

So my question is multi-fold:

  • Do you find my observations anywhere near being correct?
  • If so, what are your thoughts on quality and quantitiy of OSS projects in .NET?
  • Again, if you do agree with my thoughts on "NIH in .NET", what do you think is causing it?
  • And finally, is it Ruby's feature set & community standpoint (dynamic language, strong focus on testing) that allows for such easy integration of third-party code?
share|improve this question

closed as primarily opinion-based by Jim G., MichaelT, GlenH7, psr, Robert Harvey Jul 7 at 20:29

Many good questions generate some degree of opinion based on expert experience, but answers to this question will tend to be almost entirely based on opinions, rather than facts, references, or specific expertise.If this question can be reworded to fit the rules in the help center, please edit the question.

    
Folks out there have gems literally for every little piece of functionality imaginable. I find the same with python, there are a heap of modules in the python packages index and specific ones for Django framework too. –  Keyo May 21 '11 at 3:32
    
Just a guess... is it possible that .NET people find .NET framework to fulfill so much of their basic needs that they don't look far beyond it and just code whatever custom functionality they need. On the other hand, projects like ruby and python don't have .NET framework, so all that work of creating reusable modules fall onto the community. At the same time, I've played around with Umbraco (.NET-based CMS) and there's a whole lot of community modules for it. –  DXM May 21 '11 at 6:12

2 Answers 2

up vote 5 down vote accepted

Yes, certainly. What I've actually found in 6+ years as a .NET developer is, plainly, this: Most .NET developers are ignorant of anything that doesn't come with Visual Studio. There are exceptions, of course, and close-knit communities of .NET developers that do amazing things and embrace open source and non-Microsoft offerings, but by and large .NET guys don't know anything outside of Microsoft and that's partially why they suffer from NIH - need an ORM (in the days before Linq/EF caught on)? Write one yourself, because open source is not supported so can't be trusted. Need a library to frobnicate widgets? We have "unique needs" (not really) so we can't use an open-source or OTS solution, have to write our own. Hell most .NET guys I've worked with in six years barely understood design patterns or OOP, let alone how to leverage open source projects properly.

I don't know what it is about the Ruby community, but the culture there is like night and day compared to .NET's typical ecosystem. Most open-source languages have that culture while .NET has a more narrow-minded culture.

share|improve this answer
    
Its the curse of the Microsoft ecosystem. I've seen places where they wouldn't use log4net because there was a "better" one in the enterprise library logging application block... that it is demonstrably much worse didn't matter. Same applies to other, more significant libraries and tools. IF MS didn't make it, its not worth having is a common problem. –  gbjbaanb Feb 3 at 8:55

Do you find my observations anywhere near being correct?

Not even a little. If you're seeing this, it's a symptom of your work environment, not the platform. I've worked with more than one .NET shop that didn't have the slightest problem with using open-source libraries. And when I do my own .NET development I use them quite a bit. So does every other .NET developer I know.

Is the count of Ruby projects higher than .NET? Quite possibly. But that isn't necessarily indicative of NIH; consider that .NET is more widely adopted in business sectors where open-source is a more difficult legal question. Also, keep in mind that Ruby has been around nearly a decade longer than .NET.

There are quite a few excellent open-source .NET projects available, and certainly in more places than CodePlex. Without even thinking hard about it, Nancy (the .NET version of Sinatra) is hosted on GitHub, AutoFac (a fantastic DI/IOC project) is hosted on Google Code, DropNet (Dropbox API wrapper for .NET) is hosted on GitHub, and those are just the ones I've used today. I'm sure the SO community can list many, many more.

Look outside of CodePlex (though CodePlex also has some excellent libraries). Don't forget to check SourceForge, BitBucket and the places I listed above.

And finally, is it Ruby's feature set & community standpoint (dynamic language, strong focus on testing) that allows for such easy integration of third-party code?

.NET is more than just VB.NET and C# - it also includes dynamic languages (IronRuby, F#, etc.). There's plenty of focus on testing in the community - I think you're just looking in the wrong places. And difficulty of code integration is a question of library design quality; it has very little to do with the language/platform.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.