Print 39 comment(s) - last by Dhaval00.. on Oct 7 at 3:19 PM

Exciting news for software developers...Microsoft is finally letting you take a look under the hood of its .NET libraries.

Microsoft's Visual Studio .NET has always been an industry leader in providing a programming and debugging environment for numerous languages including Visual C++, C++/#, J/J#, Visual Basic, and many more.  However, despite the general good sentiment about the product, Microsoft was oft criticized for not revealing the source code to its libraries.

Now Microsoft is taking steps towards open sourcing its code and finally is letting developers peek under the hood as it releases the source code to the various .NET component libraries.  The move is detailed on the blog of Scott Gu, a Microsoft employee.

Scott Gu and his team have been hard at work to provide coders with access to .NET Framework Libraries source code and allow them to debug this source code in Microsoft's upcoming .NET 3.5 and VS 2008 releases.

The initial release will contain source code for the .NET Base Class Libraries (System, System.IO, System.Collections, System.Configuration, System.Threading, System.Net, System.Security, System.Runtime, System.Text, etc), ASP.NET (System.Web), Windows Forms (System.Windows.Forms), ADO.NET (System.Data), XML (System.Xml), and WPF (System.Windows).

In later months the source code for other remaining libraries will be released as well, including WCF, Workflow, and LINQ.

The .NET libraries will be available to be free downloaded and browsed, and if you own a copy of VS 2008 it will provide special debugging for them.  Owners of VS 2008 will be able to download .NET source code debugger symbols from a Microsoft server.

When you debug a .NET application and hit a breakpoint in your code, you'll now be able to see a debugger call stack.  This stack will contain detailed file and line number information for the .NET Framework classes and methods in your application.

Before, developers were unable to go deeper on system calls such as .DataBind().  Now they will be able to use F11 to step into these methods and explore them.  Better yet, you don't need to have the source files downloaded for the particular library.  With an internet connection, when you hit one of these debug points and step into it, if you don't have the file already, VS 2008 will go and get it for you from Microsoft's servers.

From the debugger you will be able to jump between source code calls at will simply by clicking through the call stack.

This development is significant for those in the software industry, as it represents a major admission on Microsoft's part of the benefits of open source.  It should have a twofold effect of both helping developers better understand the code they are working with and also allow developers to help Microsoft in spotting bugs or shortcomings of their current implementation.  This certainly seems like a move in the right direction by Microsoft.

Comments     Threshold

This article is over a month old, voting and posting comments is disabled

Major Admission - Not
By TomZ on 10/5/2007 12:41:30 PM , Rating: 2
This development is significant for those in the software industry, as it represents a major admission on Microsoft's part of the benefits of open source.

I think you're getting a bit carried away there. First, this is not really "open source," since you can't do anything with the code except for read it. Second, I don't see this as any kind of "admission" of anything as though Microsoft is guilty of doing something wrong.

Finally, I would remind you that Microsoft has long shipped source for other development frameworks (e.g., MFC) for the exact same reasons they released the .NET code. These releases pre-date the popularity of "open source" - the business case for releasing the code is not heavily influenced by the open source movement at all.

One more thing, Scott's last name is "Guthrie," not "Gu."

RE: Major Admission - Not
By JasonMick on 10/5/2007 1:00:54 PM , Rating: 1
Sorry about the name, I don't know the guy and everywhere on his blog said ScottieGu and he ended his posts with just "Scott" so I had no idea. I will try to get that fixed up.

I agree, its not true open source, but it has some of the same ideas...its "open" somewhat, just not for editing or copying.

A common misconception though is that open source means free to copy and use. There are several "open source" licenses and many require you to pay for the use if you commercially develop. Some are ridiculously restrictive about what you can or cannot change. We were trying to use one library at my work that was "open source", but we had to decide against it and implement it our selves as the "open source" lib's copyright would have required us to put a citation to them on our startup screen. There's lots of junk like that in the "open source" world today.

Microsoft is certainly less than pure, but I think you'd agree that their move is at least helpful to their customers, if not feel-good and altruistic.

And remember open source these days is often not all it is cracked up to be anyhow. A lot of it is just people on ego trips as evidenced by their "creative" licenses.

