Saturday, April 02, 2016

Bash on Windows

Hell has truly frozen over. Or something like that. At //BUILD this week, Microsoft announced Bash on Windows. I was listening to the keynote over the Internet and watching Twitter. As I listened to the keynote, I kept asking ‘why?’  Jeffrey Snover tweeted, to the effect that I’d get it eventually. As usual he was right.

I get it, now.

I read a great blog post (http://www.hanselman.com/blog/DevelopersCanRunBashShellAndUsermodeUbuntuLinuxBinariesOnWindows10.aspx) and watched two videos today that helped. The first video is an overview to the feature, with Rich Turner and Russ Alexander (https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-ubuntu-on-windows/). It explains the feature well! The other one was a panel discussion from the BUild conference narrated by Scott. Get this at: https://channel9.msdn.com/Events/Build/2016/C906.  And here’s another good blog post from Canonical’s Dustin Kirkland: http://blog.dustinkirkland.com/2016/03/ubuntu-on-windows.html.

So why does this matter and what’s the big deal.

Let’s start with how the feature is architected. When you run Bash on Windows, AKA BOW, you are running a pure Linux (Ubuntu) userspace. It is bit for bit Ubuntu, with the Linux kernel replaced by a new Windows subsystem that implements the Linux system calls. It looks like, acts like, and to all intents is Linux. On Windows. I find the solution quite elegant.

So who would want it? Well – Microsoft via UserVoice, concluded there were a lot of  developers who were developing apps for Linux server, for example a Ruby on Rails based web site.  They use Emacs and a variety of tools to edit the source code, check it into a repository (Git), and push it up to the cloud (azure). They use other tools to do the building, unit testing, etc. The open source environment is rife with tools that a canny developer can leverage.

These Linux server devs (I hesitate to use the acronym LSDs) currently use Linux client systems. WIth WOW, they can now use ALL the tools they used to, from a command prompt they know, leveraging the Linux package community as they always have – but you are running all that on top of Windows.

That enables a couple of things. First, it will simplify the management of the developer workstation. It can now be Windows (with AD, GPOs, etc, etc), but with the power to run the developer’s normal workflow unencumbered by Windows. But at the same time, the dev can Alt-Tab to Outlook, the Edge browser, leverage Office and that huge library of windows applications. The best of two worlds.

Another interesting aspect – it turns the developer’s desktop into a Windows License. Linux at the from door, Windows by the back door. Or something like kthat

I like the concept. It’s certainly NOT for everyone – but I can see there there is a market.  I suspect that, cool as this is, there is a lot more to come here.

2 comments:

jas88 said...

An interesting move - looked at from that perspective, surely intended to head off the big advantage the Mac has had in the developer market thanks to OS X's Unix heritage? I know it's been remarked on a lot lately, that almost any web/net developer conference will be full of Macbook Pros rather than Windows machines, largely because of this very factor.

I remember liking the idea of the CoLinux project (which built a Linux kernel to run as a Windows "device driver") - this seems to achieve something similar, but with a much thinner translation layer than that. Definitely looking forward to trying this out myself!

Charlie Russel said...

I love it -- the return of the Interix subsystem! Well, OK, not quite. Now it's an Ubuntu subsystem, but all the technology has been there for years with the work they did to integrate Interix into Windows. The difference is using Ubuntu under the skin, not the Interix UNIX/POSIX flavour. I can't wait to play with it.