Geeks With Blogs


Google My Blog

Catch me at: The List!

My InstallScript Utility Belt My Amazon Wishlist
My Standard Disclaimer

Chris G. Williams Beware: I mix tech and personal interests here.

As you've no doubt seen on at least a dozen other blogs by now, Microsoft is releasing parts of the source for the .NET Framework.

More info here.

I've already had an "interesting" conversation with one of my coworkers about this. He doesn't think it's such a great idea. I think it is.

What do you think?

Posted on Wednesday, October 3, 2007 12:12 PM General Interest | Back to top

Comments on this post: yes it's true, .NET Framework Source Code to become available

# re: yes it's true, .NET Framework Source Code to become available
Requesting Gravatar...
Well, I've used Reflector to get at a lot of what I wanted to konw, and Salamander as well. I think it's a great idea and will help in many ways. Seeing how things work is always helpful. Seeing how microsoft codes things is similarly helpful. The more you see of the framework, the easier it is to be consistent with it.

Curious though, what is the co-workers argument against? I can't imagine any reason it's a negative. at worst, I'd think it'd be a neutral thing. What downside could come of it?
Left by Bill on Oct 03, 2007 1:02 PM

# re: yes it's true, .NET Framework Source Code to become available
Requesting Gravatar...
I should probably edit this post.

His initial complaint against it was based on the misunderstanding that people would be able to edit/recompile the framework in a misguided attempt to "improve" it.

This isn't the case, of course. It's strictly for reference/debugging, etc... read only.

Once he realized that, his argument vanished in a puff of logic. :)
Left by Blogus Maximus on Oct 03, 2007 1:05 PM

# re: yes it's true, .NET Framework Source Code to become available
Requesting Gravatar...
The correction is duly noted but I really don't see why that would be an issue either. Many third party vendors such as the Venerable Infragistics offers you their source code with certain licensing packages. I've found this to be very helpful at times. For instance, there are times when you have a special need and know what the problem is but don't feel like waiting for the next release. Many third party vendors do this and people pay extra for it, so the only perspective I see against it is that Microsoft is conceivably foregoing revenue they could otherwise charge for. As much as I admire MS, I don't think I'd be making that argument and I doubt most others would either.

My bigger point is this... take the SqlParameter class. You can specify a SqlDbType but there's no compile time type checks to verify that you don't set a SqlDbType.TinyInt to a Dataset. If you did something this dumb (or something less obvious as an oversight), the latter case being something that few can claim innocence from, you won't find out until a code review is done or until Customers start complaining. Ok, that's a bit melodramatic, Q/A would catch it but you get my point.
SqlParameter is sealed as are many classes that would be great to augment or improve. So what do you do? Write your own. No problem right, you can implement IDBParameter. Except you just introduced a very distinct way of implementing this functionality and you're coupled to another library. Now, if I could recompile the library, I could 'fix' this very easily. I could change the default behavior or add new behaviors that did the same thing so as not to interfere with 'normal' ways of doing things.

So the only real problem is that if you changed the code, you'd need to distribute the new libraries and someone could whack your version of it or cause all sorts of problems. This is a valid issue, but has everything to do with implementation and nothing to do with exposing it. Considering most customers would tell you to take a hike if you tried this, it would only be feasible in tightly controlled environments - however in those cases it could make a hell of a lot of sense.

Letting me see how things are implemented without using Reflector and salamander would have saved me HOURS. Letting me see it doesn't give me a lot that I can't get now, it just makes it a lot easier (and yes, there are exceptions but my general point stands). I've learned volumes about class implementation and design from looking at BCL classes. I can't see how letting everyone easily look at good examples (and I know some will make snarky comments about 'good' but the truth is, anyone can learn a lot from looking at thosse implementations) .Look at Rocky's CSLA. Imagine that without having access to the code. If Infragistics didn't sell code, I suspect it would hurt them. I can think of many more examples.

Linux took off precisely b/c people could modify it. it thrives b/c people can modify it not in spite of that fact. And without getting into the whole Open source argument, I can't see how this could be a bad thing. However, I'm prone to longwinded tirades late at night so I know better than to think I'm missing something. If I am, I'd love to hear about it and if it's compelling, I'll gladly change my tune.
Left by Bill on Oct 03, 2007 11:10 PM

# re: yes it's true, .NET Framework Source Code to become available
Requesting Gravatar...
Mostly, he was complaining (err... concerned) that someone would make changes to the framework without fully understanding the "improvements" they were making, and end up making things worse and then he'd have to go in and fix it or work around it, or run into problems because he didn't know things had been changed, etc...

Like I said, it's a moot point now... and honestly, even if someone did do that, it's not like it would truly replace the .NET DLLs, since they wouldn't have MS's private key and so strong naming would be a factor... it would just be side by side, but whatever...

All in all, it's a good thing. I'm glad MS is doing it.
Left by Blogus Maximus on Oct 04, 2007 12:10 AM

# re: yes it's true, .NET Framework Source Code to become available
Requesting Gravatar...
I figured i had run my mouth too much without looking into it. A few points of my argument are not valid. You can't modify it at all and distribute it so my point about the SqlParameter example isn't valid. I still have to think it's a good start.

Then again, Frans dumps a lot of cold water on the thing and I cna't see where he's wrong.
Left by Bill on Oct 04, 2007 9:05 AM

Your comment:
 (will show your gravatar)

Copyright © Chris G. Williams | Powered by: