Perhaps the biggest surprise to come from Microsoft's Build developer conference last week was the Windows Subsystem for Linux (WSL).
The system will ship as part of this summer's Anniversary Update for Windows 10. WSL has two parts; there's the core subsystem, which is already included in Insider Preview builds of the operating system, and then a package of software that Canonical will provide. The core subsystem is what provides the Linux API on Windows, including the ability to natively load Linux executables and libraries. Canonical will provide bash
and all the other command-line tools that are expected in a Linux environment.
Microsoft is positioning WSL strictly as a tool for developers, with a particular view to supporting Web developers and the open source software stacks that they depend on. Many developers are very familiar with the bash
shell, with building software using make
and gcc
, and editing text in vi
or emacs
. WSL will give these developers versions of these tools that are equal in just about every regard to the ones you get on Linux, because they'll be the ones you get on Linux running unmodified on Windows.
With that developer focus, Microsoft isn't supporting WSL as a deployment platform. It might be possible to run, for example, the Apache Web server under WSL, and it might even be useful to do so for development, but the intent is not that applications would ever be run in production with this configuration.
Making lemonade
WSL was derived from Project Astoria, the effort to enable Android apps to run on Windows 10 Mobile; we'd expect that, initially at least, its support is strongest for those APIs that Android needed and that it will be weaker in other areas. This means that while application support should be extensive, Windows won't be able to run every Linux program under the sun. There's no Linux kernel here, so this won't bring support for filesystems such as ZFS or btrfs to Windows. Applications demanding low-level access to hardware devices, such as Wireshark, seem similarly unlikely to run and will continue to need Windows ports. WSL also doesn't include X Windows or any other graphical subsystem; it's strictly for command-line applications only.