RE: Major Admission - Not
By SeeManRun on 10/5/2007 2:19:59 PM , Rating: 2
Is there anything really stopping you from selecting the code and re-compiling it yourself? Microsoft should not release it into the wild unless it is a deprecated system, for the very reason stated above. The more people change things the more useless they will be to a wider audience. One person's enhancement is another's detriment. If you find a problem in your newly compiled library, and have a fix for it, you can submit it to Microsoft and they can either put it in or reject it (exactly the same as getting your changes into the Linux Kernel)

RE: Major Admission - Not
By TomZ on 10/5/2007 2:30:50 PM , Rating: 2
Based on similar code releases in the past by Microsoft and other companies, I don't think that's a realistic problem. The legal agreement effectively bars and wide-scale distribution, and people who modify and re-compile the code themselves will usually get what they deserve (sometimes beneficial, sometimes detrimental).

I've worked on many projects where software engineers modified library code, and while that is an easy short-term solution to a problem, in the long term it becomes a maintenance headache.

In addition, Microsoft won't be providing the build infrastructure (build scripts, etc.), nor the signing keys. So it will be very difficult or maybe impossible to build a drop-in replacement for existing .NET framework assemblies. That's a good thing.

RE: Major Admission - Not
By JCheng on 10/6/2007 2:50:32 AM , Rating: 3
It's not possible because the .NET base class libraries are strong name signed using a key that only Microsoft has access to. Well, you could recompile your own version of the .NET libraries but it would be difficult to get any software but your own to use it.

(In case you're not familiar with .NET, this is a different kind of signing than the Authenticode signing normal Windows binaries can be subject to--this one is actually verified by the runtime before code is allowed to load, unless an administrator explicitly turns this checking off.)

excellent move!
By Moishe on 10/5/2007 11:14:20 AM , Rating: 2
The only possible way it could hurt Microsoft is if they have bugs or vulnerabilities in their released code. Otherwise this is pure joy ad will likely provide a lot of goodwill for Microsoft.

If they will allow feature enhancements or fixes to be submitted it will be even better.

RE: excellent move!
By clovell on 10/5/2007 11:56:37 AM , Rating: 2
The only possible way it could hurt Microsoft is if they have bugs or vulnerabilities in their released code.
What are the odds of that, eh?

RE: excellent move!
By webdawg77 on 10/5/2007 12:14:05 PM , Rating: 1
Slightly better than Microsoft releasing a product on schedule.

RE: excellent move!
By techfuzz on 10/5/2007 12:24:25 PM , Rating: 2
As a .NET developer I think this is great news. Hopefully, now I can finally delve into the libraries when I get an ambiguous error message to figure out the problem. I swear some of the error messages that come from the .NET libraries are so cryptic you need a deluxe decoder ring to figure them out.

RE: excellent move!
By drank12quartsstrohsbeer on 10/5/2007 6:00:01 PM , Rating: 2
If they will allow feature enhancements or fixes to be submitted it will be even better.

They can get bugfixes that don't affect their bottom line. Its a win-win situation.

Unless flaws are discovered and exploited faster than patches can be dispersed.

RE: excellent move!
By TomZ on 10/5/07, Rating: 0
MSFT releases under the LBDT License
By Dactyl on 10/5/2007 3:02:41 PM , Rating: 2
Microsoft is releasing its code under the "Look But Don't Touch" license.

It's not really open source. That implies that you can look at all of the source. With this license, you can only look at a small "window" of the source (pun intended), and you can only look under certain conditions (namely, that you get the .net framework to crash).

So it's a way for MSFT to farm out the fixing of small bugs. It's not true open source.

The thing is, there is an open source .net framework, it's Novell's .net port for Linux. Since MSFT is allowing that, I don't think we should get upset over this.

RE: MSFT releases under the LBDT License
By TomZ on 10/5/2007 3:33:30 PM , Rating: 2
Where did you get the idea that you could only look at the source at the point of coming across a bug? Microsoft is going to allow you to download the entire set of source as a separate download, apart from the automatic downloads in VS2008.

By Dactyl on 10/5/2007 7:01:18 PM , Rating: 2
You're right. I was confused by the restrictions on browsing (you can browse, but apparently you can't copy and paste?)

RE: MSFT releases under the LBDT License
By BikeDude on 10/6/2007 1:37:21 AM , Rating: 1
So it's a way for MSFT to farm out the fixing of small bugs.

I doubt that very much.

