In case you missed it, Microsoft made a bunch of Linux-related announcements recently. First, we found out Microsoft was offering SQL Server running on Linux. Then at Build last week, Microsoft introduced “native Ubuntu Linux binaries running on Windows” and treated us to a demo of Bash on Windows 10.
The fact that Microsoft now supports SQL Server on Linux isn’t really a technical development -- it’s a business move. Fortunately for Microsoft, the Ballmer blinders are gone, and the company can see that Linux is the OS of choice for our cloud future, not Windows. Microsoft lost that battle a long time ago. Not surprisingly, the Azure cloud folks have taken the lead in pushing Microsoft toward supporting Linux (and other open source cloud-related technologies, including Docker, Kubernetes, and various NoSQL databases).
Offering Microsoft SQL Server on Linux will likely increase revenue, not harm it. All of the major competitors to Microsoft SQL Server run on Linux, but SQL Server didn’t, so Microsoft was losing sales and associated support contracts. The truth is that Microsoft SQL Server is a solid database and should have begun the multiplatform process a long time ago. The upshot is that a bunch of old Windows systems that still run Microsoft SQL Server will become Linux boxes, which for Microsoft is better than them becoming Linux boxes running Oracle or DB2.
The Linux-on-Windows announcement is more interesting, but requires some clarification. This is not Linux running in a VM -- there's no Linux kernel present, nor a hypervisor emulating hardware. This isn’t Cygwin, which is a Unix environment compiled specifically to run on the Windows platform. It’s not a container, either. The Ubuntu environment running on Windows 10 contains binaries identical to the binaries running on an Ubuntu platform -- an ELF executable.
What Microsoft has done is build a system call translation layer. When a Linux binary makes a syscall, Microsoft’s Windows Subsystem for Linux translates it into a Windows syscall and delivers what the binary expects. It’s akin to WINE, which does something similar for Windows binaries running on Linux. Also like WINE, it’s not magic -- many binaries won’t "just work." This is only the beginning of a long process for Microsoft.
The real question: Why is this happening? Why did Microsoft suddenly decide after all this time to partner with Canonical and write this translation layer? Primarily for a very similar reason that it's releasing SQL Server for Linux -- the company is losing ground at the desktop level with developers, system admins, devops engineers, and the like. Today all those folks are working more on Linux server platforms than on Windows, and using Windows on your laptop while developing for Linux is cumbersome at best and useless at worst.
Sign up for CIO Asia eNewsletters.