Windows Subsystem for Linux is Cool. No really, it is.
This is part of a series of posts capturing the highlights from my experience at the Microsoft Edge Web Summit 2017
With the Fall Creators Update for Windows 10, you can go to the Windows Store and install Linux.
Yeah, that's a thing now and it's pretty cool.
What is the Windows Subsystem for Linux (WSL)?
It's a new Windows feature that allows Linux distributions like Ubuntu and OpenSUSE to run inside of Windows. Essentially, this let's you run Linux-based command line applications against your files stored in Windows.
Why is that cool?
It's cool because a lot of the web runs on Linux, but many of us develop on Windows because the business runs on the Windows platform. This means that the dev tools you have installed to run your build and test your application are the Windows versions.
It might not seem like a big deal, but it's definitely a discrepancy. How are you expected to catch Linux issues before you deploy if you're running Windows? The WSL, that's how.
Isn't this just CygWin?
No, it's different.
According to the CygWin homepage
- a large collection of GNU and Open Source tools which provide functionality similar to a Linux distribution on Windows.
- a DLL (cygwin1.dll) which provides substantial POSIX API functionality.
WSL, is a layer inside of Windows that allows actual Linux distributions to run against. Microsoft is providing the foundation for Linux distributions to build upon, and keeping their hands out of the tooling itself.
When you're using CygWin, you're not using a Linux distribution. You're using CygWin. With WSL, you're not using any Linux distributions unless you install them on top of the WSL. Once you do, you're using the tooling provided and build for that Linux distribution.
Isn't this just Bash for Windows 10?
No, it's also different.
Although I won't get into the weeds with it, Bash for Windows 10 was something of a precursor to the Ubuntu distribution that is in the Windows Store. Think of it as an Ubuntu for Windows preview.
Now, we're not limited to just Bash on Ubuntu. We can install OpenSUSE and run bash on that, and eventually Fedora, and probably other flavours of Linux as time goes on. So you can run two different or three different versions of Linux against the Windows filesystem at the same time, without needing a bunch of VMs running.
Why don't I just run Linux?
You totally can, this doesn't change that.
This is a dev tool, first and foremost. It's meant to (IMHO) provide developers a easier way to run Linux tools on Windows, with the resource boundaries and extra resource consumption of a virutal machine.
For example, if you're running Apache on your Linux-based web server, you no longer have to run Windows-based Apache. Rather, you can install the Linux version of Apache on Ubunut or whatever, adn directly against your Windows filesystem. No VM to prep, or system boundaries to cross. Just install and run it.
How do I start?
You can start by installing the WSL on your Windows 10 machine.
The Windows Store animation I showed at the beginning of this post is using an Insiders Build of Fall Creators update for Windows 10. You can join the insiders program yourself learn about that here.
Until the Fall Creators update, you can still start tinkering with Bash on Ubuntu for Windows 10 by following the install instructions provided earlier.
They are finally fixing the console window in Windows, so that's a thing too. Read about it on the team's blog.