Howdy, Ubuntu on Windows! An Intro From Canonical’s Dustin Kirkland


Hi there!  My name is Dustin Kirkland, a Linux user for nearly 20 years, and an open source developer for almost as long.  I worked on Linux at IBM for most of a decade, on site at Red Hat for a bit, and now at Canonical for nearly another decade.  I started at Canonical as an engineer on the Ubuntu Server team and eventually evolved into the product manager responsible for Ubuntu as a server and cloud platform.  I’ve authored many open source utilities used by millions of Ubuntu users every day.  Open source software is my passion, my heart, and my soul.

I was working in Cape Town, South Africa when I received a strange call from a friend and colleague at Microsoft in January of 2016.  The call was decorated with subtlety as he danced around the technology underpinning what you and I today know as “Ubuntu on Windows,” but without any detail.  There was plenty of confusion.  Confusion around exactly what we were talking about.  Confusion about how this could even work.  Confusion about how I should feel about this.

But that confusion quickly disappeared a few days later as I saw the demo, for real.  I’ll never forget that moment.  I was in the Star Alliance lounge, in Heathrow airport, dialed into a Skype conference from my iPad (because Skype for Business doesn’t work on Linux), watching and listening as Microsoft kernel engineers demonstrated a Bash shell in an Ubuntu environment — natively compiled 64-bit ELF binaries — running natively on a Windows system.  What I saw was nothing shy of amazing.

Critically, this was more than just a science project.  Microsoft was genuinely interested in working with Canonical to deliver the full Ubuntu shell experience to Windows 10 users!  

Our friends at Microsoft actually call the entirety of the Ubuntu on Windows experience, “bash”.  Bash is how execs at Microsoft think of the command line Linux world, it seems.  It’s just a bash shell.  The Linux geeks among us find that pretty hilarious, because Bash is a scripting language, and a handful of native, built in commands.  But what the team here at Microsoft is actually sitting on, is far more than just Bash.  It’s the very Stargate to the entire Ubuntu world.  Apt install anything you can imagine:  compilers, libraries, debuggers, editors, games, other shells besides bash.  Perhaps you’ll find this as entertaining, when your Windows-running friends try Ubuntu on Windows for the first time, and they call it “bash.” 🙂

Anyway, even to this day, sometimes I have to pinch myself, and wonder again if I’m dreaming….

I’ve spent a the majority of the last two decades wondering “when” Microsoft would drop the hammer on the Linux party in the form of some ugly litigation.  I’ve billed thousands of hours of my time reviewing patents and intellectual property claims — the details of which I cannot speak about to this day — in preparation for some impending open source Armageddon.

And yet here I was, drafting a term sheet between Microsoft and Canonical, to put Ubuntu in the Windows Store and to make Ubuntu available on Windows 10 desktops everytime and anytime a Windows user typed the word “bash” from the Windows Start menu.  Holy smokes.  What unbelievable times in which we live!

Looking Ahead

So here we are today.  Ubuntu on Windows is real technology, that any Windows 10 user can trial, after jumping through a few minor hoops.  Hoops, that I’m told, Microsoft is working on removing.  The next article in this series walks you through the exact steps you’ll need to take to run Ubuntu on Windows.  Note that this is going to get much, much easier once this technology emerges from beta and into general availability.

Personally, I’m excited about the opportunities that Ubuntu on Windows presents, to bring the world of open source software and our way of development to more people than ever before.  That’s why this is good for every reader out there.  We know and love our open source editors (vim and emacs), our tool chains (make, gcc, glibc), our web servers (Apache and Nginx), our scripting languages (Bash, Python, Perl, Ruby, PHP), our shells (bash, zsh, csh, fish).  And keeping free software all to ourselves has never been our plan.  So it’s really genuinely amazing to think about how many more people in this world will now be exposed to our open source way of life.

Hopefully, some of those new users will find their way to the third article in this series, as I’ll look at a dozen or so of the first shell commands every user should learn.

Developers should really enjoy the fourth and fifth articles in the series, where I’ll show how to write, compile, and execute a simple program in at least 15 different languages, in the Ubuntu on Windows system.  Many of these languages have no native Windows port, so effectively, this is the first time those languages are available natively in a Windows environment!

Finally, I’ll close out the series with the sixth article where we’ll run a few performance benchmarks, and check how fast and usable the Ubuntu on Windows environment actually is.

I hope you enjoy reading these articles as much as I’ve enjoyed writing them!



Learn more about Running Linux Workloads on Microsoft Azure in this on-demand webinar with guest speaker Ian Philpot of Microsoft. Watch Now >>