Windows, modularity, and the Law of Unintended Consequences
For some time, my office PC had suffered from multimedia niggles. Some were relatively minor, such as Facebook and Twitter videos failing to play, but others were more problematic. For example, some work-related videos on YouTube would play, but others would not.
The straw that broke the camel’s back was when I discovered that I couldn’t record calls made within Skype for Business (“the app formerly known as Lync”). With a couple of typically-cryptic Windows error messages as my starting points, I started digging, and it wasn’t long before clues emerged pointing to what we used to call the Windows Media Player, or WMP.
Those who’ve installed Windows more often than I have will already have guessed it: this PC is running not Windows 10, but Windows 10N. The N versions of Windows lack media playback and were produced in response to the 2004 European Commission antitrust ruling which found Microsoft guilty of anti-competitive behaviour in bundling WMP as standard.
The problem is that in taking WMP out, it seems that Microsoft took out a lot more than just a media player – it took out a chunk of stuff that is pretty much a necessity these days. It’s a bit like saying, “You don’t want Internet Explorer? Ah, that must mean you don’t want the Internet – right, we’re removing all the networking…”
Fortunately, the fix was relatively easy: you can download the missing bits from Microsoft’s website for free. A few minutes and a reboot later, and all that media stuff was working at last.
Building a system or an app to be truly modular
Of course the world has moved on a lot since then, as has Microsoft. And perhaps the original N versions of Windows XP were just a quick fix in response to that EC ruling.
However, it seems extremely odd that Windows 10N should still be in this state over a decade later. Sure, you don’t want WMP, Skype, the browser and so on to all have their own individual multimedia subsystems, when they could all use the same one. But you don’t do that by making everything else work through WMP – you modularise it properly.
Either you make the absolute minimum bits that everything needs a core part of the operating system, and WMP is then one of several programs that can call those, or you flip it around and use APIs that allow other applications to call WMP – or any other media player – when they need video playback.
This is a fairly coarse-grained example, but as modularity grows more popular in many areas of software design, whether it’s via containers, hyperscale computing, microservices or some other paradigm, it’s going to be interesting to see whether it pops up again – or perhaps, how often it pops up again.
Edit… And now the update to Windows 10 v.1803 has broken the WMP add-on, necessitating a fresh reinstall. That’s clever, Microsoft – way to go!!