Bash on Windows is incredibly exciting – but we should be wary

Bash on Windows is incredibly exciting – but we should be wary
Credit: Microsoft

Yesterday at Microsoft’s yearly BUILD developer event in San Francisco, the company had a piece of news that left many wondering if April Fools had come early: Bash is coming to Windows 10.

Yes, hell has frozen over and Microsoft is getting in bed with Canonical to deliver ‘native’ Ubuntu packages that work directly on Windows. It’s not a virtual machine, emulation or any other kind of trickery – real Ubuntu code is running right on top of Windows.

Before you jump to conclusions, like many others did on Twitter, that this isn’t the entire toolchain, it really is. You can run apt-get on Windows now, along with grep, vi and awk – for developers, like me, that’s huge from a company that previously pretended open source essentially didn’t exist.

Bash on Windows has huge implications for developers. For years, Apple has lured developers – particularly those working on the Web – across to OS X for this very reason, a powerful, native Unix shell without any tinkering or emulation.

The reality is that for many projects, like Node.js, it was truly awful to develop on Windows and a pain to configure for years. Node only got fully-fledged Windows support in 2015, and even then it’s still a mess: this year-old thread on Github, titled “Windows users are not happy” details those pains.

One user wrote that Node on Windows was “a world of pain” and “this is hell” after being stuck installing it for hours on end. Bash coming to Windows, along with true Ubuntu support, means this is one of many problems that will be solved.

Under the hood, the technology is almost like a reverse WINE emulator: Microsoft is performing real-time translation of Linux syscalls into Windows syscalls. It’s impressive, and officially called the “Windows Subsystem for Linux.”

At its core, Bash support on Windows is both exciting and an incredible feat of engineering. As a front-end developer, I’d now consider buying a Windows machine to replace my Macbook, where I wouldn’t have in the past.

The reason you, as a developer should be wary, however, is all this has come before in a different way – over twenty years ago. When Microsoft wasn’t the leader in any given market, it used a tactic called “embrace, extend, extinguish” to own platforms where it was losing.

There are many examples of this happening in the past, such as when Microsoft was taken to court by the US government over an antitrust lawsuit for embarking “on a predatory and anticompetitive course of conduct designed to gain browser share.”

That suit alleged that Microsoft added ActiveX to Internet Explorer in order to break compatibility with Netscape Navigator, and co-erced Apple to drop support for the browser.

Microsoft successfully crushed Netscape as a result, with one internal memo from Kumar Mehta in 1998 saying that ““We set out on this mission 2 years ago to not let [N]etscape dictate standards and control the browser [APIs]. All evidence today says they don’t.”

A similar thing happened with MSN Messenger in 2001. Microsoft, which didn’t own the space at the time, coerced AOL to open up its messaging protocol to other services, proceeded to extend the protocol, then locked out AOL and others from the now patented protocol.

As Linux has hurtled to massive popularity for hosting the Web, with an estimated 68 percent of publicly facing sites being hosted on Linux based servers, Microsoft naturally has motivation and intent to claim some of that ground back as it pushes into the cloud in a big way.

Bringing native Linux support to Windows is one big way the company could do exactly that, as developers start to look toward writing code on Windows machines again because of the appeal of Bash – and maybe even end up writing in Microsoft’s own languages along the way.

I don’t personally believe Microsoft is trying to use these tactics again in this case, but I do think we have reason to be wary of the company’s sudden about-face after decades of these practices.

Perhaps a good start would be extending an olive branch and stopping its practice of making companies pay for using its Linux patents? Or the $6 billion in patent royalties it reportedly collects from Android, another open-source ecosystem?

Almost every large company is guilty of some form of ’embrace, extend and extinguish’ tactics, and I’m hopeful under Nadella the company is working toward the greater good, rather than later turning around and crushing them later.

If you’d have told me Linux would’ve worked perfectly within the desktop of Windows in 1998, I’d have laughed at you – but now it’s a reality and it makes developer’s lives easier.

Nadella sells Microsoft’s renewed interest in open-source with passion and enthusiasm that is easily believed. As developers we can all get excited about Bash and Ubuntu finding a home within Windows – but while we’re doing it, we mustn’t forget where we came from.

Microsoft is eager to prove it’s changed ways, and maybe it has, but some of us just aren’t ready to forget yet.

Read next: Microsoft Build 2016 liveblog – day 2

Here's some more distraction