Borland (and others I am sure) have bundled all source to their libraries for years. True, this allows many punters to submit bug reports together with suggestions on how to fix things.

But! Until recently, Borland did not want the legal responsibility involved in "pinching" someone else's code (even if it seemingly was given to them in the bug report). And quite frankly, most of the fixes were sub-par and sometimes bleeding obvious. What was needed were good test cases to help QA, not minute-made fixes that anyone could hack together in a couple of minutes.

So "farming" was not the motive for the library source. The real motive is that it helps experienced developers to faster grasp what is going on. Sometimes (and by that I mean "almost all the time") the documentation simply isn't at a level where it is really usable.

That said, I have modified some of Delphi's library at several occasions, and merged in changes with new versions. It takes a bit of time, but when faced with a serious code kludge to work around a particular library nuisance, it sometimes feels like a walk in the park.

Why do I mention Borland? Because many ex-Borlanders now inhabits Redmond. .Net was co-designed by the same guy that helped design Borland Delphi. The class libraries are virtually identical, but until now, only Delphi's VCL came with source, making .net a closed door to many of the Delphi users who had grown accustomed to having full source available.

By JCheng on 10/6/2007 2:54:22 AM , Rating: 2
So "farming" was not the motive for the library source. The real motive is that it helps experienced developers to faster grasp what is going on. Sometimes (and by that I mean "almost all the time") the documentation simply isn't at a level where it is really usable.

I think this has got to be exactly the reason. Experienced .NET developers are used to using the .NET Reflector utility to decompile the .NET base class libraries already. That works pretty well, but local variables lose their names and you don't get any comments which can be the most valuable thing. And you don't get the source code integrated into your debugging. So this announcement is great for anyone who's had to use Reflector for this purpose.

Reverse Engineer?
By leidegre on 10/6/2007 1:58:35 AM , Rating: 2
Anyone familiar with .NET programming and who's been at it for a while should know about stuff like the .NET Reflector or other good and well working tools.

The thing about the Reflector in this case is that it's a tool that decompiles and recreates the original source with very good accuracy. This is nothing new to me, as I've been using the Reflector to decompile anything I thought needed explaining or exploring. And it works!

On top of this, if you need to change anything you can simply dump a class like that and modify it and use it instead of the actual library, you will have to include it in your release but that's not really a problem. Another thing one might do (but this is only for those of you how really know MSIL and CLR stuff) is to basically dynamically recompile or make source changes on the fly, it's possible and it's very efficient.

BTW the CLI is an open-standard and the MS CLR implementation is available in source, somewhere. Not sure where, but I know that it's available.

This might be new to some of you, but really, it's been around for a while.

By Dhaval00 on 10/7/2007 3:19:48 PM , Rating: 2
I don't see this as a surprise. And quite honestly this functionality has always been there - i.e. to look at what's inside .DataBind() or any other method for that matter. There is this wonderful utility called Lutz Roeder's Reflector and .NET gurus have used it for a long time to interpret what's inside an MS library. I have frequently decompiled the .NET Generics library myself to try and reuse MS's logic in some of my libraries via the Reflector. Quite honestly, after speaking to numerous MS employees, they're not going to go out to every shop and sue your ass for mimicing their code.

What's amazing is the fact that with VS2008 we'll be able to step into those methods and verify the state of our objects via visualizers and the command window. This should definitely help pin down some nasty bugs. I have yet to find a major issue with the VS2008 Beta.

By shamgar03 on 10/5/07, Rating: -1
By shamgar03 on 10/5/2007 11:47:23 AM , Rating: 3
Sorry I didn't specify the beer/speech thing:

By LogicallyGenius on 10/5/2007 5:38:04 PM , Rating: 1
The plan is to stop MONO Project and sue them by accusing of stealing M$ code.

By LogicallyGenius on 10/5/2007 5:47:13 PM , Rating: 1
By TomZ on 10/7/2007 10:01:05 AM , Rating: 2
The plan is to stop MONO Project and sue them by accusing of stealing M$ code.

That doesn't make sense, since Mono actually benefits Microsoft because it allows .NET to target other platforms without Microsoft actually committing resources to development and maintenance. This gives .NET a wider acceptance base.

By smitty3268 on 10/5/2007 11:53:47 AM , Rating: 2
You make a good point that this is dangerous for the open source community. Mono developers will have to be extra careful to never look at this code and there could easily be accusations of copyright infringement from MS if they ever choose to go after it.

