The Cultural Defeat of Microsoft

In computing there are two mainstream worlds; that of POSIX, and that of Windows. Linux, BSD, OS X, et al. all are of the POSIX world. Even operating systems like Android use POSIX kernels, although they don't use a POSIX-like userland.

There are of course countless other OSes, embedded systems, etc. But for doing development work it's practically guaranteed that either a Windows or POSIX system will be used.

I draw this distinction between Windows and POSIX because the distinction is significant. The design of Windows NT was strongly inspired by VMS, and also of course by the preceding DOS/Windows 9x. From the perspective of POSIX, Windows is “alien technology”. Of course, Windows has a POSIX compatibility layer; nobody uses it, though (but cygwin sees common use).

Windows and POSIX are fundamentally different in many ways, and lead to further “cultural” differences in how software is developed on these platforms. Windows and POSIX, then, are two “cultures”, the technical differences of the core technology itself being only a small part of that.

Microsoft's dominance in the OS space requires the Windows culture to be prevalent. This means being able to find people who are “native” to the Windows way of doing things, and happy with it. If the Windows culture is not prevalent, finding people who can work with Windows becomes hard; it comes to be seen as weird, unfamiliar, a foreign language, and it is worked with only grudgingly.

Nowadays there is an enormous popularity of POSIX operating systems in server roles. Linux dominates the server-side web stack. This leads to an enormous cultural prevalence which sees the cultural prevalence of Windows, especially as a server OS, diminish. Once this process starts the phenomenon amplifies itself; people come to rely on huge numbers of open source tools designed for POSIX, and when they try to use Windows as a server OS, they lose that entire ecosystem. Many tools have Windows ports, but work more awkwardly, because those tools hail from the land of POSIX. They serve as a reminder of how you'd rather be working on POSIX. The popularity of cygwin, mingw/MSYS, etc. is a testament to this.

This prevalence is now so great it is essentially unstoppable. Microsoft's failing here is in failing to realise the importance of cultural prevalence. If they had realised this, they might, for example, have released stripped down versions of Windows Server for free to compete with Linux in the web space. This would probably have been a necessary (though not necessarily sufficient) condition for maintaining decent cultural prevalence in that space. They failed to have a strategy for maintaining that prevalence, and now they're having to play catchup.

Instead they had to suffer under the mismanagement of Ballmer. My admittedly limited impression of Ballmer is that he appears to be a sort of glorified used car salesman type. His most famous attributes are probably his poor emotional control (the chair throwing incident) and his astoundingly shortsighted failure to recognise the intelligence of Amazon's strategy of reinvesting its profits in the company.

Microsoft is now having to open source things to try and appeal to a now dominant (on the server side) open source world. They've open sourced .NET. They're providing a stripped down version of Windows 10 for free on the Raspberry Pi. They've released SQL Server for Linux.

Microsoft's cultural prevalence has been pulled from under its feet, and it's now having to appeal to POSIX sensibilities to peddle its technologies. Moreover, the workforce of Microsoft like any company is under perpetual change, and as such Microsoft itself is not and cannot be immune to the declining cultural prevalence of the Microsoft culture of technology. In other words, Microsoft's own internal culture is probably facing “infection” by the POSIX world. They're porting OpenSSH to Windows. They've released open source projects on GitHub where the build instructions for Linux are listed first and the instructions for Windows last.

They offer Linux on Azure, because of course they have no choice in the matter — they lost the culture war long ago. And when they did that, their own “infection” became inevitable, because the POSIX culture will come to dominate the preferences of their own employees, and of the market. Windows had an opportunity to compete with Linux, and to sow the seeds for its own cultural dominance, but failed to do so, probably due to a shortsighted emphasis on immediate profit. The cultural dominance of POSIX, and the open source development methodology, is now so great that it will come to define Microsoft, and Windows, rather than vice versa.