This almost seems like a sane, helpful, developer-friendly move by Microsoft.
...what's the catch?
Developers who were worried that Microsoft was retreating from .Net can breathe easier, as the software giant had a host of .Net-related announcements to make at its annual TechEd North America conference this week. Recent Build developer conferences have been light on .Net content, between Microsoft pushing JavaScript and web …
Embrace
Then sit back an wait. If people start to use it and sales of their flagship systems suffer as a result, they will IMHO sue the pants off them all. It won't matter what the patent pleges say, I am sure there is some get out clause burried deep in 4pt type that will let them do it. ergo stage 3, Extinguish.
Why else would they do this? It can't be a money winner now can it?
My Patent Pledge.
No Mono libraries will ever come anywhere near my Linux systems or any of the systems I manage.
As many others have said, the catch is that MS is now on the first stage. Embrace means that .Net will be competitive with the alternatives, or even better. You'll be able to deploy .Net anywhere, Linux included, and it will be easier than the alternatives.
This is not difficult for MS to achieve, as in a lot of "enterprise" environments Linux deployment is seen as a black art due to the missing installation wizards where you have to press "Next" a few times and everything works by default.
Second stage is "Extend"; where MS starts to add extensions and wizards everywhere so that "enterprise" developers get more of these wizard dialogs to press "Next" a few times and get skeleton applications working that they deploy with the click of a mouse.
Then comes "Extinguish", where all those wizards and extensions get new versions and using them with anything other than MS technologies becomes either very, very hard or impossible. So unless you use a complete Microsoft stack you'll end up in a nightmare of incompatibilities and configuration details that no one really understands. Worse, there is no wizard to fix them.
It has happened in the past. MS did that with IE killing Netscape. Tried to do that with Java, but Sun stopped them in their tracks and they "invented" .Net (recruiting the Delphi main architect to design it, killing two birds with the same stone). They acquired FoxPro only to lead it into irrelevance but making sure Clipper went nowhere. VisualStudio has been supporting over the years a succession of proprietary frameworks and technologies while still not being fully C/C++ standards compliant, not even close to the free alternatives.
There are areas where MS competes and wins because they have a better product. There are some others where they compete and lose. Then there are market segments where they use the "embrace, extend, extinguish" tactic and have won in the past.
I really hope is not going to end like that this time.
The wind does appear to have made a rather swift dispersal out of the downward vortex Ballmer was sinking the company with, morphing into friendly fluffy clouds ( Awful analogy but I've yet to finish my coffee ).
I've been negative on Microsoft for the last few years with all the hostility toward other platforms and lawsuits but do like the noises coming out of the company since Nadella took the helm have been on the whole ... encouraging. Appreciate this may be heresy to some but I make my living out of FOSS and quite welcome a Microsoft that wants to embrace without all that extend and extinguish malarkey.
We've a room full of .Net devs here all using Visual Studio as their primary IDE, making it capable of true cross platform development would be a real boon. However the proof will be in the pudding ..
Who knows, maybe they will release an enterprise version of 8 and Server 2012 without a trace of that toy town fisher price interface. ( maybe asking a bit much here )
"Our goal is for the next version of .Net to be the first and only framework designed for the cloud, helping you to create on-premises applications and move them to the cloud with no changes..."
As a lifelong MS developer.... May I ask you to pass me the sick bag please!... For as long as I can remember every single iteration of product out of Redmond has necessitated plumbing, reworking or outright retooling. So to make a claim like that about MS CloudFog is laughable to me!
MS think they can earn more moolah elsewhere so are moving your knowledge goal posts again, this is news?
For mr 1.8 Billion downloads, divide that by 3 to 6 as that is how many version .Net downloads each PC has, mine has 6, not from choice, I despise the number of updates and the time .Net takes to install each month.
"For mr 1.8 Billion downloads, divide that by 3 to 6 as that is how many version .Net downloads each PC has"
Nope - that's not possible. The only current RTM install options are 3.x and / or 4.x - so at worst 2 versions. You must be confusing .Net with Java...
And it says 1.8 Billion installs, not downloads.
One of the early promises of .NET was an end to "dependency hell".
Version 1(.1) of the .NET framework was essentially a throwaway. Versions of the .NET framework from 2.0 up to 3.5 were cumulative supersets - 3.5 included all the functionality of 2.0 and 3.0. Applications written for earlier versions of the framework would run unchanged on later versions.
V4.0 broke this cycle by implementing a non-compatible framework. V4.5 overwrites V4.0 (breaking some small number of applications in the process). V4.5.1 and V4.5.2 overwrite V4.5.
You can have V1.1 and V4.x on the same machine, or V2-V3.5 and V4.x, but not 1.1 and V2-V3.5 nor any more than one of V4, V4.5, V4.5.1 or V4.5.2.
Please explain how "different apps running on the same server will be able to run different versions of the same libraries" will be better this time.
Confused of Godalming
>All you should need to install is 3.5 and 4.5.x to be able to run all .Net code.
That, unfortunately, is not true. The 4.5.x versions include behaviour changes (some deliberate such as in the Marshalling code and some which are consequences of bug fixes) which, because they overwrite V4 means that some applications stop working and need to be changed. If you're trying to support multiple applications on a single machine you need to be able to deploy each application with the version of the .NET framework against which it has been tested and works, not find that you're left with a situation in which you can't deploy the new framework your new code requires because it changes the behaviour on which your old code depends (until you can update, test and deploy fixes).
MOST .Net code will run on either 3.5 or 4.5.x. However, it's definitely NOT true that ALL .Net code migrates smoothly across updates within each of these two families. Unfortunately, MOST is not good enough in operational scenarios where you have applications developed at different times.
"One of the early promises of .NET was an end to "dependency hell"."
That was the clearest possible indication that the early promises were worthless.
Dependency hell is caused by people releasing new versions of old libraries that have different behaviour from the old ones. Shock news: you can do that in *any* language or platform. Indeed, it would hardly be a platform worth using if you couldn't produce a version 2 that fixed the bugs of version 1. Dependency hell is therefore caused by a lack of testing and discipline by practitioners, not a lack of appropriate technology. Anyone trying to sell you a solution to a behavioural problem is selling snake oil.
Meanwhile, unseen (and probably unused) by most, Microsoft have actually rolled out a thoroughly-horrible-but-functional solution to dependency hell, through the medium of activation contexts and manifests. Nothing particularly to do with .NET, though. They are supported for both native and managed code.
Forget Nadella when it comes to the developer servers and services side of things. Your barometer of sane-thought comes in the form of Scott Guthrie. If you note his aspirations, thoughts and direction during his tenure, any change to these will signal a) he's been assimilated by the top-brass b) his direction is no longer in favour. Both of which will quite plainly signal huge risk to the continued improvements MS has been delivering to developers recently. Do not underestimate the impact, both direct and indirect, he has had on the developer side of things when it comes to anything .NET or Azure related.