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.
Microsoft deciding to support Linux software on Windows is a surprising move, and the obvious question is, why? Superficially, the answer is easy—developers like these tools, so supporting them makes developers happy—but the story runs a little deeper than that. Supporting Linux apps in Windows is a significant move for a company that has spent decades promoting its own APIs and application platform, and it’s unlikely that the company would make such a move just to provide a few creature comforts to developers. The need goes deeper than that.
Wind the clock back 15 years and Windows was the only serious platform for software developers. Linux was already an important consideration for servers, but on the desktop was even less of a concern than it is today, reserved only for the most hardcore fans. OS X was in its infancy, and only ran on weird, expensive, underpowered PowerPC hardware. This made Windows the development platform of choice by default. There simply wasn’t any good alternative.
This in turn had consequences for software, where solid Windows support could drive server-side usage. A prime example of this is the MySQL database server. While it is better today than it once was, MySQL has always been regarded as second-best when it comes to important considerations such as technical capabilities and data integrity, with PostgreSQL generally held to be the much better database. In spite of this, MySQL won considerable market- and mind-share because it was a much better development platform. It had an easy Windows installer, it had good Windows software for managing databases and writing queries, and it had good ODBC drivers. PostgreSQL’s developers, on the other hand, didn’t appear to prioritize any of these things, and while it wasn’t impossible to run the database on Windows, doing so meant forfeiting the creature comforts that MySQL offered.
It’s no great surprise, then, that MySQL proliferated in a way that PostgreSQL didn’t.
But things don’t work that way any more. Setting up a Ruby development environment on Windows is a wretched experience. Getting Ruby running well is awkward on any platform, but Windows is arguably the worst. The popular node.js environment was born on OS X and Linux, and for a long time could not be effectively run on Windows. Salvatore Sanfilippo, developer of top NoSQL data store redis, has refused to accept patches to make the software run on Windows, not out of any particular hostility towards Microsoft, but because he saw no need for it. He supported the idea of forks of the software that supported Windows, but nothing that would impede development of the core product.
Click here to read the rest.
SOURCE: Ars Technica
Leave a Reply
You must be logged in to post a comment.