Microsoft Open Sources C# Compiler

11 years ago (roslyn.codeplex.com)

They also announced as part of this that they are putting a large swatch of their .NET Source code under Apache 2 and accepting pull requests.

Folks, this is a very big deal for Microsoft. Who would have imagined this 10 years ago?

Here is an image that shows what they are putting into the community https://pbs.twimg.com/media/BkT9oBcCQAAHIAV.jpg:large

  • Well, here we are then. This now officially the standard play for formerly-dominating computer-platform firms who have fallen on hard times: having before been proudly hard-nosed and proprietary, publicly see the light and present a new image as a new, kinder, gentler company which totally gets it about openness. Former famous examples: IBM under Lou Gerstner (we love Linux and open platforms!), Apple after the NeXT acquisition but before the iPhone (look how expandable our new PowerMacs are; on the software side, we're now an open-systems-loving Unix vendor, and we'll even open-source our kernel!), poor old SGI (we love Linux now! Or, wait ... actually WinNT, whatever.). Sun of course used to go back and forth between being chill dudes who totally get it and more nakedly hard-nosed. As always in these cases, the questions are how far the bright new era of glasnost actually goes in substance (IBM legal's patent monster quietly thrived through all the kinder-gentler period) and how long it lasts (these eras tend to end with the company either dwindling into irrelevance, or finding renewed success and going back to its bad old ways).

    • Having followed a fair number of MS bloggers/podcasts currently in and around their web tools (ASP.NET, MVC, etc) teams... I honestly believe they understand the value of open source.

      Visual Studio and their MVC framework continue to impress me (I mostly work in Ruby today, but have to maintain some .NET stuff) and MS takes inspiration from successful open-source tools and frameworks where needed. Many of their recent advancements over the last 3-4 years have clearly been the work of engineers who enjoy and value the best of the open source world.

      I'm not trying to tell you that Microsoft is suddenly our warm, fuzzy friend. As even Scott Hanselman would gladly admit, they're ultimately trying to sell you software licenses or Azure services.

      But it seems to me that they're using open source the right way in order to achieve that goal, as opposed to the bad old "embrace and extend / embrace and extinguish" days at Microsoft.

      Whether or not Microsoft has earned another shot with us or not is definitely up for debate, and with all the cool shit happening in the open source world it's probably even a moot point to an extent.

      But they're definitely doing more than cargo-culting in Redmond these days.

      90 replies →

    • I'm sure I'm guilty of some logical fallacy or another here, but isn't responding to customer demand one of the core things espoused by the startup community? A big company does exactly what we're all saying is good for companies to do and everyone is up in arms with "TOO LATE M$" and the like (apologies for paraphrasing, and this is directed at several comments, not just this one). This is the kind of thing we WANT to see from big players, and while it's easy to say "close but nope", they do offer it up as "this is the direction we're going", and not "fine, this will have to do to shut you people up." Top MS dev team members have long been about open sourcing things, and I for one think it's awesome to see the company as a whole listening to it's best people, and the community that enables it.

      2 replies →

    • Subtle difference: Apple and IBM have made use of free software such as FreeBSD, CUPS, Webkit, etc. Microsoft here is taking core technology and releasing it as free.

      21 replies →

    • > Apple after the NeXT acquisition but before the iPhone (look how expandable our new PowerMacs are; on the software side, we're now an open-systems-loving Unix vendor, and we'll even open-source our kernel!)

      Remember that time (well within the iOS era) that Apple claimed that FaceTime would be an open standard for interoperability?

      3 replies →

    • My impression is that this is a result of the changing of the guard (Ballmer's exit). The underlying people (scottgu, etc) have been pushing for open source for many, many years now. And Satya seems to trust these people and thus announcements like today.

  • Once again the whole KILL MONO FUD was the actions of the Open Source Community in the last 5 years. I never understood how in the world they got this is a trap from everything that was happening.

    I don't agree with RMS many times but in this one way he was 100% wrong when he targeted mono.

    • Microsoft originally only released a specification for V.2 of C# and the Common Language Runtime (ECMA-334 and ECMA-335) - attached to it a promise that they would not sue, iff the framework was "implemented in whole" - which was very vague in that it didn't specify what could be included or omitted in order to make it compatible with other platforms. The clause was obviously added to prevent fragmentation of the platform though - ensuring that it stayed compatible with MS's product, and thus they'd continue to hold control over it.

      C# 2.0 is nearly a decade old now - and mono certainly hasn't limited itself to it. Absolutely none of C# 3, 3.5, 4.0, 4.5 was ever released as an open specification or as open source software until now - yet these are the versions mono and everyone was using.

      So the "MONO FUD" was never actually FUD, it was legitimate concerns about the lack of openness of the technology. Those are no longer concerns (about this release version) - and we can be glad that RMS et al were "wrong" about this one (When they were in fact, absolutely right at the time.)

    • Are you referring to this? It doesn't sound like he was trying to kill Mono, he just didn't want to depend on it because of the patent issue.

      https://www.fsf.org/news/dont-depend-on-mono

      So, five years later Microsoft makes another step in the right direction, and you think he's wrong because he didn't want to risk building the open source environment around something that could go away with a simple threat.

      Btw, doesn't Microsoft make more money from Android patents than Microsoft phones? Microsoft does exercise their patents.

      3 replies →

    • RMS is not part of the open source commuinty. He doesn't advocate for open source. He advocates for free software.

      Edit: why the downvotes? If I started a social movement and everyone associated me with a watered-down alternative that tries to silence my views, I would be a little miffed.

    • You honestly don't get it?

      I really like microsoft products and I use them every day, however the business model is too lock people in to their ecosystem so that you have to purchase licenses for their products.

      Mono clearly undermines that b/c it allows you to "easily" jump ship to a free platform.

      Unless I'm somehow completely misunderstanding their business model - killing Mono just makes business sense.

      16 replies →

    • I get pretty tired of writing a bunch of open-source C# code and getting flack for it. I'm glad there's finally no foothold left for the Mono FUD crowd.

    • Trust takes years to build, but moments to lose. MS has a long way to go.

      Not depending on them for anything is, has been, and will be a fine strategy.

    • Microsoft would never make the moves it does now if not for being scared of becoming less relevant.

      Until they really make free enough licenses not only for the core stuff but for the crucial libraries nobody can expect to be off-the-hook of the traditional lock-in.

      And even if they do all that, it doesn't mean anybody was "wrong" only that the conditions are changing and allow reconsideration.

  • > Who would have imagined this 10 years ago?

    well, Microsoft used to say that open source software was anti-american, cancer, communist, anti-competitive, etc... yup I think they changed a bit

  • ... as awesome as this is, I'm gonna be That Guy:

    No WPF?

  • signs of the new Satya Nadella era?

    • All this started long ago. Roslyn has been in development for a few years and that was still under Ballmer's leadership. Also many of the other things they're unveiling and open-sourcing now started way before Nadella took over as CEO.

      But my guess would be that Ballmer stepping down was sort of symbolic in this regard. With a new CEO it looks more like a "new Microsoft" doing all these things.

      3 replies →

  • Dumb question: is that the real deal? I see a lot of items, but I don't know how they relate to typical uses of .Net. So I guess my question is more for .Net specialists:

    With the code released, can you:

    - Run a ASP.Net web server?

    - Run a classic C# .Net project better than with Mono?

  • Big fan of the way Nadella is starting out, Microsoft may reverse the polarity of developers from disengaging back to attracting to Microsoft if they keep this up.

Everyone on Roslyn is really excited about this and we hope that it serves as a signal that big things are happening in .NET to make the entire platform more open and agile!

P.S. We're the Visual Basic compiler too :)

  • From an open source neckbeard to a MS employee, thanks!!!

    Man, this is a crazy world. Cats and dogs living together. Open source MS projects. The falcon cannot hear the falconer

    • Heh, before joining the C# compiler team I actually hacked on a stripped down Linux kernel and VMM targeted at high performance computing, contributed to ffmpeg and QEMU, ran Arch Linux with xmonad as my main machine, and did my Masters' thesis on Racket in Git, so I'm pretty used to open source.

      This is basically old hat for me -- I'm just glad Microsoft agrees it's the way to go. :)

  • What's the likelihood the .NET VM is open sourced as well? I use Mono right now to run my apps on Linux but it would be great to use the official implementation since Mono has subtle differences.

    • That's the main thing I would be interested in also, but I'm thinking that's one thing that we WILL NOT see. That could seriously undercut the need to buy Windows servers.

      7 replies →

    • Even if they were to do that, I doubt that it's portable cross platform code. Someone will need to port it, and it's hard to know how the effort required compares with the effort required to optimize the Mono runtime to be as good as the MS one running on Windows...

  • as someone who doesn't know a whole lot about the .net ecosystem - does this open the possibility for writing server side c#.net web applications that run on linux, with full parity with the windows environment? with or without mono?

    • The C# compiler is written in C#, so you can use it anywhere with a .NET runtime. Microsoft doesn't ship a .NET runtime for Linux, so you'll have to use Mono, but if your app is compatible with Mono, you're good to go!

      18 replies →

As a C# developer who genuinely likes the C# language (although I loathe vast swaths of the .NET framework libs) I'm actually super-excited about this.

C# is a great language, and I hope to see it flourish outside of the MS walled garden. Miguel de Icaza does what he can with Mono, but it can be so much more.

  • Agreed. I've long since left .NET-land, but I still miss C#, LINQ and the like. Here's hoping for great stuff in the future.

  • Agreed.

    I really like C#. But it's currently pretty close to useless anywhere other than Windows - Mono doesn't even come close.

    Hopefully this will close the gap.

    • Depending on what you are doing, Mono has come very far. The new GC is in and a lot of optimizations have been made. Ubuntu 14 will ship with 3.2.8 I believe which has all the goodies. Apparently the performance is still poor for web development but it works well for daemons/desktop apps. You're probably better starting off with a tech that is cross platform out of the box instead of relying on Mono but if you have an existing C# project then Mono is awesome.

  • I've started to get experience with javascript, and Java, and Scala the past year or so as my resume is very heavily weighted with C#. I'm glad to see there may be life outside Microsoft.

    But I still hope Microsoft does well, because frankly I like .NET

    • Due to the way my employer works, I actually have one foot on each camp and keep changing sides depending on customer requirements. :)

