Microsoft recently kicked off its annual Build Developer Conference. It was no typical event. Microsoft pulled out all the stops, and demonstrated remarkable advances in artificial intelligence, augmented reality, and cemented the reputation of Windows 10 as a formidable gaming platform. But Microsoft also announced something else. Something that is getting a lot of people excited.
On stage in San Francisco, development director Kevin Gallo announced that the BASH shell would be coming to Windows 10. Well, kinda.
Straight Outta’ Ubuntu
To say that BASH is coming to Windows 10 is to massively understate the situation, because really, what Microsoft’s been working on is far more impressive than that. It’s essentially a Linux subsystem – not a virtual machine – based on Ubuntu 14:04 LTS, which grants access to the Ubuntu userspace.
Linux system calls (often called ‘syscalls’, essentially when a program requests something from the OS kernel) are translated in real-time to Windows system calls, using some custom software built by Microsoft. This distinction is explained better by Dustin Kirkland, who is one of the Canonical engineers who helped Microsoft port it.
This means that it’s not just BASH and the associated essential Linux utilities being ported. It’s almost everything.
— Richard Hay (@WinObs) March 30, 2016
Users will be able to use the standard Linux SSH utility, rather than using a third-party tool like PuTTY. They will be able to edit text with VIM from the command line, and manipulate text using Sed and Awk. Even better, they will be able to use apt-get to manage their packages, and to install tens of thousands of Ubuntu binaries.
According to Dustin Kirkland, most things work pretty well, with the exception of some applications that use a TTY – such as byobu, screen, and tmux. He assures us they’re getting there though, and given that Microsoft put this front-and-center at their Build 2016 keynote, you can be pretty confident that eventually it will be a finished, polished product.
What This Means for Joe User
I’m not going to lie. This announcement will appeal overwhelmingly to two groups of people: Linux enthusiasts and software developers. If you’re not one of them, you may be wondering what this means for you. But there is cause to be excited, even if you’re not an arch-geek.
Firstly, it presents a great way for people to dip their toe into the sometimes-murky waters of the Linux ecosystem, without having to actually install it. Absolute newbies will be able to learn the essentials of common Linux tools from the familiarity and relative safety of Windows 10.
Secondly, it’s also great for those who are learning to code for the first time. Many of the easiest languages to learn (and consequently, the most popular with beginners), are also the most irritating to install on Windows. Installing Python properly, for example, requires you add a variable to the Windows PATH. If you want to easily install Ruby and the assorted essential documentation and tools, you’ll have to use a third-party installer like RubyInstaller.
But now, would-be developers would merely need to type “bash” into their command line, and they’d be able to start hacking away at a Ruby or Python script, without having to worry about the vagaries of configuring these languages on Windows.
Plus, since the majority of beginner tutorials are built around Mac OS X and Linux, Windows users will be able to use them without any problem.
Linux on Windows: Why This Matters for Developers
Historically, Microsoft’s command-line (sorry, command prompt) tools haven’t measured up to those on UNIX based operating systems. The biggest reason for this is because Windows has always emphasized in solving tasks and problems through graphical interfaces and menus, not via the terminal. While this is great for users, it’s less great for developers, who over the past twenty years have increasingly depended on Linux-based servers, which are far more reliable and secure.
A consequence of this is that developers have increasingly drifted away from Windows. If you go to any developer conference or meetup, or visit the offices of any technology startup, you can almost guarantee that the majority of devices being used are Apple laptops, or PCs running Linux. They’re unlikely to switch back, either, as they’ve since learned how to use these operating systems, and built workflows based around them.
Yes, yes I am traveling with 2 MacBook Pros and a full DSLR camera bag #Build2016
— Matt Millican (@millicanmatt) March 29, 2016
One developer I worked with when I was a summer intern at ScraperWiki – a data science startup in Liverpool – had a tightly customized VIM editor, and a routine that centered around a handful of common (and some uncommon) Linux utilities. It’s hard to imagine him comfortably switching back to Windows.
Perhaps Ubuntu on Windows 10 will be enough to coax these developers back to the Microsoft fold, or at least stop the hemorrhaging of developers from the Windows platform.
It also goes a long way to repair Microsoft’s tarnished reputation, especially when it comes to the open source community. The early 2000s and late 1990s, Microsoft was overtly hostile to open source and Linux: then CEO Steve Ballmer described it as a “cancer”, and they tried to kill it (as well as some rival proprietary products) with the “embrace, extend, extinguish” strategy.
But since the arrival of Satya Nadella as CEO, they’ve made a concerted effort to work with the open source community and to rehabilitate their image in this respect. It seems to have worked.
How to Get BASH for Windows 10
At the time of writing, BASH has only been announced – you can’t actually get it, yet. Although it will be a part of the upcoming Windows 10 Anniversary Update, which is scheduled to land this summer. Given it’s an “anniversary update” and Microsoft launched Windows 10 on July 29, you should expect it by then.
If you can’t wait that long, you’ll be able to get your hands on it through the Windows 10 Insider Program.
Are you excited about the arrival of BASH on Windows 10? Will it be enough for you to switch from Linux? Let me know in the comments below.