Slashdot Mirror


Microsoft Releases Source of .NET Base Classes

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.'"

110 comments

  1. you know what *that* sounds like.. by k-zed · · Score: 5, Insightful

    Microsoft has just begun killing Mono.

    (Think "oh, that implementation really looks like ours! you must have read it! here's a lawsuit for you")

    --
    we discovered a new way to think.
    1. Re:you know what *that* sounds like.. by Jugalator · · Score: 3, Informative

      They could already have done this if they wanted to though.

      (see also Lutz Roeder's popular .NET Reflector software)

      --
      Beware: In C++, your friends can see your privates!
    2. Re:you know what *that* sounds like.. by apathy+maybe · · Score: 3, Insightful

      Really?
      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.

      --
      I wank in the shower.
    3. Re:you know what *that* sounds like.. by dosius · · Score: 1

      Clean room or black-box reverse engineering.

      -uso.

      --
      What you hear in the ear, preach from the rooftop Matthew 10.27b
    4. Re:you know what *that* sounds like.. by p0tat03 · · Score: 1

      Except these look like they're just the core classes - which have ALREADY been implemented in Mono. We know that Mono team didn't have access to the source, so merely a timestamp on the source files will prove non infringement.

    5. Re:you know what *that* sounds like.. by vux984 · · Score: 1

      My memory is shot, I can't remember the term for this, or the process as a whole...)

      Clean room reverse engineering? Or something along those lines right?

    6. Re:you know what *that* sounds like.. by Anonymous Coward · · Score: 0

      Microsoft has just begun killing Mono. Mono is a suicidal project, just like all projects that aim to some compatibility with ms-owned "standards"...
    7. Re:you know what *that* sounds like.. by Loconut1389 · · Score: 1

      double-blind reverse engineering?

    8. Re:you know what *that* sounds like.. by oliverthered · · Score: 1

      mod parent up, you could already view the source code be tunining the internediate language back into c# or vb or c++ with reflector.

      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)

      --
      thank God the internet isn't a human right.
    9. Re:you know what *that* sounds like.. by oliverthered · · Score: 1

      I seem to remember that interfaces could also come under copyright, so there's a potential problem wherever your using the same interface as the thing your trying to clone.

      --
      thank God the internet isn't a human right.
    10. Re:you know what *that* sounds like.. by nmg196 · · Score: 1

      > except that they have to 'break' the executable files.
      > (My memory is shot, I can't remember the term for this,

      Decompiling?

    11. Re:you know what *that* sounds like.. by CowboyBob500 · · Score: 2, Insightful

      Microsoft has just begun killing Mono.


      I doubt it as the line I suspect you're referring to, "the same or substantially the same features or functionality" as the .NET Framework.'", could equally apply to Java.

      Bob
    12. Re:you know what *that* sounds like.. by nschubach · · Score: 1

      That's not the actual source. It's an interpretation of what the source does. It's kind of like a reverse compiler if that makes sense. (At least that's how I understand it.)

      --
      Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
    13. Re:you know what *that* sounds like.. by Pikoro · · Score: 1

      You sir, are wrong.

      I have used reflector on in house software written in .net and I can tell you, it was nearly 100% accurate in re-creating the source code, including variable names and comments of the original developer.

      --
      "Freedom in the USA is not the ability to do what you want. It is the ability to stop others from doing what THEY want"
    14. Re:you know what *that* sounds like.. by Nurgled · · Score: 4, 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#.

    15. Re:you know what *that* sounds like.. by CastrTroy · · Score: 1

      Why not just have the developer read the .Net MSDN docs for the .Net API. It's not like anything they are doing is extremely complicated. You should be able to get things almost identical by just reading the .Net API docs. Granted, there's a lot of functionality, and it would take quite an effort to code all that, especially considering Microsoft's tendency to continuously add to the API, but it's not something that you would need to see the source to implement.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    16. Re:you know what *that* sounds like.. by KWTm · · Score: 1

      My memory is shot, I can't remember the term for this, or the process as a whole...)

      Clean room reverse engineering? Or something along those lines right?
      I'm guessing he's thinking about "Chinese wall".

      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.
      --
      404555974007725459910684486621289147856453481154 in hex is "You sank my Battleship?"
      [GPG key in journal]
    17. Re:you know what *that* sounds like.. by Ash-Fox · · Score: 3, Insightful

      Why not just have the developer read the .Net MSDN docs for the .Net API. It's not like anything they are doing is extremely complicated.
      Because the MSDN documents are not accurate. Many times I found the API documentation do not contain the true behavior of certain APIs. This is one of the reasons why Wine requires testing API functionality on Windows first instead of just basing it all on the MSDN documentation.

      --
      Change is certain; progress is not obligatory.
    18. Re:you know what *that* sounds like.. by fleck_99_99 · · Score: 2, Interesting

      Microsoft is actively working with Mono to make the "Moonlight" Linux port of Silverlight a reality.

      Scott Guthrie blog post about this

      "Over the last few months we've been working to enable Silverlight support on Linux, and today we are announcing a formal partnership with Novell to provide a great Silverlight implementation for Linux. Microsoft will be delivering Silverlight Media Codecs for Linux, and Novell will be building a 100% compatible Silverlight runtime implementation called "Moonlight".

      Moonlight will run on all Linux distributions, and support FireFox, Konqueror, and Opera browsers. Moonlight will support both the JavaScript programming model available in Silverlight 1.0, as well as the full .NET programming model we will enable in Silverlight 1.1.

      --
      seven two six five
      seven four six one seven
      two six four two e
    19. Re:you know what *that* sounds like.. by Randolpho · · Score: 1

      Because the MSDN documents are not accurate. Many times I found the API documentation do not contain the true behavior of certain APIs. This is one of the reasons why Wine requires testing API functionality on Windows first instead of just basing it all on the MSDN documentation.
      Heh... sounds like just about every software shop in the history of everything. :D

      Sometimes I wish the documentation at my current job came even *close* to the amount of detail provided by MSDN. Ok, scratch that. *EVERY DAY* I wish the documentation at my current job came even close to the amount of detail provided by MSDN.
      --
      "Times have not become more violent. They have just become more televised."
      -Marilyn Manson
    20. Re:you know what *that* sounds like.. by Anml4ixoye · · Score: 1

      Sorry, sir, you are wrong. It can disassemble if you have compiled in debug mode without optimizations. Try this some time:

      public class Foo
      {
          public Foo()
          {
                int a = 5;

                Console.WriteLine("My name is Foo!");
          }
      }

      Compiling in debug mode will leave all of that. Compile in Release mode, with optimizations - the compiler will see that you never use "a" and will make it go away. So if you then disassemble that with Reflector, you won't see it.

      Hopefully you aren't using Debug assemblies in production. If so, claim that for a big raise you can improve performance of your production systems, and then recompile them in release mode.

    21. Re:you know what *that* sounds like.. by arotenbe · · Score: 1

      It just happens that IL (the bytecode that .NET languages compile to) is quite high-level Does anyone remember the joke about Microsoft introducing object-oriented assembly language?
      --
      Tomato wedge sperm darts that are Republican.
    22. Re:you know what *that* sounds like.. by jcgf · · Score: 2, Insightful

      If you're able to get comments from a dissassembled binary, then something is wrong. The whole point of comments is that they are ignored by the compiler. If what you say is true, then MS really screwed up.

    23. Re:you know what *that* sounds like.. by nuzak · · Score: 1

      The prevailing wisdom is that header files that only describe an interface (that is, not C++ that inlines all the logic) are not copyrightable. Actually they're kind of a silly situation in that the header file itself may be copyrighted, but a duplication of all its content does not violate it. Kind of like Pierre Menard's Don Quixote.

      --
      Done with slashdot, done with nerds, getting a life.
    24. Re:you know what *that* sounds like.. by Anml4ixoye · · Score: 1

      Actually, what is likely happening is that Reflector can see from the PDB files where the actual source is, and is displaying that. I know some of our other debugging tools (VS, WinDBG) can do this. I haven't actually tried it in Reflector though.

    25. Re:you know what *that* sounds like.. by 00lmz · · Score: 1

      How is this any different from the Java SDK including source code for the class libraries? That didn't stop the GNU Classpath people...

    26. Re:you know what *that* sounds like.. by dreamchaser · · Score: 1

      Detail is meaningless if you cannot trust the accuracy of said details. The MSDN docs are next to useless for the purposes of reverse engineering without a lot of messing around.

    27. Re:you know what *that* sounds like.. by Randolpho · · Score: 1

      Detail is meaningless if you cannot trust the accuracy of said details.
      Given the size of MSDN and my own anecdotal evidence using it, I'd say that "inaccurate" details in MSDN are fairly rare. They are there, yes, but on the whole I'd say the docs are pretty accurate. MSDN is frequently not detailed enough, I'll grant you, but as I said, it's heads and shoulders above the detail provided by far too many software shops and middle-ware library providers (open source or not) these days.

      The MSDN docs are next to useless for the purposes of reverse engineering without a lot of messing around.
      Very true. Of course it's also true that a spoon is next to useless for the purposes of building a skyscraper, but such is not the purpose of the spoon.
      --
      "Times have not become more violent. They have just become more televised."
      -Marilyn Manson
    28. Re:you know what *that* sounds like.. by DragonWriter · · Score: 1

      Of course it's also true that a spoon is next to useless for the purposes of building a skyscraper, but such is not the purpose of the spoon.


      Well, yes, and the next time someone posts on a Slashdot discussion "Why don't they just build skyscrapers out of spoons", that'll be relevant. However, the question someone asked in this thread was (paraphrased) why don't people reverse-engineering .NET just use the MSDN documentation, so the answer that the MSDN documentation (however adequate its accuracy may be for other purposes) is not sufficiently accurate to support that is perfectly reasonable and appropriate, and your spoon-skyscraper comparison entirely misses the point of why the accuracy of MSDN was being discussed in the first place.

    29. Re:you know what *that* sounds like.. by Randolpho · · Score: 1

      Well, yes, and the next time someone posts on a Slashdot discussion "Why don't they just build skyscrapers out of spoons", that'll be relevant. However, the question someone asked in this thread was (paraphrased) why don't people reverse-engineering .NET just use the MSDN documentation, so the answer that the MSDN documentation (however adequate its accuracy may be for other purposes) is not sufficiently accurate to support that is perfectly reasonable and appropriate, and your spoon-skyscraper comparison entirely misses the point of why the accuracy of MSDN was being discussed in the first place. Ahh, I see the problem: You misinterpreted the original remark. Or I did, depending on how you look at it. The remark was this:

      Why not just have the developer read the .Net MSDN docs for the .Net API. It's not like anything they are doing is extremely complicated. You should be able to get things almost identical by just reading the .Net API docs. Granted, there's a lot of functionality, and it would take quite an effort to code all that, especially considering Microsoft's tendency to continuously add to the API, but it's not something that you would need to see the source to implement.
      My read is that the suggestion was not to reverse-engineer the .Net API but to *duplicate* the API. That should be quite possible using just the MSDN docs, which are surprisingly detailed and rarely inaccurate. Mono has done a great job so far doing just that. You don't have to do every method of every class exactly the same way Microsoft did step-for-step as long as the inputs, outputs, and state changes remain the same.
      --
      "Times have not become more violent. They have just become more televised."
      -Marilyn Manson
  2. The catch. by Xiph · · Score: 1

    The license 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.

    So you can look at the source all you want, unless you're a mono developer.
    --
    Blah blah sig blah blah blah irony blah blah
  3. NOT open source by LarsWestergren · · Score: 5, Insightful

    A few months ago, we discussed Microsoft's intention to open source the .NET libraries.

    Yes, and as one of the first posters pointed out, unlike Java for instance, this is NOT being published under an open source licence, Microsoft even says so. So why do you keep using the term?

    --

    Being bitter is drinking poison and hoping someone else will die

    1. Re:NOT open source by wpanderson · · Score: 0

      The source is being opened, not Open Sourced. Note the use of lower case which to me differentiates from previously closed source being opened to public scrutiny and made available under some licence, and previously closed source being made Open Source under the definition of Open Source.

      --
      neuro at well dot com (when I post, it's my opinions, no-one elses)
    2. Re:NOT open source by wbren · · Score: 1

      Yes, they should be definitely be calling it a "shared source license" instead, since that's what it technically is.

      --
      -William Brendel
    3. Re:NOT open source by Dr_Barnowl · · Score: 2, Insightful

      The license is the "Microsoft Reference License", their "look, but don't touch, and refrain from competing" license. They've loosened it a little - you are now allowed to use the licensed material to develop software that has "the same or substantially the same features or functionality" as the .NET Framework ; as long as it's still on Windows.

      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 output as the original. My guess is that MS are more comfortable letting people see the original source than disassembling it - if people have seen the "real source", they are more vulnerable to accusations of copyright infringement.

      Plus it means their IDE gains some of the advantages which Java IDEs have enjoyed for some time, at hardly any nasal skin cost to MS because people were looking at "the source" anyway.

      Because the source is only cached within the VS session and has to be reloaded each session, and because it comes from an MS server, they maintain control, and keep tabs on who is looking. I bet their webmaster has a comprehensive list of all IP addresses suspected to be OSS sympathizers....

    4. Re:NOT open source by Ash-Fox · · Score: 2, Funny

      I bet their webmaster has a comprehensive list of all IP addresses suspected to be OSS sympathizers....
      This AOL IP address don't look right, it must be a OSS sympathizer!
      --
      Change is certain; progress is not obligatory.
    5. Re:NOT open source by Coryoth · · Score: 4, Insightful

      ...to develop software that has "the same or substantially the same features or functionality" as the .NET Framework ; as long as it's still on Windows...Very obviously a "back off!" clause for Mono and dotgnu. Which is sad really. Only Microsoft could see such a requirement as good, and herein lies the problem of the monopoly. Ultimately .NET is a (relatively) nice programming framework and set of libraries, and were it developed by anyone but Microsoft they would welcome attempts to expand it's availability. Pretend .NET was developed by a small company that had focussed just on the Windows platform. If they were going to open source the libraries, the first thing they'd be doing is ensuring license compatability with Mono so they can expandtheir market. Hell, look at anyone other than Microsoft who do .NET stuff, like Chrome, or the .NET compiler for Eiffel: they both put in significant work to try and make sure they work with Mono (I believe the Eiffel guys actually have active discussions with the Mono team). In any sane world this would be the thing to do, it's only in Microsoft monopoly land that these sorts of license restrictions make any sense whatsoever. Which really shows you some of the ways the MS monopoly is holding the industry back.
    6. Re:NOT open source by Metaphorically · · Score: 1

      No, not opened or Opened. Don't play into that. Being able to read the source doesn't make it open, capital letter or not. It just means you can see the source and read it. The word has been beaten down by marketing nonsense to the point where it's losing all its meaning. The term open implies the ability to have some control. This is quite the opposite. If you satisfy yourself with such a tiny semantic change then you can spend all your time on semantics and none doing anything useful. Refute the misuse of the word and go on with more important matters.

      --
      more of the same on Twitter.
    7. Re:NOT open source by Anonymous Coward · · Score: 0

      title should be changed to Microsoft is Misleading the public with a false misuse of the word opensource. They have in fact not released there stuff opensource its still closed its just a term they used to say they are letting people look at the code..

      entrapment?

  4. Yay! by 4D6963 · · Score: 4, Funny

    Can't wait to see the best bits of it on The Daily WTF! \o/

    --
    You just got troll'd!
    1. Re:Yay! by 0x000000 · · Score: 1

      I wish I had modpoints to mod you up!

      Thing is, by posting it on the Daily WTF, we are not allowed to write anything remotely similar to any of the screwed up code Microsoft has produced, so it is a catch 22. I want to see it, at the same time, I don't!

      --
      cat /dev/null > .signature
    2. Re:Yay! by drachenstern · · Score: 0, Flamebait

      Obviously by you wanting to repeat the same sort of code f*ups as posted to TDWTF, then I think it is safe that we let you see the code. We just don't want you to contribute. Thanks for playing "That's Not What I Meant To Say"

      As CmdrTaco frequently reminds us, "You should have used preview"

      --
      2^3 * 31 * 647
  5. The catch-Fish stew. by Anonymous Coward · · Score: 0

    "So you can look at the source all you want, unless you're a mono developer."

    Like they really needed to anyway?

    My captcha is "ceases". Hmmm.

  6. It's in the source! by nighty5 · · Score: 4, Funny

    Too bad the library is written in VB....

    1. Re:It's in the source! by Anonymous Coward · · Score: 0

      C#, actually.

    2. Re:It's in the source! by CastrTroy · · Score: 1

      What is wrong with VB.Net? It has exactly the same feature set as C#. I realize that it was bad in the past, but it's grown up quite a bit since the old days.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    3. Re:It's in the source! by Anonymous Coward · · Score: 0, Flamebait

      What's wrong with COBOL? It has exactly the same features as VB.NET.

  7. Reflector by Anonymous Coward · · Score: 5, Informative

    Of course, anyone doing serious development with .NET has been looking at the source for years now in any case by using Lutz Roeder's .NET Reflector, which is a C# (etc) decompiler (not just a disassembler). It's the only way to reliably discover and work around the horrible bugs and misdesigns in MS's libraries. (Yes, WSE, I'm looking at you.)

    Reflector is downloadable from http://www.aisto.com/roeder/dotnet/. And it's obfuscated, so it won't run usefully on itself :-)

    1. Re:Reflector by I'm+Don+Giovanni · · Score: 1

      Reflector is nice (even more so for analyzing how other .NET languages actually work (e.g. one can user Reflector on an F# module to translate that code into C#).

      But the actual source code is way better because it provides comments, which is many times the most important part of the code. Who knows, maybe some of the "misdesigns" of which you speak are perfectly reasonable when seeing the comments.

      Also, this allows stepping through the code in a debugger, which Reflector doesn't allow (to my knowledge).

      --
      -- "I never gave these stories much credence." - HAL 9000
  8. fake Open Source, Microsoft style by Anonymous Coward · · Score: 0, Flamebait

    It has strings attached, as usual, in order to render it useless in any true Open Source project, but does its job of promoting a non existent support of Open Source from Microsoft.

    IMO, the only reason for that PR is clearly showed in the nice graph at this page

    1. Re:fake Open Source, Microsoft style by ThirdPrize · · Score: 1

      Excuse me, but why would M$ even think about open sourcing one of the fundamental pieces of their archietecture? How could they use its functionality if that was left up to some group outside the company?

      --
      I have excellent Karma and I am not afraid to Troll it.
    2. Re:fake Open Source, Microsoft style by msuarezalvarez · · Score: 1

      aproximately in a similar way as, say, you can use Apache?

    3. Re:fake Open Source, Microsoft style by ThirdPrize · · Score: 1

      But M$ don't use it or ship it as part of Windows? I was talking about M$ point of view. Apache is just anothe piece of software that runs on windows. Doesn't matter if it is open source or not.

      --
      I have excellent Karma and I am not afraid to Troll it.
    4. Re:fake Open Source, Microsoft style by Anonymous Coward · · Score: 0

      Ah, "M$". Nothing says "Warning: Annoying zealot ahead" like that ever-hilarious "oh-look-at-how-much-cred-i-have" staple of the dissatisfied 15-year old.

    5. Re:fake Open Source, Microsoft style by ThirdPrize · · Score: 1

      FWIW I am taking the M$ side of the argument. I am the wrong side of 30 and just too darn lazy to type "Microsoft" every time.

      --
      I have excellent Karma and I am not afraid to Troll it.
    6. Re:fake Open Source, Microsoft style by Anonymous Coward · · Score: 0

      Bullshit. Try typing "MS" or "ms" then, which is even easier to type (no shift-key!).

      You may be on the wrong side of 30, but you are mentally a 15-year old.

  9. Looks rather clunky by Dr_Barnowl · · Score: 4, Informative
    Has anyone looked at the instructions for using these sources in Visual Studio? It seems monstrously crippled compared to debugging third party sources in Eclipse.

      * 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

    14) Can I point a web browser at the symbols URL and download the symbols directly?

    No, you'll get an HTTP 400 (Bad Request) response. So in addition, you'll need a professional version of Visual Studio, because the Express versions don't support the Source Server feature.

    Given that it all seems so inconvenient to use, I think I may be sticking to Reflector.
    1. Re:Looks rather clunky by CastrTroy · · Score: 1

      How long will it take somebody to sniff the protocol with Wireshark, and figure out how to download all the source code?

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    2. Re:Looks rather clunky by thona · · Score: 1

      I rather like it. The MS system pulls always exactly the correct file version for th DLL in question - after a patch, files are re-downloaded. And it doesn ot go into MS classes for single stepping without being explicitly told. In 90% of the cases that is what developers want. When I single step through a front end, I sont want to automatically go through all the stupid source of the components in question. If I debug a component, though, this may be handy.

    3. Re:Looks rather clunky by owlstead · · Score: 1

      Due to security reasons my computer at work doesn't even have an online connection. This is becoming more and more a nuisance, but the way Microsoft tend to deal with this is just horrible. One more reason to not go for Microsoft as the main platform. (offline activation sure is fun).

    4. Re:Looks rather clunky by HoosierPeschke · · Score: 1

      Or if you use squid or privoxy to proxy. That's how I get the updated Microsoft drivers and such from Windows update and flash based clips...

      --
      Mr. Universe: "They can't stop the signal, Mal. They can never stop the signal."
    5. Re:Looks rather clunky by coolGuyZak · · Score: 2, Insightful

      You have to manually tell it to load symbols for each file.

      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.

      Thanks, MS. Thanks for, once again, shitting in my cereal.

    6. Re:Looks rather clunky by nrjyzerbuny · · Score: 1

      If you want to view the code without debugging, try .NET Reflector. It uses .NET reflection to show the source of non-obfuscated assemblies. All of the .NET base classes are non-obfuscated, and easy to read. You can also reflect upon Reflector if you're interested in how it does it's thing. Good stuff.

    7. Re:Looks rather clunky by KlomDark · · Score: 1

      Then your security people are incompetent and you should consider getting a real job with a real company.

    8. Re:Looks rather clunky by Anonymous Coward · · Score: 0

      OK losers. Probably only 1 out of a 1000 slashdot commenters actually know anything about their topic.

      Microsoft has already stated that there will be a standalone download, but they concentrated on the dynamic download first. They have also listed additional assemblies (.NET DLLs basically) that will be offered soon.

      Finally, no it doesn't redownload every time -- you have to assign a cache directory.

    9. Re:Looks rather clunky by DigitlDud · · Score: 1

      Microsoft has stated that the whole source will be available for download at once in the future.

      Anyway, you could argue that this approach has some advantages since you don't HAVE to download the entire source, or worry about what version of the binaries you have.

    10. Re:Looks rather clunky by freakyfreak2 · · Score: 1

      Actually you can tell VS to download all the libraries and just run from those. It's really easy set up. I did it this morning in less than 2 minutes I was stepping into a System.Windows.Forms class

    11. Re:Looks rather clunky by coolGuyZak · · Score: 1

      Microsoft has already stated that there will be a standalone download...

      Hey, chief, it's not difficult to distribute the source "standalone". It's called a ZIP file. Attach a EULA on the download page, and off you go. Btw, I didn't see a reference to standalone downloads in TFA. Could I get a link, please?

  10. This is Not a Big Deal - Limited Use. by mrpacmanjel · · Score: 2, Insightful

    You can only *look* at the code and you cannot re-distribute the libraries not to mention the legal aspects (specifically mono).

    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 .net sources anyway (I'm sure someone here will prove me wrong).

    I thought one of the major benefits of OOP was code abstraction - in theory there should not be a need to see the implementation.

    In fact too much knowledge could be a 'bad thing'(tm) you may start relying on *how* something is implemented - if the implementation changes your code *may* break.

    As for the mono project I believe only the implementation of libraries is the issue. The vm and c# are a public standard and 'patent free?'- maybe mono should diverse in a seperate direction rather trying to catchup with Microsoft (considering how .net 3.5 has bloated because of the vista specific libraries have been added, and yet another series of APIs being included - typical Microsoft).

    The major benefit of mono for me is that I can use Microsoft's .net at work, at home I can use mono on Linux and my .net coding experience is relevant to both platforms.

  11. it's not open source by nguy · · Score: 4, Informative

    Microsoft is not releasing those libraries as open source. What they are doing is what they and other companies have been doing for a long time: releasing some of their source code in read-only form to "help" people debug.

    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.

    1. Re:it's not open source by mrpacmanjel · · Score: 2, Interesting

      Absolutely agree!

      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 .net in a major project at work and as yet not needed to see the source code of the libraries (I probably never will) and I know there are bugs/'features' in the libraries but there are workarounds - it's not stopped us so far.

      I really don't think it's in mono's interest to try and keep compatibility with Microsoft's libraries (it's that old Microsoft Treadmill routine again).
      I imagine at some point Microsoft will release a future library that will make the current version obsolete - they are already doing this with the .forms library - just you watch!

      Mono and it's developers have put in too much hard work for this to happen - mono should follow it's own path and develop libraries from the 'ground-up'(e.g. gtk#) rather than attempt to keep up.

      We should have more faith in the mono project rather than constantly 'slam-it' for 'patent issues' or because Micorsoft 'invented' it.

    2. Re:it's not open source by nschubach · · Score: 2, Funny

      My question is:

      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?

      --
      Every time I start to have faith in humanity, I ruin it by driving to work between 7 and 8 am.
    3. Re:it's not open source by Chrisq · · Score: 0, Offtopic

      Ha HA - I wish I has "mod funny" points!

    4. Re:it's not open source by clodney · · Score: 2, 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 to cut down on developer support costs. It isn't aimed at the FOSS community and has no particular impact on them either way. And contrary to what many people claim, MS developer support is really pretty good.

    5. Re:it's not open source by mrpacmanjel · · Score: 1

      As open source code in the *true sense* of the word that's fine; you can write/edit the source code , write a patch and then you can either create a version specifically for your piece of software or better still send the patch to the developer responsible for the library. The change is integrated into the original source and the rest of the community gets the benefit. With the addition of a non-restricting license, the code can be redistributed or new works can be derived from it or even forked if the need arises - usually there is no legal pitfalls.

      With Microsoft it is very different.
      It's not as if you can say 'I have an idea to improve a particular routine' modify the source and try an idea or experiment with it to see if it works and thus improve the library.

      It is not possible under a restrictive license as governed by Microsoft.

      The legal implications *do* have an impact on *some* developers particularly with the mono project (if you view the .net source code you cannot contribute to the mono project).
      What happens at some point in the future you end-up moving to Linux(or any other os) and start developing mono applications(legally fine) but you want to contribute to mono itself - you will not be allowed to. The potential to sue is a real possibility and will restrict your rights as an individual.

      Releasing the source code by Microsoft is a big deal for the *company* not particularly for the community.

      As regards to the code; you can see it, smell it but you cannot touch it! The source is *read only*.
      As a result it is of limited use.

      My primary development environment at work is Microsoft.net. I use the Express editions of Visual Studio for our development and at the moment is perfectly suited to the job at-hand and I can use Visual Studio at home for my own projects(I can also use mono on my Linux partition). The barrier to entry is low and more people can participate.

      A few years ago this simply was not possible - you had to pay for a full version of Visual Studio. The barrier to entry was high. As a result many alternatives are now available because of additional pressures of competition.

      I am grateful for Microsoft for releasing the Express editions of their software but before-hand you to pay *a lot* of money before you got decent support (even then it usually turned into a sales pitch to buy more product).

      It's a shame Microsoft have chosen this path, if they *had used* an open-source license then their platform would be widely adopted and everyone would benefit from the developments it could entail.

      It just seems to be that Microsoft's narrow focus on the Windows monopoly is hampering the company in the long run and every decision they make is centered around Windows.

    6. Re:it's not open source by nguy · · Score: 1

      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.

      Yes, this is an advantage of open source software. Microsoft's software is not open source.

      It's fine to look at the source of open source software and target it, it is a very different thing to look at the source of non-open source software and target it.

      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.

      Most open source developers don't because open source software tends to be much more standards compliant than Microsoft's software, and its developers tend to be much more responsive to requests for making their software standards compliant than Microsoft.

      I think MS is doing this to make life simpler for their customers and to cut down on developer support costs.

      Obviously. That's because Microsoft has long ago figured out that bad software works out well for them financially: writing a messy and buggy code and then "supporting" platform developers is one of the best strategies for them to tie developers to their platform. Platforms like Wine can easily comply with the documented behavior; it's the undocumented behavior that makes it so hard to come up with an alternative implementation of Windows.

    7. Re:it's not open source by Anonymous Coward · · Score: 0

      True. Unforutnatly, the specification is so freaking useless that you're forced to dig into the source to find out things like "does this throw an exception or return null if the list is empty" and simlar such questions.

      Still, you can provide feedback when you find such useless documentation (in the .net framework in MSDN, anyway) and someone from MS will actually respond - and, yes, I am speaking from experience on that.

  12. don't be overly dramatic by nguy · · Score: 2, Insightful

    All things being equal, it's better if companies don't publish their proprietary source code under restrictive licenses.

    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.

  13. Misread that title by Fross · · Score: 2, Funny

    I thought it meant the developer who originally wrote them has been let out of his nice padded room.

  14. read the fine print by nguy · · Score: 1
    Actually, that possibility is even more remote now:

    To help clarify and address these concerns, we made a small change to the license to specifically call out that the license 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. If the software you are developing is for Windows platforms, you can look at the code, even if that software has "the same or substantially the same features or functionality" as the .NET Framework.


    It would still be prudent for the Mono developers not to look at it, but with that disclaimer, I think it would be pretty hard for Microsoft to make anything stick in court.
    1. Re:read the fine print by Ash-Fox · · Score: 1

      If the software you are developing is for Windows platforms, you can look at the code, even if that software has "the same or substantially the same features or functionality" as the .NET Framework.
      Mono is for Windows platforms and others. Seems like a gray area to me.
      --
      Change is certain; progress is not obligatory.
    2. Re:read the fine print by PhilHibbs · · Score: 2, Insightful

      They clearly are developing software for the Windows platform. They can't use the source, but they can take a look and work out what the behaviour of the libraries will be in various corner cases so as to make sure that their libraries are compatible. In a closed environment, if I had access to source like this, I'd try to keep code writers away from it anyway, and only let the testing team read it in order to make test cases that check out all the corners. In an open source environment, however, I guess it's hard to make sure that contributors aren't reading and copying the source. Shouldn't be too hard to spot any copying though.

  15. It's a trap by ninevoltz · · Score: 0, Troll

    Beware of including mono in any Linux distro.

    --
    Death is life's great reward. R. Hoek
    1. Re:It's a trap by macshit · · Score: 1

      Beware of including mono in any Linux distro.

      Does anybody actually use mono anyway?

      --
      We live, as we dream -- alone....
    2. Re:It's a trap by Ash-Fox · · Score: 1

      Does anybody actually use mono anyway?
      I do. I have ended up annoying some 'Windows-only' users by requiring them to install the Windows version of Mono to use some stuff I have written (I got a few complaints on how I should support Microsoft .net runtime instead).
      --
      Change is certain; progress is not obligatory.
    3. Re:It's a trap by Anonymous Coward · · Score: 0

      Well, looks like this .NET shit seems to be working out great then.

  16. Because "Open Source" is a stupid term by QuantumG · · Score: 2, Interesting

    To my bearded friends from 1998: great work making an already confusing term "Free Software" even more confusing by rebranding it "Open Source Software".. this is the result. I know, I know.. you considered a whole lot of different alternatives but nothing really struck the chime like "Open Source" but maybe we all should have looked a little harder. How about "Unrestricted Software". It makes even more sense today, what with DRM and all. And the BSD trolls can still have their arguments about what "unrestricted" really means just as they do now about what "free" and "open" really mean.

    --
    How we know is more important than what we know.
    1. Re:Because "Open Source" is a stupid term by nuzak · · Score: 2, Insightful

      To my bearded friends from 1998: great work making an already confusing term "Free Software" even more confusing by rebranding it "Open Source Software".. this is the result.

      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 above such coarse trolling. You make me sad.

      Microsoft never even claimed it was Open Source. Microsoft has two licenses recognized as Free by the FSF. And this sort of restrictive license existed long before RMS bequeathed the very idea of freedom into all our tabula rasa minds.

      --
      Done with slashdot, done with nerds, getting a life.
  17. Excellent news by Anonymous Coward · · Score: 0, Funny

    I think .NET is an excellent framework. - Miguel

  18. I doesn't sound like that by Liquidrage · · Score: 1

    Very different sound actually.

  19. Not everything is about you by Anonymous Coward · · Score: 4, Insightful

    This release is not intended to benefit the Slashdot crowd. Of course it isn't "open source", and Microsoft never said it was. This is Microsoft assisting developers working with .NET on the Windows platform. There are a huge number of developers who fit that description. Sorry if you don't, but not everything is about you.

    1. Re:Not everything is about you by I'm+Don+Giovanni · · Score: 1

      Thank you.
      Yours is the best post on this topic.

      --
      -- "I never gave these stories much credence." - HAL 9000
  20. The Source for the Runtime is also out. by aldousd666 · · Score: 4, Interesting

    The CLR 2.0 source (the runtime, not just the BCL) code is up too, it's in C++, not managed code. Strangley the article and summary seem to completely miss that fact. I'm very surprised, because it's much more significant, and it can't be ascertained using the decompilers like the managed code can. THIS is probably the thing that can kill mono.

    --
    Speak for yourself.
    1. Re:The Source for the Runtime is also out. by RalphSleigh · · Score: 1

      As a gzip archive no less, last I checked windows won't open that, unless visual studio has it built in....

      --
      Come as you are, do what you must, be who you will.
    2. Re:The Source for the Runtime is also out. by aldousd666 · · Score: 2, Funny

      I wondered about that myself, actually. There is nothing that Microsoft distributes or sells that opens gzip or even tarchives for that matter. Nothing on WinInternals (formerly SysInternals) either. It's like they're saying 'here you go you open source freaks you can have this, but figure out how to open it yourself. We know you already have all the gtools installed, or just fire up your beloved mingw environment, you bunch of lazy whining traitors.' Haha, so I went a little overboard on that, but I think that still seems to be the idea they're giving.

      --
      Speak for yourself.
    3. Re:The Source for the Runtime is also out. by drachenstern · · Score: 2, Informative
      I love how they indicate which packages you'll need, WinZip and Perl. Perl. How did I miss that being included in the VS canon?

      On Windows you will need:
      Windows XP SP2.
      Microsoft Visual Studio .NET 2005.
      Perl 5.8.7 (available from http://aspn.activestate.com/ASPN/Downloads/ActivePerl/.)
      Archiving utility of choice--WinZip or other.
      256 MB of memory.
      One gigabyte of free disk space.
      And then there's this:

      Features
      The Shared Source CLI archive contains the following technologies in source code form:
      • An implementation of the runtime for the Common Language Infrastructure (ECMA-335).
      • Compilers that work with the Shared Source CLI for C# (ECMA-334) and JScript.
      • Development tools for working with the Shared Source CLI such as assembler/disassemblers (ilasm, ildasm), a debugger (cordbg), metadata introspection (metainfo), and other utilities.
      • The Platform Adaptation Layer (PAL) used to port the Shared Source CLI from Windows XP to other platforms.
      • Build environment tools (nmake, build, and others).
      • Test suites used to verify the implementation.
      • A rich set of sample code and tools for working with the Shared Source CLI.
      So it only does C# and JScript? WTF, hello, VB? Also, what other platforms? Vista? I thought that a platform was something that ran a different executable format, such as {PE | ELF | exe | A.OUT | &c.} not {Windows XP | Windows Vista | Windows Server}
      --
      2^3 * 31 * 647
    4. Re:The Source for the Runtime is also out. by davetpa · · Score: 1

      WTF, hello, VB? The benefits of the visibility of the source do not apply to you.
    5. Re:The Source for the Runtime is also out. by drachenstern · · Score: 1

      Wha?

      If the compiler supports C#, it should compile VB.NET code as well. That's why I'm curious why it's not listed.

      And you can't seriously expect me to believe that Mono won't have support for VB code but it will have support for C#. I mean, why not just use gcc for everything?

      --
      2^3 * 31 * 647
    6. Re:The Source for the Runtime is also out. by aldousd666 · · Score: 1

      For a very long time Mono didn't support VB either, and even in microsoft's world the Compiler for C# only compiles C#. there is a separate compiler for vb.net. The CLR is not a compiler, it's a runtime. In fact, C# 3.0 and vb.net 9 are ONLY compilers, with various libraries that go with them to support. Both still target the CLR v 2.0.

      --
      Speak for yourself.
    7. Re:The Source for the Runtime is also out. by mr_man · · Score: 1

      The Platform Adaption Layer allows SSCLI (Rotor) to run on Unix. I worked on FreeBSD. IIRC, that SSCLI distribution is actually kinda old and isn't the source that made up VS 2008 (though the changes to the BCL were minimal between 2005 and 2008)

  21. Perhaps, VS 2008 just needed a shot in the arm. by Steauengeglase · · Score: 1

    I was stunned by the headline. Just imagining downloading the full source of the framework libraries. After reading the article it was more like, "insert the VS 2008 CD". Nice try, almost had me for a second.

  22. publishing source != open source. Look deeper... by JonTurner · · Score: 1

    Simply publishing the source is not the same as making this open source. It all comes down to the license granted by Microsoft. In fact, it could be an attempt to "poison the well". By exposing developers to the source but not granting third-part (re)use, or at least *potentially* exposing developers, that could open the door to lawsuits. Here's why: if a third-party developer were to implement a substantially similar solution or identical algorithm, Microsoft could claim that the sources were "copied/stolen/used outside of the granted license" and therefore the work-alike product is inelegible for sale or distribution. Attorneys get involved and everything grinds to a halt.

    Sure, you and I see it as nonsense, but how a court (more specifically a jury of nontechnical everyday Joes) would view it is another matter entirely. Muddying the waters is sometimes an effective legal strategy.

    (Disclaimer: I am not a lawyer. Obviously.)

  23. Interfaces not copyrightable in USA (4 citations) by tepples · · Score: 1

    I seem to remember that interfaces could also come under copyright, so there's a potential problem wherever your using the same interface as the thing your trying to clone. Under which country's law? In the United States, interfaces are methods, and methods are not subject to copyright. Lotus v. Borland and Sega v. Accolade. Interfaces aren't even subject to the paracopyright introduced by the Digital Millennium Copyright Act. Chamberlain v. Skylink and Lexmark v. Static Control.
  24. It will be downloadable in "near future" by ZFox · · Score: 1
    Reading Scott Guthrie's blog posts (quoted below) it looks like the complete source will be downloadable in the near future alleviating the need to get the source in chunks.

    Yes - we'll be releasing a separate download version (that copies all files locally) in the near future as well. This avoids the need for you to be online in order to access and browse it.
  25. Whats the runtime written in? by Viol8 · · Score: 0

    Surely its written in C/C++? Or is it written in C# using a previous version of .NET? If thats the case doesn't that mean that the code manager is in turn being managed itself using the previous runtime? Or am I getting this completely wrong?

    1. Re:Whats the runtime written in? by DigitlDud · · Score: 1

      This source release doesn't contain the source code for the CLR, just the code to the class libraries. I would imagine most of the runtime is written in C++. The class libraries are mostly written in C#.

  26. *cough*Delphi*cough by tillerman35 · · Score: 1

    I love when a big company makes a huge fanfare about something that a little company has been doing for years. Borland Delphi used to come with the full source code for all its components. And it had a better IDE ten years ago than Visual Studio has today.

  27. Re:Interfaces not copyrightable in USA (4 citation by oliverthered · · Score: 1

    under US law (can't remember the exact case otherwise I would have put a link in).

    If's the only thing that means you can't use a GPL library in propritory software if your only using late binding, i.e. your not actually copying the GPL code only the interfaces to it.

    --
    thank God the internet isn't a human right.