I'm not sure who this new company is going by the name of Microsoft, but I'm glad they seem to be running things now.

  • Yea, it stood out to me that they demo'd Windows Phone first and that Nadella gave his talk in a t-shirt and jeans.

Microsoft, you're seducing me again. I cheated on you with Ruby and Rails development a couple of years ago, but you're making me consider coming back in full swing.

Competition is great for everybody and Microsoft is making all the right moves!

Released under the Apache 2 license.

http://roslyn.codeplex.com/SourceControl/latest#License.txt

This is great. There is a really interesting lesson/insight here. Programmers are expensive.

There are a number of things people are doing, based on Linux, which are basically using Linux as an OS and then layering on some custom drivers or such into a product. Whether its a web 2.0 company using it as the server OS or an embedded signage company. All of these were "impossible" when you had to have your own OS team to support them, and Microsoft benefited from that. Now the OS "maintains itself" (such as it is) and so businesses get everything they got from employing Microsoft tools but at a much lower effective cost. They don't need to pay big license fees, they don't need to hire programmers to maintain a lot of code that isn't central to their product, and they don't have to spend a lot of money/time training people on their own infrastructure. That is a pretty big change.

Its nice to see folks realize it isn't the software that is valuable, its the expertise to use it that has value. By open sourcing the C# compiler Microsoft greatly increases the number of people who will develop expertise in using it and that will most likely result in an increase of use.

