I was quite excited when I first heard about this "Bash on Ubuntu on Windows" feature Microsoft announced at BUILD 2016. The first Windows Insider build was released just a couple days before I am writing this, and last night was the night the build installed on my Windows desktop at home. I, of course, dove right in to the feature flipper and enabled the Linux subsystem to play around. Here is how it went.


For want of a multiplexer

My first goal was to get one of my projects up-and-running. This involved setting up my dotfiles and compiling Ruby, and depending on the project maybe even getting PostgreSQL set up. All of those tasks felt like common but fairly advanced tasks, perfect to put the new feature through its paces.

The first thing I tried to get running was good ol' tmux. It pulled in through apt just as one would expect, but running the command produced a non-success exit status and no STDOUT, nor any logs. strace (which is installed by default; kudos for that) revealed it was failing with an ENOENT on the tmux server socket... Strange.

tmux nope

In a stunning display of laziness, I gave up there and tried my luck with GNU Screen. Unfortunately, no such luck was present and it also failed to start, but with a nice error this time.

screen even more nope

So it looks like getting a multiplexer will take a bit more research and debugging. Despite the early failure, I continued.

Ruby

I use chruby and ruby-install to manage my Rubies, and both worked just fine.

Compiling Ruby was the first real task I completed, and it's not a particularly light task. It was noticably slow, and took a considerable amount of time on my otherwise speedy desktop, but did eventually complete. Speed is something I was expecting to sacrifice and it is a bit disappointing currently; I am hoping speed is something they improve before GA.

ZSH

I am not a Bash user. So of course once it came to installing my dotfiles first up was getting my shell.

ZSH does not work. At all.

yeah no zsh

I was able to switch the default user's shell to ZSH, but it delays the startup and eventually falls back to Bash once ZSH crashes. Running ZSH manually reveals a slew of interesting errors and a broken rendering of my prompt. Most commands end with an error from ZSH.

This is the first big dealbreaker for me. This is unusably broken and I am not sure how to go about fixing or even debugging it. I feel like limiting myself to Bash is simply not worth it, and if official support for alternate shells never arrives this feature is dead to me.

Even still, I continue...


At least I can edit files maybe

Disheartened by not getting my shell running, I attempted to run vim to see if I could write this blog post through the emulation, which might have been a nice way to test it. My dotfiles had installed my vimrc so I should just be able to…

trying to edit some goddamn files

Sigh. Looks like no 256-color support (or even like 8-color support)… I could go full neckbeard and renounce syntax highlighting, but honestly that's probably not going to happen.


Trying to run something

Losing faith, but hopeful still, I returned to Bash and cloned a simple Middleman static site to see if I could get it to run. "Maybe if I can at least get things running, then I can just switch to a GUI editor," I thought to myself.

And my God, it did not want to run at all.

Since it is running as "root", bundler has some complaints but continues anyway. However when it comes to building native extensions, everything just dies. "Permission denied" feels like something is breaking down between the filesystems -- the emulation layer seems to mark every file as executable, so I imagine when it copies the native extensions to their final place it also attempts to modify their exec bit or something and Windows throws down the banhammer.

This is where I gave up.


With my hopes and dreams crushed, I return to my Fedora-on-the-desktop laptop as my work machine and leave Windows Linux emulation alone for the time being, at least when it comes to getting work done. I will continue to play with it, see what I can fix or what will work. I will also keep up with updates and see if anything gets faster or less broken as time goes on and more people like me have time to run various environments and software on top of it.

I am forgiving because this is still very beta software that exists only in the fastest and most unstable update channel for Windows. The feature is a bold undertaking and I think the progress Microsoft has made thus far is already impressive. However, it is clear that they have only the bare basics working, and anything straying from that just breaks in a horrific way.

Despite this sour first experience, I am intrigued to see what further updates bring and will be continuing to poke at it and see what I can do.