Windows Subsystem for Linux (aka Ubuntu on Windows 10)
Microsoft recently announced at the Build conference that Windows 10 will soon include Bash, the command-line shell used by GNU Linux and various flavors of Unix.
As more details followed, the reality of this feature came to light: Microsoft partnered with Canonical to bring most of the underlying components of Ubuntu Linux to Windows.
This is not Linux running in a virtual machine. Instead, a layer called the Windows Subsystem for Linux provides translation between the calls a Linux application expects and the calls the Windows expects. This layer runs native Ubuntu packages, without recompilation.
That’s a very big deal. For several years, Microsoft has conceded the developer PC market to Apple. As web and device applications became more important, developers moved from PCs and Windows to Apple and OS X because the underlying Unix system made this type of work more productive. Web servers, SSH, version control tools and an entire ecosystem of design tools made OS X extremely attractive to developers.
Scores of computer science students bought Macs for university. Professors who began their careers with Unix (or harbor an undying hatred of Microsoft) now teach using Macs.
Apple also cracked the power management and portability puzzle which is only recently improving on the PC side. Microsoft has been pushing the PC makers forward with their Surface products and it only makes sense that they now push the software forward.
By bringing the thousands of Linux tools available to Windows, Microsoft is attempting to gain back their beloved developer base.
A Use Case
One thing I’ve kept a Linux box around for is running a development version of this website.
I use Jekyll, which is a set of tools for building statically generated websites.
As soon as my PC installed the preview version including Windows Subsystem for Linux, I tried installing Ruby, upon which Jekyll depends.
apt-get install ruby2.0
A very familiar sight: apt asked me to install Ruby and its dependencies. Just like a real, live Ubuntu machine.
From there, I installed Jekyll through Ruby, installed git and cloned my website repository. No different than if I was on my Linux box.
jekyll serve
And magically, I could access the locally served version of my website through my web browser.
There are a few pitfalls, though. It currently is in beta until the build is released to the general public. GUI applications won’t run, because X cannot be installed. Likewise, applications requiring very low-level hardware calls may not work. But for many use cases, what once was easier on Linux is now just as easy on Windows.