If Microsoft starts working on its own Unity-clone, with a functional language, advanced concurrency features, and good incremental GC, they could be sure to capture a big chunk of the mindshare of game developers. This could then be parlayed into mindshare of soft-realtime development, which will become ever more important.

  • Haskell has significant contributions by folks at Microsoft and is a beautiful functional language with state of the art concurrency, decent GC, and a hardcore fan base.

    And here's some notes on bridging between Haskell and Unity http://lambdor.net/?p=321

  • I think it would be better to just acquire unity since they already use mono / C# as their scripting engine anyway.

  • Integrate all the good parts from VS to the "Unity-clone" and top it with nice indie-license. Bake modularity into so that you can build the game with feature-toggles and control the flags from the server. Ship the game to testers and enable one flag at a time to see when things crash (no need to wait x0min for the new build to finish). Make testing easier and integrate it with some build engine (jenkins, TFS), enable REST api so you can get all the game element information through it. Those features would make the life, of an test automation engineer, a walk in the park :)

  • They had something similar in XNA, but unaccountably abandoned it.

    • XNA was quite far from what Unity is. Unity gives you a full engine, whereas XNA was a framework and you had to build the engine yourself. It was a great little library, but it was painful for unskilled software developers (myself at the time) to use it compared to Unity's WYSIWYG and property lists you could modify, not to mention all of the things that came with Unity that you'd have to build custom in XNA.

      That's not to say Unity is better, it was just easier to use.

Wow these contributions are a huge deal for Mono. I've spent the last few months making sure C# code works well in Mono and there are a lot of things that are missing or buggy. WebClient for example on Mono is missing DNS refresh timeout which means your app will never update a dns cache entry. If the ip of a server changes, you're pretty much screwed in Mono.

