At its Build developer conference today, Microsoft announced that it was open sourcing a wide array of its .NET libraries and related technologies and creating a group, the .NET Foundation, to oversee the development and stewardship of the open source components.
Perhaps the highlight of the announcement today was that the company will be releasing its Roslyn compiler stack as open source under the Apache 2.0 license. Roslyn includes a C# and Visual Basic.NET compiler, offering what Microsoft calls a “compiler as a service”.
This is more than just a code dump – Microsoft is launching the .NET Foundation, with representatives from Microsoft, GitHub, and Xamarin, among others, to act as stewards for the various related open source projects.
Let’s hope WPF find it’s way somehow into an open source world. Although WPF is dependent on DirectX and Micrsoft hasn’t (yet) dropped that.
Edited 2014-04-05 11:23 UTC
Insofar as Windows goes, since MS is all gung ho about Metro now and seems hellbent on killing the ‘classic’ desktop, does .NET and WPF even have a place on the desktop anymore?
Metro supports .NET alongside WinRT, just not all APIs, given the different programming model.
As for WPF, XAML is still there. I don’t find the backend classes all that different.
right, WinRT supports all .Net and Win32 APIs where as .Net is still .Net, like it was years ago.
I hope that this allows .Net to become a Java competitor in reality, not just in theory.
It kind of already is since many years.
There are lots of middle size companies that are full Microsoft shops with MSDN subscriptions.
On the consumer desktop software, many moved away from MFC into .NET for native GUIs.
You can make good desktop applications with Swing, but it requires UI programming skills most average developers don’t have. Here WinForms and afterwards the XAML stack have an advantage.
JavaFX came too late and Oracle keeps ignoring the mobile space.
So where Java tends to win over .NET is on UNIX shops, using Web interfaces for their applications.
I do consulting on both platforms so, I get to see both worlds.
do you think this move could produce competition to Java on Unix?
No really, .NET shops don’t tend to use software outside of what Microsoft itself offers.
So far I never seen .NET being used on top off Mono on the big UNIX shops.
Many of those still use commercial UNIX systems, not BSD/GNU/Linux derivatives. With a few mainframes on the side, actually.
Do not forget that Microsoft is a corporation dedicated to making profits. Its behaviour is pathological.
The only reason it will open source stuff is either to reduce costs or to combat trends away from its platforms. I would suspect the latter in this case. Microsoft makes small change from its development software compared to its consumer software and platforms, so wants developers to develop for those and not cross platform or Linux/Mac.
This is little more than an attempt to lure people back to Microsoft (and thus Windows) technology.
Edited 2014-04-05 11:40 UTC
Yes, Microsoft’s motive is to sell more of the products they produce. News at 11!!
For C# and VB.Net developers around the world this is actually wonderful news. They just literally gave the entire community a full compiler framework for free under a very permissive license!
This is Microsoft’s attempt to offer something similar like LLVM and Clang for developers using their tech. I fail to see how that can be so horrible..
Did they also change their patent stance? Without a legal right to use MS’s patents, open sourcing the code is fairly useless to most devs. And no, an “assurance” from the PR department is not a legal right to use a patent.
The Apache 2 license, which they used, provides indemnity from patent suits for users of the licensed software.
They licensed Roslyn (and most of their Open Source code over the past few years) as Apache 2.0. That license includes an explicit patent grant.
in real life you go by name Sherlock Holmes i guess
funny thing is that if it would be so it would be one of the worst moves ever in history. unless you think creating more competition is sound business plan
…and? I feel like you’re trying to make the case that this is bad, but I’m not sure what your point is.
Oh. That must be it.
After all, I don’t think I’ve ever seen you complain about certain technologies being Linux centric, even within the *nix world. I don’t think I’ve ever seen you comment on anything Apple does with iOS or MacOS X.
But, anytime Microsoft does something positive w/r to open source, it’s always the “Embrace, Extend, Extinguish” mantra. Every time, without fail Open source from other for-profit players in open source are seen as altruistic and to be praised, but from Microsoft, it’s always nefarious. Always.
You mean like Google, Apple, Sony, IBM, Facebook, Nintendo …. ?
This is a few days old now but it’s still genuinely staggering news, especially the open-sourcing of Roslyn under the Apache 2.0 license. The announcement that MS is also opening up F# to community contributions is great news as well.
Edited 2014-04-05 13:32 UTC
It seems like this is a new Microsoft. I can’t see Balmer releasing an Office for iPad (even though it was all developed under him). They make missteps (Windows 8) but they are trying new things. That is not normal for most mature businesses in the US.
Dear Microsoft,
Could you please open-source VB6 whilst you’re there, thanks.
Noooo!
Let that one die in a fire.
Why not open-source VB6? Sure, it’s pretty shit, but so is MS DOS 2 and Word for Windows 1.0. Just because it’s open-source doesn’t mean it’s a sensible thing to use.
No they are not. DOS 2 and Word 1.0 were provided to a computer history museum, not Open Sourced. They are available for inspection under a very restrictive license.
Yes! that would be wonderful. there is so much legacy out there and a way to compile a simple fix for something that is not worth re-implementing completely is needed.
But, as you can still get a digital download of VB6 from an MSDN subscription, so I doubt highly that it’s something they will do any time soon.
I believe I read a blog post from MS back in 2006 that they were pulling it from MSDN.
Since the reindroduction of the start menu and the various open-source projects being spun off of existing MS products, Satya Nadella seems to be a really cool guy. I, personally considered Ballmer to be an asshole who was driving one f the biggest success stories in technology history into the ground. Satya Nadella (gotta drive that name into my mind…) is definitely the right sort of guy to save MS, and since he’s taken the helm, i see a bright and successful future for Microsoft.
I fully agree with you about Ballmer, but I’m not so quick to declare Nadella as the right guy to replace him. I need to see more track record in his new position before I can make any judgments on his performance and whether or not putting Nadella at the helm was a good call. Let’s see how things look in another 6, 12 months minimum.
What impact does this have on those guys who developed MONO?
A potentially massive one. However, it’s unclear precisely what Xamarin and Microsoft are up to at the moment. Xamarin are making incredible strides towards making .NET fully portable (you can now write apps for iOS and Android in C# or F# using Xamarin Studio) and Microsoft are embracing Xamarin tightly enough to give rise to constant rumours of a buyout.
Regardless of how the Microsoft/Xamarin relationship goes, this is really, really good news for anyone interested in .NET.
How great would it be if you could develop in C# for iOS, Android, and Windows phone with one code tree from Visual Studio? It is possible if you buy Xamarian’s products right now but if MS buys them, then it would be built into VS and available to anyone who has a license for their dev tools and it would make MS’s tools the best way to do mobile development.
With .NET open sourced and Microsoft opening up for external contributions, like patches to port to other platforms(?), Mono is about to lose its unique selling point.
Why would you go with the, not that compatible, clone while the original offers the same but is better maintained, has more users and customers, is the de facto reference and is rolled out and in used in thausend of factors more projects and products, why?
Also, Mono is owned by Xamarin and non-free-beer, cost money, to proper use Android/iOS API while .NET and the Foundation driving it doesn’t seem to be interested to limit its usage to make profits with licenses.
Point is if .NET then .NET. I don’t see room for alternates now that Microsoft removed its biggest limitations. But then maybe there are still valid use-cases for something like Mono?
Edited 2014-04-06 08:36 UTC
I hope so. Mono is the least open source project I can think of. They have licensed the code in such a way that it is impossible to do anything with the source to target a platform that requires static linking, and even more recently have begun attempting to limit the embedding of their runtime in Apps. This is solely to sell iOS, Android and Mac App store licenses (all priced as individual purchases.) Especially for the Mac, this seems entirely underhanded, as there was a long history of embedding the Runtime in apps to avoid requiring a Mono Runtime download.
That’s not really true. The MonoTouch apps on the iOS platform (of which there are a lot) all exist because of Mono, not Microsoft. Mono, on an API level, is more than just “not that compatible”, but it doesn’t support WinForms (fully) and WPF (at all?), so I guess if that is your yardstick, it’s half baked.
It costs money to use any flavour of the Xamarin UI API namespaces, bar the very basic and limited free version. MonoMac is still free, but I believe they also force the same embedding rules, which are draconian.
However, Mono isn’t owned by Xamarin as far as I remember. It’s owned by Novell and Xamarin have a “perpetual license” allowing them to continue to develop and sell Mono. If Novell chose to revoke that license for some reason, Xamarin would be as screwed as the customers they support.
Remobjects just released a C# compiler that targets various native platforms directly – without a .Net runtime. Have a gander at http://www.remobjects.com/elements/hydrogene/
Edited 2014-04-07 12:34 UTC
I think it is very nice but I do not think it is the game changer that some do. This is just the C# and VB compilers. The Mono C# compiler was already extremely feature complete. The VB one was not nearly as good but most professional dev is C# or F# these days. The Microsoft F# compiler was already available (under the same Apache 2.0 license) for Mono.
The compiled .NET (CIL) code that the compiler produces still has to run on the Mono runtime for Linux and OS X.
You could already use the Microsoft compilers to build code on Windows that would run on the Mono runtime. For other platforms, you had to use the Mono compilers. Now you will be able to compile using the Microsoft compilers on Linux or OS X (presumably).
Don’t get me wrong though, it is pretty nice to have the same compilers available everywhere. For one thing, projects that take advantage of the Roslyn compiler-as-a-service can now be cross platform. The Mono compiler-as-a-service (which predates Microsoft’s implementation) used different interfaces.
What it really does is signal that Microsoft is really behind cross-platform .NET. It will also help the paranoid sleep a little better as the patent grant that comes with the compilers means you have one less attack vector to worry about if you consider Microsoft to be a patent predator in waiting.
… this is interesting.
Any reason why they picked the Apache license BTW?
Very commercial friendly and it includes a patent grant. Perfect fit.
Do you trust them enough to believe the patent grant? Isn’t there some tiny legal quirk that would allow them to change their minds any time?
This IS Microsoft we’re talking about. The smart thing is to not touch their stuff.
They still want APIs to be copyrightable and try to overturn the latest ruling in Oracle vs Google which said they aren’t. So the question is, how does it fit with them (partially) opening .NET?
Edited 2014-04-06 01:58 UTC
I began using .Net at version 1.1 and found each successive version to go further and further down the rabbit hole of nonsense. There was no coherent philosophy to the namespace, ASPX was a horrible mess, Visual Studio was unstable, so I gave up on anything after MS 2.0 and moved to Mono 2.10 because I figured:
“in theory, I have the right to fix Monodevelop from source – if I can (which I can’t, but the point is at least it is an option)”
Microsoft needs to detach themselves from the platform to make it compete on it’s own. Oracle suffers from the same problem with being the custodian of Java.
Canonical may be doing the same damage to themselves with Ubuntu – making highly unpopular decisions (Mir,Unity,evil searchiness) that a community-developed platform is less likely to do.
Python and PHP have done really well in developing a community-based-community. The PHP documentation is a great example of usefulness and peer-reviewed code. Python has code samples everywhere, to the point that you have to filter out python results when searching for code in other programming languages. There’s a Python demo for everything in C#.
…and back to the topic of C#. It’s almost JavaScript to the point that I’ve now switched to writing JavaScript. I’m using nodeJS with node-webkit, and have little to no reason to go all the way back to the proprietary Microsoft.Net world. The node workspace has everything I could need (jQuery, d3, HTML5, GTK, SQL, Mongo).. and it’s more cross-platform compatible than anything Microsoft will ever want to produce.
Maybe they’ll finally allow what Mono tried to do succeed, but I really won’t care by then. They lost me five years ago when 3.0 showed me they hadn’t done any of the right things from the very beginning.
Running 100x slower!
That’s true, python is slow – that wasn’t the argument. The community, documentation, and management of the language was the issue at hand.
And it should be noted that python is a scripting language. Performance is not the objective – usefulness, simplicity, portability, expandability, those are the reasons for scripting.
If you really need to take performance seriously, you use something that compiles. If you need a quick startup script that interfaces with lots of programs and conditions, you best be using something scripty or you’ll spend days on a compiled, packaged application.
Now, what I just said doesn’t really apply to V8 (nodeJS) because of it’s compiled+script nature.. but that’s why I like it so much.
I do wish that Adobe Air had not been abandoned on Linux. It really felt like something I could do EXACTLY what I wanted – shaped windows with HTML, but it was not meant to be. This is currently still an issue with nodeJS, I can’t find any working example of a GTK+ or QT shaped window written for node.
Basically any computer language is a “scripting language.” You meant “interpreted” perhaps?
Edited 2014-04-06 20:24 UTC
Being interpreted is important but “script” is regarded as a class of languages.
For example Lisp is not regarded as a script, but Emacs Lisp is. Similarly, Visual Basic is not regarded as a script but VBScript and VB for Applications (office VBA) are.
Its not a major distinction, but script languages are mostly used as macro “glue” for other applications. Most BASIC dialects can be regarded as scripts even if they compile. One of the advantages to a script is that they can be self-modifying and generate their own code. This feature alone can make the slowness of a script practically irrelevant.
True, but when it comes to Python scripting is a side effect not its main purpose IMO.
So what?
Python’s remarkable popularity isn’t based on creating office suites and FPS games, it’s based on getting a lot of work done really fast.
If you need a one-time data transform, or a cron script to simplify your life, getting the code written is the biggest expense, not the time spent running the code. Python excels in this space.
Google uses so much Python for tossing around huge data sets that they recruited Python’s creator to work for them, and invested in their Unladen Swallow project to provide some excellent language improvements to the reference implementation – also called CPython, to distinguish it from the Java-based Jython, the .NET based IRON Python, the truly innovative Python-based PyPy, and a few others I’m probably forgetting.
Python makes languages fun again IMHO. 🙂
And if you’ve never tried iPython, you should definitely take a look. Freaking awesome!
I use Python one and off, since the 1.x days.
Nowadays I rather use F# for the same tasks.
Yes, IPython is great as a InterLisp/Smalltalk remake.