I just blogged about the dire state of code sharing in .NET. The main reason I've noticed this is because I have a good reference for comparison - Ruby and Ruby Gems.
One thing I absolutely love about developing with Ruby is how easy it is to leverage other peoples work.
Say I'm writing a spam filter app, and I want Bayesian classification. I can get that functionality in seconds by doing this:
gem install bishop
That downloads the latest version of the bishop bayesian classification library to my local machine. It fetches it from a central server with 1000's of reusable libraries (Rails included). Any applications I write can now make use of Bishop by adding a
include statement in the source code.
I then just start writing code that uses Bishop.
Even better, next time the developers of Bishop do some funky updates that I want to make use of, I can simply do this to get the latest:
gem update bishop
And I've got the latest on my machine (I can also work with the older versions too, it's my choice)
This is all very good stuff. I'd be interested to hear how we might get this kind of thing in the .NET arena.