Slashdot Log In
Microsoft Releases Source of .NET Base Classes
Posted by
Soulskill
on Fri Jan 18, 2008 04:02 AM
from the yes-there-is-a-catch dept.
from the yes-there-is-a-catch dept.
Disgruntled Fungus writes "A few months ago, we discussed Microsoft's intention to open source the .NET libraries. According to a developer's official blog, the source code is now available. The source to libraries such as System, IO, Windows.Forms, etc. can now be viewed and used for debugging purposes from within Visual Studio. Instructions for doing so have also been provided. The source code has been released with a read-only license and 'does not apply to users developing software for a non-Windows platform that has "the same or substantially the same features or functionality" as the .NET Framework.'"
Related Stories
[+]
Open.NET — .NET Libraries Go "Open Source" 310 comments
An anonymous reader writes "whurley just posted a blog about Microsoft's announcement To Make .NET Libraries available under a crippled 'Open Source' program using their new Microsoft Reference License. The post includes the official pr doc from Microsoft as well as several points about how this really isn't open source. One example: If a developer finds a bug in the code, rather than fixing it themselves and submitting a patch to the community they'll be encouraged to submit feedback via the product feedback center."
Submission: Microsoft releases source of .NET base classes by Anonymous Coward
This discussion has been archived.
No new comments can be posted.
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
Full
Abbreviated
Hidden
Loading... please wait.
you know what *that* sounds like.. (Score:5, Insightful)
(Think "oh, that implementation really looks like ours! you must have read it! here's a lawsuit for you")
Re:you know what *that* sounds like.. (Score:4, Informative)
(see also Lutz Roeder's popular
Parent
Re: (Score:2)
This just means that you can debug it easier now (you could save the source code in reflector and use that do debug in the past)
Re: (Score:2)
Re:you know what *that* sounds like.. (Score:5, Interesting)
It is correct to say that .NET Reflector is a decompiler. It just happens that IL (the bytecode that .NET languages compile to) is quite high-level, so it's much easier to turn IL into readable C# code than it is to turn x86 machine code into C. .NET assemblies also carry a lot of metadata along with the code, allowing Reflector to find the namespaces, classes, properties and methods without needing the original source code. Reflector itself also does some other magic when possible. For example, it can read in the debug information that the C# compiler can optionally produce (the .pdb file) and use that to fill in the things that you can't find out from the assembly alone.
An interesting (for some values of "interesting") exercise is to take some VB.NET code, compile it and then use Reflector to view it in C#. Since the two compilers don't generate completely equivalent code, you can get some unexpected results. A good example to try is some VB.NET code using late binding of methods on variables of type "Object", which isn't a language feature in C#.
Parent
Re: (Score:3, Insightful)
Re:you know what *that* sounds like.. (Score:4, Insightful)
You have one person read the source, document it and put the documentation online somewhere.
You have second person read documentation and re-write functionality of code.
ReactOS does this exact same thing to re-implement the Win32 API, except that they have to 'break' the executable files. (My memory is shot, I can't remember the term for this, or the process as a whole...)
So long as the documentation does not contain source, merely what each function does, and so long as there is no obvious link between the two persons, there should be no problem.
Parent
Re: (Score:2)
Clean room reverse engineering? Or something along those lines right?
Re: (Score:2)
You're right, "clean room" technique is probably the more correct term. But the term "Chinese wall" sounds more exotic, so I'm going to bet that that's the one he was trying to think of.
Re: (Score:2)
Re: (Score:2)
> (My memory is shot, I can't remember the term for this,
Decompiling?
Re: (Score:2)
Re:you know what *that* sounds like.. (Score:4, Insightful)
Parent
Re: (Score:2)
don't be overly dramatic (Score:3, Insightful)
However, don't be overly dramatic. This sort of thing isn't new and open source projects know how to cope with it. Microsoft would have a hard time making any claim actually stick, unless there was blatant infringement. Furthermore, the Mono project can now also simply have some independent third party regularly check their code against Microsoft's to make sure nothing sneaks in.
read the fine print (Score:2)
Re: (Score:2)
Re: (Score:3, Insightful)
Re: (Score:3, Insightful)
I doubt it as the line I suspect you're referring to, "the same or substantially the same features or functionality" as the
Bob
I doesn't sound like that (Score:2)
Re: (Score:3, Interesting)
Microsoft is actively working with Mono to make the "Moonlight" Linux port of Silverlight a reality.
Scott Guthrie blog post about this [asp.net]
The catch. (Score:2)
So you can look at the source all you want, unless you're a mono developer.
NOT open source (Score:5, Insightful)
Yes, and as one of the first posters pointed out [slashdot.org], unlike Java [java.net] for instance, this is NOT being published under an open source licence, Microsoft even says so. So why do you keep using the term?
Re: (Score:2)
Re: (Score:3, Insightful)
Very obviously a "back off!" clause for Mono and dotgnu.
Previously, people referred to the source by using Reflector ; this of course, doesn't quite produce the same
Re: (Score:3, Funny)
Re:NOT open source (Score:5, Insightful)
Parent
Because "Open Source" is a stupid term (Score:3, Interesting)
Re: (Score:3, Insightful)
And thanks to you for rigid, dogmatic, inflexibile intransigence and refusal to recognize any deviation from your True Path in a world of absolutes as anything but schism and heresy. Hey look, two can play. I recognize your nick (I've was here originally with a 4-digit UID, with a name I've discarded). I always believed you were abov
Yay! (Score:5, Funny)
Can't wait to see the best bits of it on The Daily WTF! \o/
It's in the source! (Score:5, Funny)
Re: (Score:2)
Reflector (Score:5, Informative)
Reflector is downloadable from http://www.aisto.com/roeder/dotnet/ [aisto.com]. And it's obfuscated, so it won't run usefully on itself
Looks rather clunky (Score:5, Informative)
* Each source file you debug into is dynamically downloaded once for each session and not retained.
* Setting breakpoints in the source is a multi-step process, because the source is different from the corresponding symbol files because the copyright banners they insert change the CRC. You have to tell the IDE to ignore that.
* You have to manually tell it to load symbols for each file.
* The symbols are also served up from an MS server (but they are cached beyond a single session).
* Some of these symbol files are 10MB, so VS "may be unresponsive" while you download them.
* "Go to Definition" doesn't work.
This in contrast to the same support in Eclipse, where all you have to do is
* Download the source
* Tell the IDE where to find the source
No, you'll get an HTTP 400 (Bad Request) response.
Given that it all seems so inconvenient to use, I think I may be sticking to Reflector.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Re: (Score:3, Insightful)
Give them some credit here. You only have to tell VS to load files outside the current call stack.
That said, I agree that this sucks. Needing to purchase VS 2008 and debug my code to see theirs is annoying to say the least. I was hoping to download the source and analyze Windows.Forms.Controls, System.Data.DataViewManager, and various implementations of the IBindable interface... Things that plague my understanding of the ".Net Maze" to this day.
This is Not a Big Deal - Limited Use. (Score:2, Insightful)
This is probably only useful from an *educational* point-of-view and when you think about it, there is so much publically available code out there already how much more will you learn from the
I thought one of the major benefits of OOP was code abstraction - in theory there should not be a need to see the implementatio
it's not open source (Score:5, Informative)
In fact, the real problem with this is that, in case of ambiguities, people will code increasingly to Microsoft's source code instead of the specification. Furthermore, after having released it, Microsoft may attempt to claim that the Mono project copied some of their source code in violation of the license.
One can't prevent Microsoft from doing this, but it's not a good thing.
Re: (Score:2, Interesting)
You have to be *careful* how you use this.
Mind you what if you *do* discover a bug in Microsoft's code, what can you do?
You can't modify the source code - 'it's read only', even if you were allowed to to modify it you'll 'break' standards.
You can tell Microsoft - we all know how well they listen to 'customers/developers' and how long will it take them to fix it.
If you also use mono you will not be able to contribute to the project because you have seen 'the code'.
I've been using
Re: (Score:3, Funny)
If you see a "bug" in Microsoft's code, can you write a fix for it, date stamp it and sell it to MS as your code with a restrictive license?
Re: (Score:3, Insightful)
In fact, the real problem with this is that, in case of ambiguities, people will code increasingly to Microsoft's source code instead of the specification.
Come now. One of the benefits of open source that we constantly hear is that if any question of the actual behavior of something comes up, the developer can go straight to the source. Now you are saying that this is a bad thing?
I agree with you that developers should code to the interface as documented, but if that is the case then most open source developers should not look at the source code for the underlying packages they use.
I think MS is doing this to make life simpler for their customers and
Misread that title (Score:3, Funny)
Not everything is about you (Score:4, Insightful)
The Source for the Runtime is also out. (Score:5, Interesting)
Re: (Score:3, Funny)
Re: (Score:3, Informative)
And then there's this:
Features
The Shared Source CLI archive contains the following technologies in source code form:
So it only does C# and JScript? WTF, hello, VB? Also, what other platforms? Vista? I thought that a
Re: (Score:2)