Interesting announcement from Build: Developers can run Bash Shell and user-mode Ubuntu Linux binaries on Windows 10 So, what’s that all about? Things seem very unclear to me at the moment, but I have not had the time to read loads of posts that spring up here and there, or to determine whether some of them are less secretive than Scott’s post I linked to above. The promises are altogether a bit strange and conflicting. For instance, Scott says

This isn’t Bash or Ubuntu running in a VM. This is a real native Bash Linux binary running on Windows itself.

So it’s a bash.exe somehow built against Windows libraries? I think that has been around for a long time - I used Cygwin, but I think there were more “native” builds around as well. However, Scott also says

This is an genuine Ubuntu image on top of Windows with all the Linux tools I use like awk, sed, grep, vi, etc.

An image, eh? So how does that image do anything without some kind of VM container/sandbox? Logically I think this is impossible. So there’s likely some kind of VM in the picture. Not a problem, but in order to judge how useful this may be, my main questions are about integration. That has always been the main disadvantage with Cygwin, that integration wasn’t always optimal. It was actually pretty good, so I’m not sure what this new approach gains in that regard - but of course having a full Linux system at my disposal with standard packages and everything is a cool idea.

Back to integration though - of course I’ll want to work seamlessly with the files on the Windows system. I certainly hope they make this possible, but there’s no mention at all about this. I’m sure some people will want to take integration way further, so this is the most important topic that needs explanations and a roadmap to keep up with promises. Now, the title of this post is obviously meant as a bit of a joke. However, I have to admit I’m not altogether convinced that this is a great thing. Sure it’s cool to see Microsoft do something to underline their new openness and to deliver additional value in Windows to developers. But there would be other ways of doing that. I have built countless Unix tools from scratch, many of them using the brilliant configure scripts and variations of them. Many of these tools even have build options for Windows, although these are sometimes flagged as being a bit outdated. If Microsoft was really serious about opening up, they could act on these points:

  • Accept that the Windows command line environment isn’t as powerful as some people would like it to be, and that Powershell isn’t everybody’s cup of tea (and in my eyes, has always been more of an admin tool than a really useful general purpose command line environment in the Unix tradition). I’m mentioning this purely because it’s my experience that common demands made by Unix-aficionados are usually met with an understanding but ever so slightly condescending attitude.
  • Help move Windows and Unix tools closer together. Remember that NT 4 promised to be POSIX compliant. Put developers on Open Source projects to achieve Windows compatibility, and do what’s necessary in Windows to embrace these tools.
  • Provide a repository of packages built for Windows. Why do I have to run any kind of non-native environment to use apt-get?

Note that I’m not claiming all this is necessary at all. To the degree I’ve used Unix-style tools on Windows in the past, I’ve personally been quite happy with everything. But this announcement seems to point out that Microsoft wants to take things further - only where they want to take it isn’t very clear. At this point it sounds to me like this is a VM with some integration features. Nothing inherently wrong with that. But why? And why this approach?