Image.
Microsoft's message has been it's a one-stop-shop for your IT needs, as opposed to the general open-source ecosystem where everything has a different vendor (if at all). This, and the difficulty of moving to other platforms/vendors/tools was the core of its vendor lock-in power. In the 80's and most of the 90's, I went full Microsoft, from runtime to database to developer tools, because everything worked so well together.
Microsoft has been changing, of course, but if not even Microsoft uses Microsoft products, why should companies use them?
With this, again, we see the tacit admission a product or service built on top of free software is somehow better than the technologies Microsoft sells.
You'd be surprised how effective that can be...
One of the most important aspects of Microsoft's success is network effect. People use Windows and Office because other people use Windows and Office.
But network effect also works on the development/platform side. Devs write apps in the technologies they know and are comfortable with, and those tend to be the technologies they've used for personal or work projects. Today, far fewer of the top tier (even the top 50% really) of developers are using Microsoft technologies, or are even familiar with them. The "cool kids" code in Ruby or Python or Scala or Golang, or mobile specific languages. If they want to get things done to pay the bills they might fall back on java or PHP. But the idea of using C#, .NET, or coding Windows Apps? Far fewer devs under 30 are doing that than they were 10 or 20 years ago.
With fewer devs coding on your platform that means there will be fewer apps, especially the most desired ones, and eventually that will impact the user base as well and weaken the entire business. The era where nobody cares whether a computer runs windows is on the horizon today, even though it may be many years away. If you look at the big apps and systems from the last 5 years you see that a lot of them are either web based or mobile (specifically android/iOS as well).
Microsoft used to understand this and it was a major reason why they invested in Visual Studio for all those years when it was unprofitable. But they've had a period of unrivaled market dominance which has only recently been challenged, so they lost their way for a while.
Catering to devs is how you maintain market relevancy with your platform, which is something Microsoft desperately needs.
Additionally, improving the relationship with the dev community and attracting more devs to your platform makes hiring easier (especially hiring talented folks). It's almost impossible to objectively quantify the benefit of that but it's an enormous factor. Microsoft has been bleeding talent for years and has been starved of a lot of talent for a long time because they were perceived as being old and boring and requiring a completely different set of proficiencies to work there. If Microsoft wanted to they could turn that around and start paving a road back to relevancy in the dev community again.
I also really like how .NET has first-rate libraries for the Azure ecosystem. It really makes doing some very technically difficult/interesting things easy on Azure.
As for others, I work with 2 developers who have made the jump from Java/JavaScript to working in C#/.NET because it is just a plain-old better experience.
As for relevancy and devs, C# is huge in enterprise, as I'm sure you know. I don't think they're really fighting to maintain relevancy there, and I would suggest that since the advent of MVC and Azure, they are growing in relevancy in the SaaS space.
Mid 30's here. I work mostly on C++ but I have to jump into C# code once in a while. I agree that C# is a very productive language and I love how it never gets in your way ("Do you say you don't want to use a common interface for your generics? Use dynamic!").
My only "complaint" is that C# is so indulgent that it gets boring at times, which might actually be a feature.
I was a little circumspect because the usual response to any suggestion that a lack of generics might be some kind of problem is - generally - not positive.
But my point is merely that C# has this thing, and Go doesn't. If I knew enough about Go to say instead that it lacks something else that C# has, I'd have done that...
Doesn't that just mean Azure has horrible APIs that are impossible to work with without the 'magic tooling'?
Part of my own reasons for moving away from C# and much more into the node ecosystem has been in terms of licensing and avoiding lock in. Now that MS is going a much more open route, I'm willing to actually consider some pieces in that direction again.
VS can be very nice to work with, my single largest issue has been how systems have been designed with it, far above and beyond issues with the underlying platforms or the language. The tooling is very nice. However my experiences with "Enterprise" projects leaves a bitter taste in my mouth.
More often than not, I've seen "Enterprise" (quotes intentional) projects that seem to add complexity for its' own sake. Writing code that is unit tested in Java or C# are just plain painful compared to say JS/node. I find that comes down to differences between a static platform and a dynamic one though.
I think MS is rightly pushing for greater Azure deployment of server-side applications. The desktop is dying for most people, and mobile is not going away. By opening the tools, and providing better integration, they allow for a transparent deployment to Azure which is a rented platform which will receive more consistent revenue. It's simply good business.
Except I'm not sure MS is still betting on Windows apps, and they're not making money off of .NET either. Of course, it's very prestigious to have your own dev tools/platform/language and all the big kids have them, but none of them are making money.
Microsoft's also making plenty of money off .NET! Dev tools alone is a billion dollar business for them. The ecosystem around SharePoint alone (which sucks!) is larger than that of every tech on the HN homepage right now.
Spend five minutes in Visual Studio and it's clear that this is a massive ongoing engineering investment. I do an enormous amount of cross-platform development -- Mac, iOS, Linux, embedded systems -- and frankly everything else is caveman tools by comparison.
(I wasn't who downvoted you, BTW)
I'm sure it's great, and if I put more effort into it I might get something to work. But it is a real barrier: Why should I jump to C# if it isn't actually any more convenient?
There are some great cross-platform developments in the pipeline that should allow you to have a native Linux experience approaching VS the future, but you really should use VS if you want the best experience with C#/.NET today. DreamSpark will give you access to free licenses of Windows and VS (and other Microsoft software), that you can install in a free VM host like VirtualBox, so don't let the perceived costs of using VS deter you.
I can't remember if DreamSpark comes with any Azure credits. If it does come with the $150/mo credit that most MSDN subscriptions do, you can use that to run a Windows/VS VM in Azure and just RDP to that. They have templates prebuilt so you can spin up a new VM with Windows and Visual Studio already installed with one click. That's a great way to get up and running very quickly: http://blogs.msdn.com/b/visualstudioalm/archive/2014/06/04/v...
My email's in my profile here. Feel free to get in touch if I can help with anything.
But it was a blessing in disguise really as it made me look into other pastures like Node & Laravel.
TFS is available online under the name Visual Studio Online (a web only offering), with first class integration with Azure.
Development is done there first, and then later, every now and then, a on premises release is available that organizations can install on their server.
And the last updates have had significant features available only through the TFS web-portal. They were not made available via the Windows-components, like the intergrations for Visual Studio on the desktop. If you wanted the improved features you had to go the web-portal.
I'm starting to question whether Microsoft themselves see any value in developing a Windows-parallel to what is already a good enough web-solution. And if they can't be bothered, why should anyone else?
http://blog.javascripting.com/2014/07/28/fastest-growing-new...
You know, the point of open-source being that everyone should be able to contribute and all that.
Microsoft has caught on to that, hence the move.
Lets for arguments sake accept your statement as fact. If that is a fact, is that inherently a bad thing?
If I use a piece of software, open-source or not, will I or will I not benefit from that software somehow obtaining better test-coverage? Ofcourse I will.
If that software is important to me, being able to contribute with tests or other "boring" or "light" material means that the core team can focus on further development. And I honestly don't have a problem with that.
http://www.reuters.com/article/2013/12/20/us-usa-security-rs...
And it's also true that James Clapper didn't lie, he simply misspoke.
http://www.cbsnews.com/news/james-clapper-says-he-misspoke-d...
"It has been very disappointing to have my integrity questioned because of a mistake,"
Did it hurt your feelings as much as mine that they questioned his integrity in such an insulting and unpatriotic way? People who would do such a thing are the real terrorists.