With the goal of making more developers use Windows, and to help them move their workflows over to Windows, Microsoft has taken the step to enable Bash scripting natively in Windows 10. This will be a new subsystem, and not an emulation layer, with full access to native Windows functions such as the file system and APIs.

Microsoft partnered with Canonical to provide an Ubuntu based subsystem into Windows. In the keynote, Microsoft spoke about how they have had lots of feedback regarding their Hosted Web App bridge which lets developers take web apps and provide them through the Windows Store as pseudo-native apps. The Web Apps can have access to the Universal Windows Platform (UWP) APIs for things like Live Tiles and Cortana integration, but without a lot of the overhead of re-writing into a native app. But the feedback was that a lot of the development tools they use require Bash scripting making it difficult to do the development on Windows, hindering Web App adoption.

Adding the Ubuntu subsystem into Windows is an interesting solution to this problem. Linux does a lot of things much differently than Windows, including having a case sensitive file system, among other things, so certainly some work would have been done on the back end to enable this in Windows.

This, like many of Microsoft’s announcements over the last year or more, have been about making it easier for devs to work on Windows, and expanding the install base of targeted applications with bridges and Xamarin.

I hope to have some more info on the Bash announcement in the next couple of days.

Comments Locked

41 Comments

View All Comments

  • xthetenth - Wednesday, March 30, 2016 - link

    Yeah, I definitely can think of no situations where it'd be massively advantageous to be able to target win and nix in one shot with bash. I most certainly didn't spend over half my time writing an automated testing script porting it over to windows.

    I mean really you're asking why would you want to target a prevalent OS with a good tool? Why indeed.
  • stun - Wednesday, March 30, 2016 - link

    > feedback was that a lot of the development tools they use require Bash scripting making it difficult to do the development on Windows

    Outside of .NET dvelopment, lots of existing projects are easier to compile and get it running on Mac OS X and Linux.
    Windows feel like a sub-par development environment, and Microsoft notices that they will get left behind if they don't fix that.

    SSH and Bash shell are must-have tools to make Windows not longer a red-headed step-child.
    I am very glad Microsoft is making this happen. It shows they are opening their eyes and ears.
  • JoeyJoJo123 - Wednesday, March 30, 2016 - link

    Ever heard of PuTTY?
  • Duraz0rz - Wednesday, March 30, 2016 - link

    It's still something you need to download (and get approval to use in an enterprise environment) as opposed to having a native way to SSH into a remote computer.
  • bernstein - Wednesday, March 30, 2016 - link

    sure but i'll gladly replace that with bash+openssh
  • Gigaplex - Thursday, March 31, 2016 - link

    You can use PuTTY as an SSH client, but not as an SSH server. Microsoft is bringing a native SSH server to Windows.
  • twotwotwo - Wednesday, March 30, 2016 - link

    People use open-source packages to develop Web sites (and do plenty of other stuff) under OS X. I also use an Ubuntu chroot (crouton) on a Chromebook in dev mode, which this sounds weirdly similar to. Also using regular old Ubuntu on this desktop.

    I think users will just go to whatever setup gets them what they want--the tools they want for server-side development, the familiarity or hardware support or whatever they get from their client OS.

    To go one step further, one of the neat things about open source is that if someone is willing to do the work and comply with licenses, it can be ported to most any environment, no "strategy tax" or IP/contractual issues in the way (at least from the OSS side). That seems to have played a part in OSS reaching the position it has now. So I wouldn't dismiss unexpected uses of OSS like this, I'd say they're an example of what's neat about open source in the first place.
  • aryonoco - Wednesday, March 30, 2016 - link

    This is more than bash scripting, and the article is really incorrect to present it as such. This is a much bigger deal.

    Microsoft has implemented the whole Linux kernel API in the NT kernel. This allows the ability to run Linux binaries unmodified on Windows. Yes, binaries, unmodified, without the need to port or even to recompile.

    http://blog.dustinkirkland.com/2016/03/ubuntu-on-w...

    This is a colossal improvement over Cygwin and everything else that's been available for Windows. It's even an improvement over OS X, I don't have to do gymnastics to replace all the ancient BSD utilities that Apple ships with OS X with their GNU counterparts.

    And those of us who teach/train people in Python/Ruby/Go don't have to fret anymore when someone shows up with a Windows laptop.

    For me, the interesting question is how devices will be treated. Can I do dd if=/dev/zero of=/mnt/d for example?
  • lilkwarrior - Thursday, March 31, 2016 - link

    You had me until you said Go (Golang for the sake of simplicity); Go didn't have much problems with Windows being one of its selling points compared to the truly *abysmal* experience it is to try and use Ruby on Windows or pain to have many Python packages installed (let alone the Python 2 vs Python 3 split Python infamously has)

    Go's os package of course had specific public functions that weren't applicable or problematic to use until this news about Windows 10 upcoming update (or the one immediately after the BUILD conference to finally enable most developers to be productive with a WIndow's cmd.exe)
  • aryonoco - Thursday, March 31, 2016 - link

    Yes Go definitely has had much better Windows support than Ruby or Python, but it is just one of the many tools that has not been well suited to Windows. There are a lot of these technologies around, from Ruby and Python, to Git and many more.

    When I was starting in this industry, the environments that most people learned in were Visual Basic and Delphi, and their home was Windows. Now when I look at what kids are starting with, it's mostly web technologies, JavaScript, Ruby/Python/Go (and Java and Objective-C/Swift if they care about mobile) and their dev environments of choice are Linux or (mostly) OS X.

    Somewhere along the way, Microsoft lost the interest of a whole generation of developers.

    Now I can see that Microsoft is trying to win these people back, and frankly this is the best way they could have done it. Providing Linux ABI compatibility as a NT subsystem is way beyond anything I expected from Microsoft. It will instantly make Windows a proper tool worthy of consideration for developers like myself.

    And might I add, with proper package management available in the form of apt-get, Windows now offers a much better environment than even OS X, with its clunky and half-baked Homebrew and MacPorts.

Log in

Don't have an account? Sign up now