Why Microsoft made Windows 10 run Linux software
Microsoft's decision to add a subsystem for Linux in Windows 10 surprised many people. It seemed out of character for the company, and some folks were left scratching their heads.
A writer at Ars Technica explored the issue and came up with some reasons why Microsoft has embraced Linux in Windows 10.
Peter Bright reports for Ars Technica:
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.
Are Technica readers had a few thoughts of their own to share about Microsoft and Linux:
Darkness1231: "An interesting take on WSL. I don't know anyone that prefers W* to develop on. I used to know some that had to develop on it for corporate mandated reasons. Also Ballmer had pushed the GPL cancer lie to many in the executive suites so using Linux/Unix was only acceptable when they were the underpinning of the business unit. One thing that isn't understood much or even addressed in this article is how completely functional the multi-machine development process is in the Unix/Linux environment. Working with multiple systems and distributed work is not effortless but it is definitely much easier than W* will ever be.
As far as OS X goes, it is the system of choice for iOS. The comparisons to VS is quite dramatic and not in a good way. MSFT wants that market but how much of it is trying to reach more developers for their products by enabling a write once distribute anywhere model? I would suspect the only reason is to try to expand the number of apps for their ecosystem, not replacing the development model for the dominant platform.
This is all interesting yet it does make me wonder how many developers will enjoy having their development system reporting everything they do, every application they use and every other thing that MSFT wants to know about sent home to Redmond? That alone would keep me from using WSL for development just as it is keeping me from running W10. "
Stormcrash: "I hope they add an X server to WSL. One of the big draws of OSX for me (and the reason I use a mac at work) is the ability to ssh and X forward applications from remote linux systems and work on my normal desktop instead of VNC or NoMachine."
Neonspark: "…besides web developers which are a minority source of revenue: azure, azure, azure. Making BILLIONS for microsoft linux. Yes kids. MS has monetized linux big time and will continue to do so for the foreseeable future.
So by making windows more friendly to linux devs, it also introduces them to the MS ecosystem in azure via tools like visual studio, sql server (which is on its way to linux), etc.
So the plan is to assimilate linux (borg pun) into their azure cloud and make linux based enterprises pay for the azure compute time they use, instead of having them pay for windows which was a far less profitable model.
So overall windows is just the gateway drug into azure, and based on the response, the linux crowd is sniffing it hard! "
Shahms: "Peter's sniping aside, this is great news for Linux developers. Anything that lowers the bar for contributing to a software project is welcome, and Linux build tools have a habit of growing a lot of bash scripts. A lot rests on the level of compatibility, but assuming it's sufficient this could easily leave OS X as the odd man out. Apple's continued insistence on genuine hardware and no virtualization makes it difficult to ensure incoming patches don't break in that platform. I'll enthusiastically drop OS X support if it becomes feasible and this gets me one step closer. "
JanneM: "In my field, HPC and simulation modelling, Linux is where it's at. All clusters and supercomputers effectively run Linux and nothing else, and so most tools and software runs best or only on Linux. OSX support tends to be OK, though you need to jump through hoops with Homebrew and Macports to get things running. Windows support is patchy, and frequently nonexistent. The recommendation for Windows is generally to install Ubuntu in a VM.
If this announcement eventually includes proper support for numerical libraries, gcc and the Intel compiler, MPI and OMP, then that means we can completely ignore Windows as a platform and focus solely on Linux as a target. No more arguments with Windows users about adding patches and support for their platform; you can just direct them to use the MS-supplied compatibility layer instead.
Edit: I wonder if that situation is not part of the reason for this development. It's really common for in my field to see Windows desktops and laptops on people's desk, all with a running copy of Ubuntu in a VM on their desktop. This may be a way to entice people to tie their Linux work into the Windows environment to some degree, rather than just use the Windows OS as a hardware compatibility layer for Linux. "
Drspock11: "This is the 2nd ridiculous article I've read that more or less claims Windows has long been a black sheep for developers but maybe this announcement will start to change things. This is totally absurd.
The vast majority of the world's PCs run Windows; the vast majority of PC development takes place on Windows and has for decades. You'd be hard pressed to find a many major corporations outside of Silicon Valley or web startups that doesn't use Windows for the majority of its software (thus requiring Windows for software development).
Of course, mobile development platforms vary more; but most devs are not primarily mobile developers.
Visual Studio, despite its many flaws, is by far the most complete IDE around. I remember that after leaving college and using Visual Studio for the first time (as opposed to Eclipse or XCode), it was quite an eye-opening experience.
That's not to say that other environments aren't usable and don't have great things being written in them. They certainly do. But for the most part you'd be hard pressed to be find another ecosystem that can make everyone from the fresh college grad to the industry veteran as productive in as short a timeframe as is possible with Microsoft's ecosystem.
All that being said; I am happy Bash is coming to Windows; as the shell has been one of the few long-underserved part of the Windows experience. (Although the reason for this is likely because Microsoft has always focused on non-command line based ways of accomplishing tasks) "
Alhazred: "…AWS is eating Azure's lunch and running windows there is just a silly idea that jacks your EC2 costs by 100% for no benefit.
I'd note that in this vein there are a number of things that ‘Linuxizing' Win10 might do for you in this environment. It might make windows a LOT more amenable to integration with various tools on AWS, including BeanStalk, Cloudfront, etc, which are all critical to any realistic deployment there. Beyond that things like Chef, Puppet, and Ansible, just to name a few of the big devops tools, will be much happier on such a system (though the registry is always a challenge!).
So, my guess is MS is mostly trying to keep at least a toehold on the premiere cloud platform, one that has already seemingly won the race to establish the defacto operating standard for this phase of the evolution of commodity computing. Porting MS SQL Server seems like it fits that pattern too. You may not want to run it on expensive windows instances, but it is considerably more appealing when packed onto a $0.47/hr m3.medium Linux instance. "
Alephnought: "Bashing around in Windows might be fun but I'll stick with a Linux VM or a real Linux install for web development. Even Powershell feels like a bad copy of a Unix shell, hacking together arcane commands with that awful DOS command prompt.
My portable dev environment of choice is a Macbook with a bunch of Linux VMs - stuff just works, especially the hardware. It's also easier to roll back changes on a VM. I've used Windows laptops and I hated them all, except for the gorgeous ThinkPad X1 that costs even more than a typical Macbook Air. "
Erikengh: "While this is definitely a nice development, there are still fundamental problems with respect to using Windows as a Unix system. Both Linux and OS X expose a lot of the OS through the filesystem in plain text looking files. The Unix way of doing things depends on this. Secondly Unix style development relies heavily on forking processes which give poor performance on Windows, ref the problems with using git on Windows.
For me personally my interests and expertise has developed to far away from Windows, which was my original development platform. Visual Studio had a nice debugger, but other than that it just seems like a messy IDE with a non intuitive GUI. I know it is popular to hate xCode, but its problems has mainly been stability and poor refactoring, completion tools and debugger. But those things have come a long way with recent versions and xCode simply has a well thought out GUI. And for those who don't like it there is AppCode which is also quite nice.
The IDE is of course just a small part of the equation for software development. I regularly use TextMate, fish shell, homebrew, julia, Go, Kaleidoscope, Tower, Dash, Synalize It!, Pixen, Affinity Designer, Charles Web Proxy, OmniGraffle, ack etc which either don't exist on Windows or are second class.
For me the languages of most interest are julia, go, rust and swift of which Windows can only offer a second class environment for."