I was recently inspired by this blogpost by Ben Fathi about the story behind the development of Windows Vista. Although probably everyone even outside the Windows development team knows about how technically challenging maintaining such a project must be, this article makes things even clearer. Microsoft has built his market position on top of the capability to reuse every program that has been written for previous versions. You can even upgrade from Windows 1.0 to current versions. It’s hard to say how Microsoft would be positioned today without this strategy, but I think, it would have been better off dropping this dogma every decade or two. A recent positive example is Google’s effort in Fuchsia that could lead to a successor of Android, led by modern design decisions and without the need to test and maintain compatibility for projects more than a decade ago.
Let’s add a feature!
You might think that with increasing market position, one can allocate the resources to maintain an ancient infrastructure and even develop converters and code paths to cope with older applications or file types. Basically, this belief is the reason for the modern innovators dilemma. The effort becomes technically heavily challenging and allows much simpler technologies to be competitive, even with a fracture of the development capacity. But, history has shown that business models prefer a slow death while sustaining their profits rather than risking to lose it all while switching to another horse. Especially in case of maintaining a software platform, there is no in between – like Kodak could have developed the digital photography in parallel. So ultimately, it’s a business decision that is made out of fear and short term optimization, having the laziness of the customer in mind who always prefers a compatibly solution. The whole innovators dilemma however only applies in a free market situation, which is not given in situation of monopolies like Microsoft Windows.
I hope that one generation of software users ahead, the problem of painful legacy software will be a footnote of the past. A majority of standards in the web are not owned by companies who risk losing their market share. The death of Flash as a web technology has shown that a legacy technology is easily outperformed by open standards like HTML5. For example, modern browsers may still support an outdated technology like Flash, but they do not necessarily have to because new standards do not build upon them. A negative example of a standard that is not owned by a single entity but is also about to explode in complexity is C++. Contrary to Python, which took the chance to risk compatibility from version 2 to 3, in favor of long needed cleanups. I think this trend is going to continue, for a good reason. So if you want to make your users happy in the long run, if you want to spend engineering resources on things that matter: Risk incompatibility.