I just read an Joel's article about Microsoft's breaking change (non-backwards compatibility) with dot net's introduction. It is interesting and explicitly reflected the condition during that time. But now almost 10 years has passed.

The breaking change

It is mainly on how bad is Microsoft introducing non-backwards compatibility development tools, such as dot net, instead of improving the already-widely used asp classic or VB6. As much have known, dot net is not natively embedded in windows XP (yes in vista or 7), so in order to use the .net apps, you need to install the .net framework of over 300mb (it's big that day).

However, as we see that nowadays many business use .net as their main development tools, with asp.net or mvc as their web-based applications. C# nowadays be one of tops programming languages (the most questions in stackoverflow). The more interesing part is, win32api still alive even there is newer technology out there (and still widely used).

Imagine if microsoft does not introduce the breaking change, there will many corporates still uses asp classic or vb-based applications (there still is, but not that much). There are many corporates use additional services such as azure or sharepoint (beside how expensive is it).

Please note that I also know there are many flagships applications (maybe adobe's and blizzard's) still use C-based or older language and not porting to newer high-level language.

The question

How can Microsoft persuade the users to migrate their old applications into dot net? As we have known it is very hard and give no immediate value when rewrite the applications (netscape story), and it is very risky. I am more interested in Microsoft's way and not opinion such as "because dot net is OOP, or dot net is dll-embedable, etc".

This question may be constructive, as the technology is vastly changes over times lately. As we can see, Microsoft changes Asp.Net webform to MVC, winform is legacy now, it is starting to change to use windows store rather than basic-installment, touchscreen and later on we will have see-through applications such as google class. And that will be breaking changes.

We will need to account portability as an issue nowadays. We will need other than just mere technology choice, but also migration plans. Even maybe as critical as we might need multiplatform language compiler, as approached by Joel's Wasabi. (hey, I read his articles too much!)

  • A good question, but one thing I must point out. Webforms are not legacy. MS are actively developing both technologies (Webform & ASP.NET MVC). I wish it was legacy though... – Lotok Oct 23 '13 at 12:21
  • @james well, I just searching that now ms has 3 native UI for windows, winform, wpf and winrt ui. Well, what a choice... – Fendy Oct 23 '13 at 14:27

Aside from the technological breakthroughs, Microsoft Marketed the Dot Net framework by making it so easy for the developers to use that it became their first choice when being asked to develop new applications. Just look at Microsoft loves to spoil developers with Visual Studio. Microsoft sold the idea to developers first then they sold it to the business. Once the businesses saw that it made developers more productive, they started to make more use of it. Though it wasn't a field of roses as there are people who shun Microsoft after experiencing breaking changes every now and then.

Ok, so back to the way of the "Breaking Changes"

Why did Microsoft invest in the .NET Framework, because after seeing the success of java with the JVM, they perceived that was where the market was going, and they want a piece of that market. And thus, .NET was born. Microsoft is making these breaking changes to somehow force the market to move forward and to keep its market from stagnating. Their competitors are steadily improving as well, and to keep themselves relevant, they have to make decisions. These breaking changes are a result of those decisions. If MS ignored the java threat back then and didn't make .NET, M$ might've spiraled into oblivion long ago. And these changes continue to happen, just look at the metro interface. If M$ didn't do that, their tablet market share would never be able to recover from the onslaught of ipads and android tablets.

Lastly, migration plans and a language to run across all platforms. Microsoft's solution to that is the .NET Framework. Though it is limited to Windows devices only. But as you can see, they borrowed the idea from java, compile once then run everywhere. Their big difference is how they handle backwards compatibility. .NET allows you to keep multiple version of it to keep older applications from being broken. And Microsoft will keep on supporting older .NET framework versions to a certain extent in newer platforms to keep this backward compatibility.

  • Um, in the way you are saying is java does not support backward compatibility or am I mistaken? However, nice answer and logical one – Fendy Oct 23 '13 at 7:26
  • Java supports backward compatibility, sorry if it sounded like it didn't. Its just that the way they handle this is different. This is evident in how they handle previous versions of their runtime. JRE can only keep one version, so if you have a java app that is incompatible with your current JRE, you're out of luck. Though there are work arounds to this. M$ on the other hand, lets you keep multiple version of the .NET framework so you're never left with an old app that refuses to run because you're using the latest release of the .NET runtime – Maru Oct 23 '13 at 7:46
  • @Maru - You can have multiple JREs installed on the same computer and then you can choose which one you use for running a specific application by making a shell script "C:\oldjava\java.exe C:\myapp\myapp.jar" or something like that. – Viliam Búr Oct 23 '13 at 10:34
  • @Viliam, thats one of the work arounds I mentioned. But its still not as simple as just installing the run time version then expecting the older app to work. not to mention you also have to disable jucheck. – Maru Oct 23 '13 at 11:41
  • 1
    @ViliamBúr sure, but a .net app can specify which version of the framework it uses. No script is needed to make it work. The nice thing is that any third party library can also do that. The users ends up with several versions of the same dll and everything just works. – Simon Bergot Oct 23 '13 at 11:41

It's about reality not marketing. Microsoft could have made it easier to port existing VB6 applications to .Net.
It is horribly difficult and expensive to port large applications. Many companies couldn't justify spending that kind of money for no new features.

It is possible to make automatic tools which make the port easier - almost entirely automatic. Third-party companies make a living selling such tools (Artinsoft, Code Architects). The built-in Microsoft upgrade wizard was pathetic - according to the guy who wrote it - of course he is from Artinsoft so he wants to sell you something better. Microsoft UK also admitted the Artinsoft and Code Architects tools are better than the built-in upgrade wizard.
Microsoft should have written better porting tools, or bought these ones from the third-party companies and made them free.

  • Another vision worth noting. Yes it is an interesting event occured there and it is questionable why Microsoft introduce the breaking change. I know it is hard to port large applications since many apps and webs are still in asp classic and vb6. The factor why companies do want to port to dot net even though it is difficult and expensive itself a question, and how Microsoft handle it. – Fendy Oct 23 '13 at 8:37
  • Probably a marketing move by microsoft to encourage companies like artinsoft to do the job for them while they focus on their core competencies. Its because of companies like artinsoft that build apps and tools centered around M$ that made M$ flourish. As for porting, probably future proofing and taking advantage of better features of the new framework. We all know how the Y2K millenium bug ravaged the IT landscape. Of course, the new features have to justify the cost of development before business folk decide to jump into it. – Maru Oct 23 '13 at 9:38

I'm confused by the article which seems to say Microsoft is wonderful for allowing bad programming behavior. However, I was caught up in their breaking backwards compatibility with their own software back in that same time period as I was making my first step into the web development market. I spent lots of money and lots of time developing an application that, when Microsoft updated, sent that whole application down in flames.

Out of frustration, I moved on to FreeBSD and Linux and have not touched a Windows machine since. My company is 28 employees strong now and never, ever trusts Microsoft for anything.

  • For quick clarification, nope. The article does not say that the way Microsoft done is wonderful. It is said that Microsoft has lost its power as soon as the breaking backwards compatibility occur. And my point of question is, instead of companies doing the same like you did (avoid Microsoft-ish apps anymore), why do they agree with MS way of rewrite apps? – Fendy Oct 23 '13 at 9:01
  • @Fendy Well, you're saying the same thing. They lost power when they didn't do it and, without searching through the article again, there is a title about them losing the backwards compatibility religion. – Rob Oct 23 '13 at 15:43

Not the answer you're looking for? Browse other questions tagged or ask your own question.