Ubuntu on Windows

Windows 10 Anniversary Update came out last week. I haven’t heard very many folks talking about  one of the most interesting features I’ve seen from the New Microsoft: Linux.

I think part of the reason people aren’t excited is because they don’t understand what this is:

  • It’s not a virtual machine
  • It’s not a container like Docker
  • It’s not Cygwin – you can run pre-compiled ELF binaries

This is basically WINE in reverse – it translates Linux system calls to Windows system calls at runtime. That means it can run pretty much anything that Linux can. To take it for a test drive, I installed nvm and node, then Calypso and then ran make run. It worked! (I had to sudo apt-get install gcc g++ make first, but that’s just more proof that this is Ubuntu)

I love developing on Unix-like systems, and OS X macOS has been a great balance of a Unix system with good consumer support.  However I’m concerned that so much of Apple is focused on iDevices that they will start to care less and less about computer. As of August 23, it’s been 462 days since they have updated the MacBook Pro, and they’ve discontinued the Thunderbolt display.

Meanwhile, Microsoft is open-sourcing things left and right. And now actually running Linux on Windows, something that 10 years ago would have sounded ridiculous. It’s not perfect – the terminal window still sucks compared to iTerm or even Terminal.app – but now you can use a real OpenSSH instead of PuTTY. Maybe soon I can live the dream of the same machine for development and gaming.

The funny thing is that IBM tried this with Windows 20 years ago. IBM had OS/2, which had a Windows compatibility layer so that OS/2 could run Windows 3.1 apps. This backfired for IBM – as a dev if I have to choose between writing an app for OS/2 or Windows, why not write for Windows since it will run on both? A comment on Hacker News claims that the Linux subsystem was originally developed for Windows phones to run Android apps. Maybe Microsoft chose not to go down that path for fear of the same fate as OS/2 Warp?

I strongly recommend anyone who likes Linux command lines to give it a try to see what works and what doesn’t (I had to manually install the update first). There are a lot of shortcomings but if it’s supported this could lead to more devs switching back to Windows.