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.

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.