However, for the average Windows .NET developer, this is great. Not only for debugging problems, but also profiling and tweaking performance.

By colonelclaw on 10/5/2007 12:16:03 PM , Rating: 2
SURELY you're not suggesting that microsoft have done this so they can sue Mono at a later date if something similar to their code shows up? :)

By smitty3268 on 10/5/2007 1:07:13 PM , Rating: 2
Of course not. Actually, I expect they'll make a vaguely worded announcement about how Mono infringes on ~200 of their copyrights, without actually detailing any specifics which could be fixed, and then say that anyone using Linux should be very careful and buy a license from them.

MS actually doesn't sue that often. :)

By BladeVenom on 10/5/2007 3:19:08 PM , Rating: 2
They'll just get SCO to do their dirty work for them.

By Locutus465 on 10/5/2007 3:54:19 PM , Rating: 2
Considering microsoft is helping to develop mono, I seriously doubt this..

By rtrski on 10/5/2007 4:31:13 PM , Rating: 2
Kind of like how RAMBUS was on the JEDEC committee determining next generation memory standards, and 'accidentally' put stuff they'd already patented into the standard...then sued everyone for royalties?

Nah, no one ever does that....

By smitty3268 on 10/5/2007 5:57:10 PM , Rating: 2
MS is not helping to develop Mono (at least not officially, i do think there is some unofficial talks between the developers). They are helping build the Silverlight clone on Linux, which is built on top of Mono, but shouldn't really be considered the same thing.

By shamgar03 on 10/5/2007 1:06:14 PM , Rating: 2
Thats a good point. I haven't programmed in .NET in so long that I forgot there were libraries you couldn't step into (or see the stack of). It will be nice for people who don't write code without bugs the first time =).

Probably everyone.

By Trisagion on 10/5/2007 12:46:32 PM , Rating: 2
This will be really cool. Microsoft is getting ready to embrace the open source community. Now all that's left is to extend and extinguish...

By Spivonious on 10/5/2007 1:16:02 PM , Rating: 4
Open source does not mean you are free to edit. Open source means you can see the source code, no more, no less. Why on earth would MS want people altering their source code? It would destroy any advantage to using the framework and we'd be left with a bunch of different versions to wade through and to make sure we had the right one installed when running a .NET application.

By Master Kenobi on 10/5/2007 1:23:11 PM , Rating: 2
Yea, but thats something Open Source advocates tend to blur. Open source means you can see the code, not necessarily edit it and re-use it. Thats why there are generally the standard GPL agreement to go with it, which does tell you what you can and can't do with that source code.

It's a nice idea that we can see inside these libraries now, and good for debugging. However, this is going to draw some flame from the OS communities for not letting them freely modify it or re-use it in their own stuff.

By shamgar03 on 10/5/2007 4:36:28 PM , Rating: 2
I find it funny that you say that open source just means you can see the code and then you refer to the OS community (or perhaps that is operating system) and say they will probably flame over it. If the open source community is made up of people who don't think this is open source, then my bet is that it isn't open source. The whole point of open source is that anyone can use it (relatively) freely and modify it. That said, you the earlier person was correct in saying that Microsoft never said this was open source, though you wouldn't get that impression from the DT article.

By TomZ on 10/5/2007 5:04:38 PM , Rating: 1
I agree, I think that Jason was incorrect in stating this was an "open source" release. Technically, you can argue the meaning of "open source" would include this situation, however, I agree with you that "open source" typically means some degree of freedom to use and modify the code, which does not apply here.

By Screwballl on 10/5/2007 1:27:03 PM , Rating: 2
that is how I read it.... look but don't touch

This is MS's way of fishing... see how many open source programs "borrow" code and then nail them with a lawsuit to close down the competition...

watch, in 2-3 years this will happen.

By TomZ on 10/5/07, Rating: 0
By PrinceGaz on 10/5/2007 3:13:14 PM , Rating: 3
Just because you're paranoid doesn't mean they are not out to get you.

"So if you want to save the planet, feel free to drive your Hummer. Just avoid the drive thru line at McDonalds." -- Michael Asher

Copyright 2016 DailyTech LLC. - RSS Feed | Advertise | About Us | Ethics | FAQ | Terms, Conditions & Privacy Information | Kristopher Kubicki