Nice. For some reason I can't clone the repo, though.

    Cloning into 'roslyn'...
    remote: Counting objects: 10525, done.
    remote: Compressing objects: 100% (4382/4382), done.
    remote: Total 10525 (delta 6180), reused 10391 (delta 6091)
    Receiving objects: 100% (10525/10525), 16.94 MiB | 1.69 MiB/s, done.
    error: RPC failed; result=56, HTTP code = 200

Edit: This looks like an incompatibility between GnuTLS and whatever Microsoft is using for TLS. Using git+libcurl linked against OpenSSL works fine.

What kind of patents do they have on the compiler tech, and is there any guarantee they won't go after you for using it?

edit: Ah nice, Apache 2 license explicitly calls out a patent license is granted for use. I wonder how much cajoling it took to get the lawyers to agree to that!

Note that the C# compiler being open-sourced now is not the one used in Visual Studio. The open sourced one is called currently the "Roslyn C# compiler."

See Locke1689's comments here, especially:

https://news.ycombinator.com/item?id=7524722

"the native C# compiler (that's what we call the old C# compiler that everyone's using in VS right now)"

  • That's true, they open sourced the new-hotness compiler that they're moving to. The Roslyn compiler is still in preview, hence it hasn't had time to make it into Visual Studio. But I believe it'll be in the next version.

    Really, this seems better than opening up the old compiler that they're moving away from.

Wow, this is impressive. Does this mean the .Net framework is next?

  • The most enticing feature of C# is the .NET Framework, and if Microsoft fully open sourced the .NET Framework it could start a cross compatible version of the framework. This would be a dream come true for a software developers who like C#/opensource.

I wonder if Mono will use this to replace their compiler and just focus on the runtime / VM. They'd be more focused on making it performant, vs. trying to keep up with the latest C# features. They'd have to keep up with .NET, of course, but I'd guess that not having to worry about a C# compiler would be quite the load off their shoulders.

It's interesting that they made their own lexer/parser for this (cf. Microsoft.CodeAnalysis.CSharp/Parser/LanguageParser.cs). It seems that it has a lot of advanced technologies (e.g. error recovery) here. I'm curious if it's possible to create a more general parser framework out of this.

Wow, this feels like the end of Return of the Jedi where Darth takes off his helmet, having realized he was on the wrong side.

Is this the return of the original MS?

Really confused about the Xamarin/MSFT situation. I see Miguel everywhere on Build, and other MS teams casually mentioning cooperations with Xamarin.

Certainly Microsoft wouldn't mind just throwing some millions at them and buying them outright, so are we to deduce that any such offer was rejected?

  • Or we are to dedude that Microsoft didn't want to make such an offer, because while they want to spread .NET into a cross-platform standard, they still prefer a third party like Xamarin to deal with iOS, Linux and the like support for .NET (perhaps for public perception reasons).

    • I think public perception is actually a big thing, though on the other hand the people most worried about that I think have already written off Mono as being "obviously in bed with Microsoft", so I'm not sure how much having Xamarin as a third party would help.

The changes in company behavior have been absolutely stunning since Ballmer left. Hopefully these changes signal a more modern, forward looking Microsoft going forward.

  • These changes have nothing to do with Ballmer's (lack of) presence. They have to do with Scott Guthrie being an absolute badass.

    Teams under his lead have been open sourcing things in expanding significance for years. As Scott has been steadily climbing the Microsoft chain of command and with each step of the ladder it seems larger projects got open sourced.

What does this mean for the Mono project? http://www.mono-project.com/Main_Page

  • Mono isn't just a c# compiler, it is also a CLS Machine (virtual machine) and a set of libraries, among other things. If the VM was also put under apache 2, it is also unlikely that it would run on Linux out of the box.

    To use java as an example, this would be like open sourcing javac without open sourcing the JVM. (Just fyi, both javac and JVM are open source under the GPL license. :) [edit - Looks like large parts of .NET platform are being released]

    Still, this is a move to be applauded. Microsoft has been easing itself into a more open source friendly company over time by putting more projects under an open license. Microsoft ASP.NET MVC is another good example. There is an incomplete list of open source projects originating from Microsoft here: http://www.microsoft.com/opensource/directory.aspx

    [edit above in brackets]

  • Miguel just demo'ed building a C# iOS app using a modified Roslyn-powered C# compiler with Xamarin Studio on OSX.

  • Miguel showed personally on stage they integrated it in mono (in a version that, obviously, at the moment is not out there)

  • This is still Windows only. If anything Mono now has more resources to pull from to improve their project.

    • The C# compiler targets the CLR (Mono or .NET). It produces IL which is similar to Java bytecode. The runtime then JIT's it, but I don't know if that's OS-specific or not.

