I saw the James Cameron movie Titanic again the other night. In the scene shown above, the band plays on with grace and dignity, while the ship slowly sinks, and all hell breaks loose around them.
That’s when it hit me: .NET developers face a similar fate. Do we ride Microsoft .NET to the bottom of the icy Atlantic, or try to jump on one of the HTML5+JavaScript lifeboats? Or perhaps more likely, .NET isn’t really sinking after all, and this controversy is just another molehill made into a mountain by the frenzied blogosphere.
The Unsinkable Microsoft
“God Himself could not sink her,” was the famous quote in the Titanic movie by chief protagonist Cal Huckley. Microsoft seemed unsinkable a decade ago when it introduced the .NET Framework as its new universal programming model.
The year was 2002. Microsoft had just emerged victorious in the first major challenge to its market supremacy by releasing the Internet Explorer web browser for free, thus crushing Netscape’s attempt to move the computer desktop to the World Wide Web. Microsoft’s 90% monopoly on personal computers with Windows and Office seemed secure, and most of its upstart rivals were decimated in the dot-com implosion.
Then Bill Gates semi-retired to start his much more important mission to save the world. Steve Ballmer took the reins and went on a buying spree. Microsoft adopted a shotgun approach to innovation and complacently rode a wave of good business until…
Microsoft Hits the Mobile Iceberg
In 2005, Microsoft CEO Steve Ballmer said, “Google’s not a real company. It’s a house of cards.” Then in 2007 Ballmer said, “There’s no chance that the iPhone is going to get any significant market share. No chance.”
Today Google Android commands 38% of the smartphone market and growing fast, Apple iOS owns 27% and growing, whereas Microsoft Windows Phone is losing grip on a mere 6% market share. Even though Microsoft has been dabbling in mobile computing for a decade, it somehow missed the smartphone wave launched by the iPhone and expanded by Android. It’s not all bad news, however, as Microsoft is collecting lucrative tolls on Android.
Microsoft finds itself playing catch-up in the race on two newly important computing platforms: smartphone and tablet. But it’s not just the battle for users that Microsoft hopes to win. The real key to the success of any computing platform is the collection of apps that run on it. And developers build the apps, so Microsoft ultimately needs to win over developers to win the mobile platforms.
Microsoft Disses .NET for HTML5
The trouble first started at Microsoft’s Professional Developer Conference (PDC) in October 2010. That’s when Microsoft Server and Tools President Bob Muglia famously said, “Silverlight is our development platform for Windows Phone,” but when it comes to cross-platform development, “Our strategy with Silverlight has shifted.” Muglia went on to say that “HTML is the only true cross platform solution for everything, including (Apple’s) iOS platform.”
Microsoft fanned the flames in June 2011 with a YouTube video touting Windows 8 and its tiled interface similar to Windows Phone. Microsoft also demonstrated “new-style full-screen ‘immersive’ applications,” which run on Windows, which itself runs on many different devices including phones and tablets. But there was not a single mention of .NET or Silverlight during the entire video. And the narrator emphasized that these new immersive applications are “based on HTML5 and JavaScript.”
.NET Community Freaks Out
With the telegraphed change in direction and subsequent lack of official response from Microsoft, the blogosphere reacted swiftly:
- Dumping .NET – Microsoft’s Madness
“If the future of Windows apps is HTML5/JavaScript then Windows has no future.” and “Many are already jumping ship but to go to what?” - Microsoft refuses to comment as .NET developers fret about Windows 8
“It is bewildering that Microsoft is being so careless with this critical part of its platform, even if this turns out to be more to do with communication than technical factors.” - Coders decry Silverlight change
“Developers say Microsoft has ‘betrayed’ them by changing strategy on the Silverlight web technology.”
The .NET and Silverlight forums also erupted, with a lot of speculation and very little damage control from Microsoft:
- ‘HTML5 is the future,’ more details emerge
“More depressing details emerge that all seem to say : ‘HTML5 is the future’ for Windows 8 ‘modern applications’ (yes, they are now what is called ‘modern’). And not one, not one mention of .NET, WPF, or Silverlight.” - Windows 8 apps going html5, wtf
“Just watched the first official Windows 8 video. While I like the UI/UX, I don’t like that we are supposed to write Windows 8 apps in html/js. Wow, [that’s the stupidest] thing I ever heard. Microsoft has a first class cross-platform application framework called Silverlight and they want us to write freaking javascript. Really!? Probably the next version of WindowsPhone will run HTML5 as well. C’mon, I’m really disappointed.”
That last forum post had 192 replies and was viewed 7 million times before Microsoft moderators closed the thread. Developers get nervous when they don’t hear their favorite tools and languages mentioned prominently in their vendor’s product plans. But the anger and frustration runs deeper than just the debate over what languages will be supported in the next version of .NET.
.NET Promise Unfulfilled
The original promise of .NET was to provide a unifying framework across all platforms and devices. As Microsoft originally described it, “.NET is the Microsoft Web services strategy to connect information, people, systems, and devices through software. Integrated across the Microsoft platform, .NET technology provides the ability to quickly build, deploy, manage, and use connected, security-enhanced solutions with Web services.”
Sounds really useful. But the promise for .NET immediately went awry in v1.0 with the release of two separate UI libraries: Windows.Forms and Web.Forms. This meant that developers had to write and maintain separate code for Windows and Web applications. Hope for a single, unifying framework was dashed right out of the gate.
The .NET Framework continued to splinter over the years. Compact Framework, Silverlight, XNA, MVC, and WPF are all unique subsets of the full .NET. Each is quite useful in its own right. But the unfortunate result is that .NET apps require a separate codebase on each platform. Which in turn results in more complexity, more time and effort required, and many more problems to solve. So it’s no surprise that Microsoft sees HTML5+JavaScript as the cross-platform savior.
Two Divisions, Two Directions
It wouldn’t be this way if Microsoft as a whole was dedicated to the success of .NET. But like a racy HBO series without the sex, there’s a dramatic story of two warring clans within Microsoft, each vying for control of the empire. This brilliant Bonkers World comic by Emmanuel Cornet illustrates the Microsoft hierarchy:
First there’s DevDiv, the developer division that delivered .NET to the world. They’re the good guys. Second there’s WinDiv, the Windows division that always has and likely always will rely on C++ for its speed, efficiency, and street cred. And they’re the bad… nope, actually they’re the good guys too. The reality is that both divisions have unique needs. .NET is excellent for apps and websites, and C++ is excellent for operating systems.
The real problem is that the Microsoft leadership never demanded reconciliation of these two divisions. So when the world started to shift toward smartphones and tablets, Microsoft didn’t have a unified operating system and development framework in place that could run on all these new devices. The good news is there’s a lot of really smart people at Microsoft (I know some of them) and a solution is likely coming that will bring together both sides of the Redmond house. Unfortunately, Microsoft hasn’t bragged or even leaked about all the supposed goodness to come. Which is an odd play in today’s hype-and-gossip-driven online world.
FUD Friendly Fire
Fear, Uncertainty and Doubt (FUD) is a common marketing ploy by larger companies to retain customers and intimidate competitors. A market leader such as Apple may pre-announce or leak details about upcoming products such as the iPad HD. Current iPad owners who want a new tablet will then likely wait to see what the new iPad HD has to offer, instead of switching sooner to an Android tablet. And potential competitors may decide it’s not worth trying to introduce yet another me-too tablet when Apple keeps raising the bar. Even if the promised product remains vaporware for months or years, the FUD threat is a potent weapon.
Like most successful big companies, Microsoft has been a FUD master over the years. This is a key reason why Microsoft has enjoyed its 90% monopoly on Office and Windows. Why should customers switch to a different platform when Microsoft keeps promising new and better versions of what you already have and know how to use? And every couple of versions Microsoft gets it really right, like with Windows XP and most recently Windows 7.
So what’s curious about the .NET controversy is why Microsoft is using FUD against itself by keeping its developer community in the dark. Call it “FUD Friendly Fire.” It’s a marketing missile gone astray, and .NET developers are the collateral damage. Many developers are expressing concern and doubt in forums and blogs. It’s a negative energy that feeds upon itself in the unfettered cyberspace. The result may be an unintended and unnecessary developer defection to other platforms.
Microsoft is Not the Titanic
When the Titanic struck the iceberg and split the welded seams along its bow, the ship’s fate was sealed. In the movie, Titanic Captain Ismay exclaimed, “This ship can’t sink!” Replied ship designer Thomas Andrews: “She’s made of iron, sir! I assure you, she can… and she will. It is a mathematical certainty.”
But the same is not true with Microsoft. Never count out a company with $50 billion cash on hand and Bill Gates on its Board of Directors. Microsoft is not going down without a fight. And I say that as one of Microsoft’s many critics.
IBM just celebrated its 100th birthday because it learned to adapt over the years as technology shifted from typewriters to mainframes to PCs to the Internet. Microsoft is also a master adapter and has rarely been first to any technology party. Microsoft is most successful when it lets someone else create a market. Then Microsoft sweeps in with a competitive solution, and by version 3, Microsoft owns a good chunk of said market. Think of Windows, Word, Excel, and Xbox. Though to be fair, Microsoft has yet to yield the same formulaic success with smartphones, MP3 players and search engines.
Microsoft has been dabbling in mobile and tablets for a decade, but it took Apple to finally show the world what it really means to use a computer with our fat fingers instead of a mouse and keyboard. Now Microsoft has an established market in which to work its magic. Will the Windows Phone and Windows Tablet eventually muscle out the iPhone and iPad? We’ll see, but it’s doubtful that Microsoft (or any company) will repeat the 90% monopoly on mobile that Microsoft currently enjoys on PCs.
Microsoft Needs .NET
To succeed, Microsoft will have to lure developers to write apps for its Windows platforms on PCs, smartphones, tablets, and other devices like TVs. And so it’s quite unlikely that Microsoft will summarily discard the millions of developers using the various .NET flavors like Silverlight, WPF and Windows Forms.
If Microsoft were to move solely to generic HTML and JavaScript, then nobody would need to buy Windows, and then nobody would buy Microsoft Office. With two major cash cows dead, the company would be at a severe disadvantage. But it won’t happen. Microsoft realizes it must keep its hundreds of millions users locked into the Windows ecosystem.
The Future of .NET
The best play for Microsoft — and the strategy the company appears to be adopting — is to create a Windows app framework that runs on any device and the cloud. This unifying UI, application and data framework would support .NET, C++ and HTML5+JavaScript. Some people are speculating the Jupiter project is Microsoft’s technological answer to this great challenge, and Microsoft will likely reveal Jupiter in detail at the BUILD Conference in September 2011.
Or so the rumor goes. We just don’t know for sure. But there have been more positive articles lately:
- Premature cries of Silverlight / WPF skill loss. Windows 8 supports all programming models
“I’m more excited about the new possibilities coming in the new Jupiter XAML programming model than the misconception that HTML+JS is the only way to create apps.” - Silverlight isn’t dead, it’s the heart of Windows Phone, Windows 8 and Xbox
“Microsoft’s three screens and a cloud dream is finally coming true.” and “Microsoft’s bold unification of user interfaces is just the start of a multi device convergence that the company has been touting for years.”
Why We Love .NET
Preserving the talent and goodwill of the .NET community is important for Microsoft. .NET and especially C# developers are a loyal bunch, and here’s why:
With C#, you write the code,
and it just works.
Sure there can be occasional logic errors, but they’re usually found and fixed quickly. Contrast that to JavaScript, Objective C, and many other programming languages with which you spend way too much time hunting down run-time errors and memory leaks, instead of solving the business problem at hand, which is where the real money is.
I’ve used most of the modern IDEs (Integrated Development Environments), and in my experience, Visual Studio for .NET is one of the best. Visual Studio is powerful, stable, has surprisingly good documentation, macros, tools, extensions, and everything you need to build solid software quickly. (And by the way, WebStorm by JetBrains is a good IDE for JavaScript/HTML5.)
Another key benefit of .NET is you can mix and match programming languages even within the same project. So whether you like the compactness of C#, the verbosity of VisualBasic.NET, or the dynamism of F#, you can write code in any .NET language of your choice and integrate it with any project.
C# is the 14th programming language I’ve used professionally, and it’s my all-time favorite. C# is a beautiful, concise, powerful, reliable, first-class language that doesn’t suck like the rest of them. However, I’ve been in this business long enough to realize that programming languages are like religions. We all think we have the right one, but we all can’t be right.
.NET is Alive and Well
A key point to remember is that the fate of .NET and Microsoft are related but not explicitly linked. The C# programming language and underlying framework (Common Language Infrastructure or CLI) are ECMA standards. Combined with Microsoft’s Community Promise, this means independent developers can use the .NET Framework to build and sell .NET apps on any supported platform without royalties or fear of getting sued by Microsoft for copyright or patent infringement, which seems to be getting out of hand lately.
There is also an open-source version of .NET called Mono. It was started by .NET legend Miguel de Icaza, later run by Novell, and recently purchased by Attachmate in a complicated deal that also involved Microsoft. It’s a mystery why Microsoft didn’t assume control of the Mono portion of Novell. Perhaps there was a desire to keep the open-source Mono separate from the commercial interests of Microsoft. Unfortunately, Attachmate promptly fired Icaza and the entire Mono staff, casting in doubt the future of Mono.
Thankfully Icaza jumped to the rescue once again. His new company Xamarin announced that it will pick up support for Mono. Even better news, Xamarin plans to deliver commercial .NET ports for iOS and Android. This will allow C# developers to build very fast, cross-platform, native apps. Perhaps big things will come from this small company, and Xamarin will deliver the ultimate unified .NET Framework. And let’s hope that Attachmate doesn’t try to muck up Mono, legal-wise that is.
Finally, one cannot discount the power of the .NET community. There are thousands of .NET tool and component companies. There are millions of professional developers whose businesses depend on .NET. And there are tens of millions of people who use .NET software every day, whether they realize it or not.
Decide for Yourself
So what’s a developer to do? If I was starting out fresh today, I’d learn HTML5+JavaScript. It’s the current best bet for building truly platform-independent and vendor-independent software for Web v3.0. I probably wouldn’t learn .NET or Objective C first unless I had a good paying job that required it.
But what if you are a C# veteran like me who has a significant investment in .NET code, tools and experience? Microsoft will likely come through with a workable solution for .NET developers, so your investment in .NET will probably be preserved. But change is a constant in software development, and if you’re itching to learn something new, HTML5+JavaScript is an excellent choice. It appears those skills will also come in handy in any future .NET Framework as well.
For me personally, I’m sticking with .NET for now and hoping for the best. As a disclosure, I have no alliance or allegiance to Microsoft. I’m just a paying customer and vocal critic. But I’m also a .NET fan. Though I’ll have to admit that I’ve been spending a lot of my free time lately messing around with JavaScript, which is powerful yet flawed and needlessly complex in places.
To help you decide for yourself, we’ve gathered a collection of articles discussing this controversy on IsDotNetDead.com, and of course we added our own commentary because we’re bloggers and that’s our job. Please visit the site to see what the .NET community has to say about the future of its favorite development environment and add your own comment on whether Is .NET Dead?
Article published on July 14, 2011
If you like this article, please share it: |
July 14th, 2011 at 9:34 pm
[…] Read .NET Isn’t Dead on DevTopics >> AKPC_IDS += "498,";Popularity: unranked [?]SHARETHIS.addEntry({ title: ".NET Isn’t Dead", url: "http://www.csharp411.com/net-isnt-dead/" }); […]
July 14th, 2011 at 9:41 pm
[…] No, .NET Isn’t Dead […]
July 20th, 2011 at 11:36 am
[…] No, .NET Isn’t Dead […]
July 20th, 2011 at 11:38 am
[…] .NET Isn’t Dead Jul […]
August 10th, 2011 at 5:05 am
1,000 of .net software, Mostly viruses written in .net, The first thing a user should do when buying a computer in to remove the .net framework to add speed, memory and less virus. Otherwise I doubt a normal user would have any use for it.
August 10th, 2011 at 8:58 am
@Master: I haven’t seen a credible .NET virus since 2002. Technically speaking, the .NET Framework isn’t the best place for viruses because it’s high level (easy to detect by anti-virus software) and most professional .NET libraries are digitally signed and therefore difficult to spoof by virus. You’d be surprised at how much desktop software these days runs on .NET. On today’s modern PCs, .NET does not affect computer speed or memory as you claim.
August 16th, 2011 at 12:22 pm
[…] quickly with 500,000 new activations each day. Ironically and sadly, Microsoft doesn’t even use .NET in Windows. The .NET Framework is required to program Windows Phone 7, but that mobile platform is […]
October 24th, 2014 at 5:44 pm
please remove the link IsDotNetDead.com from your website.
IsDotNetDead.com has morphed into a chineese webshop for urgly shoes!