Anyone else getting deja vu?

Makes me think of Sun open sourcing Java.

  • Sun retained restrictions on mobile Java though and it wasn't opened royalty free. That's the whole story with Oracle attacking Google later (on patent basis). And don't forget, MS sided with Oracle there, claiming that APIs should be copyrightable.

    So while this development is positive, one should take it with a grain of salt. MS still can't be just trusted blindly.

  • Sun open sourcing Java SE was the best thing that happened to the software industry in the last 10 years, at least. I don't care about Sun's motivation for doing it, but OpenJDK is here to say and Oracle cannot take that back, even if they wanted to. That's the power of open-source released under a strong license and the JVM is in fact turning into the new POSIX.

    Here's to hoping that Microsoft goes beyond the compiler and open-sources the VM and the whole standard library too - .NET and C# always had great potential, it's a pity that Microsoft saw it as a way to sell Windows. And I hope they realize they have a long way to go before they catch up.

  • Yeah. I can already imagine an HN headline 4-5 years from now: "Microsoft’s iron grip on C#: Controlling open source by any means necessary".

I think that Microsoft is doing a really smart move. Xamarin is towards being the main framework for cross platform mobile development and Microsoft is positioning itself very well there.

Nice start, but the real power is in the open platform, not the language IMHO. This becomes less of an issue as things move to the cloud and paas, but we're not there yet. Yes, there's mono, but its still the red headed step child.

Is it in the realm of possibility that XP could go the same way? I can imagine why Microsoft might want to release that albatross, but I have no idea whether or how they could contain the damage due to leakage of their IP.

  • Sorry but that is the dumbest thing I've read all day.

    • Hey no need to apologise. Please tell: are you dissatisfied with the level of dumbness in your day so far, or are you looking for a more stable normality or enlightenment?

Interesting to see that they don't shy away from using goto in their code.

http://roslyn.codeplex.com/SourceControl/latest#Src/Compiler...

Something I've just learned from looking at the code is you can jump between cases in a switch statement :

    switch (a) {
       case '1':
         ...
       case '2':
         goto case '1';
    }
 

Never realised you could do that.

  • Sometimes you even have to, because fall-through is illegal in C# except with empty case labels. goto case makes things more explicit.

    Although there is no reason why they wouldn't use goto. The oft-cited "goto statement considered harmful" was in a very different context and basically just ranted against using goto when there are control structures that make intent clearer.

  • You can even jump back from a catch or finally handler to the try block ;) At least in MSIL.

Is this the 2014 edition of the Rotor Project[1], where Microsoft dumped a bunch of code to run .NET on XP/OSX/FreeBSD and then almost nothing happened? Hopefully the choice of a standard license this time will give this release a chance.

[1] http://www.microsoft.com/en-us/download/details.aspx?id=1412...

  • I think the big difference is that .NET and Visual Studio will depend on the Roslyn compiler. Rotor was a sample implementation, but nobody at Microsoft (to my knowledge) was shipping an actual product / project that depended on Rotor moving forward. I've talked to leads on the team who are excited about being able to roll out new language features using this new compiler. There's a good, long term business justification for Microsoft to keep working on this after open sourcing it, which I've learned over time is a very good and important thing.

Microsofts decision to opensource is not suddenly.

It has actively been pushed by some of Microsoft's evangelists (Phil Haack (ex employee, works at github now i think) and Scott Hansselman to say the more popular names).

I believe they got some playfield to do things and now the community has more and more impact (eg. Nuget and software like myget which is based on Nuget (Nuget for Enterprise))

Also, the CEO isn't Balmer anymore, that probably helps to.

I fell that they are doing it because of a growing threat from Linux as a Windows alternative.

With Valve pushing their Debian fork and more gaming support for Linux in the last time, Microsoft wan't to appeal to the Open Source community the reduce the "bashing" which ... which could actually loose some force behind it. Not that it could actually benefit Linux with better Mono support etc.

Open Sourcing everything! Today read they will be releasing Windows os for IoT free! Looks like Opensource is the next business model! :)

I really hope Unity is able to incorporate this somehow so we can finally get a solid update to C# and .NET.

  • Unity's version of Mono was pretty old last I checked; if they haven't updated it for new versions of Mono, I'm not getting my hopes up too much for Roslyn. Also, this doesn't include source for a runtime.

    • They hadn't updated Mono for licensing issues. Hence them hopefully being able to take advantage of this.

This is just the beginning. While I hate their business model and corporate mindset, Microsoft has really well thought out products that can easily make an impact outside their ecosystem. I'm glad they are realising this, and %100 sure there will be more coming from this direction.

Wow, you know that the times are a'changing when something like this happens. Ex-chairman Steve Ballmer used to call linux a cancer and MS had nothing but disdain for open source software. Open source really has made a difference, and Microsoft is reacting in a big way.

Microsoft uses Git. Is it not cool?

Microsoft, please add unix terminal instead of start button in Windows 8.

No more ".Net magic" now that the curtain's dropped.

I think this will help .Net devs make smarter decisions about their code now that they can see what's happening in the background.

  • I'm not sure whether there ever was a time when .NET devs had to seriously consider "what was happening in the background". .NET Framework documentation has always been pretty good. Not too many dark corners there.

    • And the system libraries are cake to decompile if you really need to dig into the innards. I've only had to do that on one or two occasions, and it was more for curiosity sake (I think once I wanted a copy of the html character code encoding table and didn't want to piece it together by hand.)

    • Not a .NET dev myself, but I believe Android's documentation is also pretty good. Nevertheless, I can distinctly recall instances when looking at Android's source was necessary/helpful.

      1 reply →

I'm stupid, so I must ask:

What does this mean for the future of C# on Linux?

  • I mean, really that's the only relevant question: when is C# going to be a great cross platform choice? Open sourcing a windows only implementation doesn't really change anything.

Now with Windows free and many of its work is open-sourced, Microsoft is going to try to make money on services and other software that comes with Windows. It's a risk, but better than the alternative: watching Android completely takes over the planet.

It's not an advertising company like Google. Google makes money when you use the Internet; Microsoft makes money when you pay for its software.

This means that you can compile .NET code on a non-MS platform (like Linux) but you can only deploy it to ... Azure.

Microsoft's endgame is in sight.

  • How exactly did you get that out of an Apache 2 license? http://roslyn.codeplex.com/license

    • Well obviously you can eventually run the code on any platform that supports the CLR. At present only Windows and Azure support the CLR but the rest of the world has to depend on Mono.

      I suspect that Microsoft is trying to fight their way into the Server space where Linux installations are prevalent by offering services via Azure.

      So, for example, you have an extensive Linux environment running critical back-end services. You can have a BASH script which generates C# code, compiles it and eventually deploys it to Azure. This is I think a fantasy scenario that Microsoft is envisioning.

      1 reply →

Is there any blog post/documentation/diagrams to help understand the compiler and how each modules interact between each other ? I'm going thru the code and its cryptic for me.

Also, I read a lot of comments saying this way good for mono ... how is this ? Wouldn't an open source CLR be more useful ?

Is the CLR runtime open-source too? Because open sourcing the C# compiler isn't such a big deal without it.

lots of positive sounding stuff comming from msft in the last week.

But, I dunno. I'm extremely skeptical of Microsoft's ability to put long-term momentum into any of their non-core strategies. All these things are one re-org away from becoming basket cases.

Case in point: XNA

Yes! I hope somebody will create a VB.NET to C# convertor with this.

  • I would expect that you could use a decompiler to generate C# from compiled VB.NET code.

    • True but you lose the variable names and the comments. I am guessing - and I really don't know if this is the case - you can convert VB.NET to C# using Roslyn keeping all the variable names and comments.

How does Microsoft benefit by open sourcing the C# compiler ? How will this drive users/developers towards Windows ?

I think we're all very lucky to have a corporation as innovative, open-minded, and generous as Microsoft. Microsoft is a company that every company should look up to.

  • This does not make up for decades of abuse they've been giving the market at large. Yes, I've witnessed it first hand as early as 1990, and second hand ever since. They're still extorting android handset makers, and it was only 5 years ago that they loaded the ISO committees to favor OOXML.

What sort of changes can we see from this move? Could we generate ASP code by writing it in PHP first? Can .NET be run on Apache and linux servers?

What about the past statements of MS executives? e.g. "A Microsoft legal representative has said during a hearing in the European Parliament that open source actually presents a higher vulnerability risk."

Step in the right direction. I'm still waiting for

  git clone https://github.com/microsoft/windows.git

to happen