
Ubuntu on Windows - bpierre
http://blog.dustinkirkland.com/2016/03/ubuntu-on-windows.html?m=1
======
takeda
Surprised I don't see anyone else mentioning this.

This looks to me like typical Microsoft strategy that they utilized a lot 25
years ago.

1\. when not leader in given market, make your product fully compatible with
competitor

2\. start gaining momentum (e.g. why should I use Linux, when on Windows I can
run both Linux and Windows applications)

3\. once becoming leader break up compatibility

4\. rinse and repeat

Happened with MS-DOS, Word, Excel, Internet Explorer, and others.

~~~
jupiter2
Thank you for mentioning this! Really bothered by all the positive comments,
especially coming from savvy HN users.

Gave this a long look and my main beef is that I couldn't possibly do anything
on a Windows Machine in its' current state. Linux isn't just about running
apps - there's a philosophy behind the system. Users first!

As long as Microsoft continues to disrespect the rights of users in regard to
privacy, data-collection, data-sharing with unnamed sources, tracking,
uncontrollable OS operations (updates, etc) - I will never go near it.

I find it especially offensive that ex-open source and ex-Linux users (working
for Microsoft) have the audacity to come on here and try to sell this as a
'Linux on Windows' system when most of what makes Linux special (respect for
the user) has been stripped away.

It's like giving a man who is dying of thirst sea water.

Most comments here appear to be positive and that's fine... whatever. To
anyone reading this... please don't sell your souls and the future of software
technology for ease of use and abusive business practices. /rant

~~~
city41
I think a key point that is being missed here is most of the people excited
about this probably run OSX, not Linux. OSX has long been the "'Linux' for
people who don't really want to run Linux" (not really meant as an insult, I'm
typing this from OSX right now).

Apple is just as proprietary, commercial and anti-competitive as Microsoft
here.

FWIW, this excites me because it potentially means I can go from two machines
to one, and always have IE/Edge at my fingertips. It will greatly improve my
dev workflow if it pans out like people are hoping it does.

~~~
disagree1_
> Apple is just as proprietary, commercial and anti-competitive as Microsoft
> here.

I respectfully disagree. The OSX kernel XNU is open source, as are a ton of
its components. That's huge in a _lot_ of situations. Some things - not a lot,
granted, but some, like FreeBSD's C++ stack and compiler - are even upstreamed
back to mainstream open source projects by Apple employees.

~~~
akerro
>That's huge in a lot of situations. Some things - not a lot, granted, but
some, like FreeBSD's C++ stack and compiler - are even upstreamed back to
mainstream open source projects by Apple employees.

^ Citation need.

~~~
creshal
Clang/LLVM?

~~~
cyphar
The joke (I think) being that Apple doesn't upstream a lot of code.

------
bcantrill
This is great to see, as it's very similar to the approach that we took with
LX-branded zones on SmartOS[1][2]. I commented at some length on the other
thread on this on HN[3], but I have a bunch of questions about apps that we
know to be thorny: Go, strace, tcpdump, systemd, etc. As we learned, this
approach is entirely possible -- but there are many, many details to be nailed
before you get to the point that you can run production applications on it. So
while the journey across the uncanny valley of Linux is long and arduous, we
know from our experience that it can be done. Very much hoping that Microsoft
gets to the other side -- and that they open source it all so we can all learn
from one another!

[1] [http://www.slideshare.net/bcantrill/illumos-
lx](http://www.slideshare.net/bcantrill/illumos-lx)

[2] [http://us-
east.manta.joyent.com/patrick.mooney/public/talks/...](http://us-
east.manta.joyent.com/patrick.mooney/public/talks/surge2015-lx.pdf)

[3]
[https://news.ycombinator.com/item?id=11392119](https://news.ycombinator.com/item?id=11392119)

~~~
crudbug
I think M$ is targeting more developers with *NIX background on the desktop
side rather than Linux apps on server. So a bash support with uniform CLI is
the end-game.

~~~
talawahdotnet
Yea, I think they are going after developers who use OS X because it is UNIXy.
Smart move given how en vogue Apple laptops have become for developers these
days.

~~~
riotdash
Let's be honest here. Does this change make some developers actually even
consider to change their OS X/Linux Desktops to Windows? Yeah it is really
cool thing that we can finally use windows cmd like the terminal on unix
systems however:

\- What about lack of all the Linux/OS X GUI software?

\- What about lack of all the UNIX OS features?

\- What about all those billions and billions of Windows malware, viruses,
adware etc.

\- What about all the spying and restrictions that Microsoft has integrated
into the Windows? (e.g. cannot block Microsoft spy server in the hosts-file,
forced updates etc.)

\- What about the fact that OS X and Linux have always been at least decent
from developers point of view but Windows has always had problems and then
things like Vista and Win8 happen.

\- What about the advertisements served to you in the login screen?

\- What about all the future shit MS will throw at you?

\- Other stuff can't remember now

If and IF this will actually work out well, I would say this finally makes
Windows usable for software development however I don't see any reason why
anyone would change from UNIX based system to Windows unless they plan to make
even bigger changes in the future...( like rewriting whole Windows to be UNIX
based for example. :) )

~~~
pookeh
While I prefer to develop today on OS X...your post is nothing but FUD.

> What about lack of all the Linux/OS X GUI software?

Windows prolly has more GUI applications than both those OSes combined. That's
not necessarily a good thing but it's not bad either. It just means there is a
Win substitute for everything.

> What about lack of all the UNIX OS features?

Same answer as above.

> What about all those billions and billions of Windows malware, viruses,
> adware etc.

I download a lot of crap on my home Win computer and haven't had a virus once
in the past 6 or 7 years. There are likely more Android viruses active now
than Windows.

> What about all the spying and restrictions that Microsoft has integrated
> into the Windows?

If you don't give permission the action is not taken. Granted I am currently
getting spammed to update my home computer from win 7 to 10 but it hasn't
force installed on me. Likewise for automatic updates.

> What about the fact that OS X and Linux have always been at least decent
> from developers point of view but Windows has always had problems and then
> things like Vista and Win8 happen.

Which is what this new initiative is trying to fix.

Don't get me wrong. I love my osx for dev and my *nix boxes for servers. But
if I can get one machine/OS for desktop development of nix and windows without
having to run silly emulators or switch between VMs then I'm sold.

~~~
justin66
> Windows prolly has more GUI applications than both those OSes combined.

Some perspective is needed here. Windows has more GUI applications than both
those OSes combined _and multiplied by some large number._ A windows PC can
run every Windows application made in the last twenty years, with some
exceptions, and it's an infinitely larger market for commercial software.

------
captainmuon
A few random thoughts:

\- Wow, hell is really freezing over!

\- The hardest part of running bash and other posix things under windows is
filesystem access. Windows uses drive letters and backslashes, unix has a root
filesystem with forward slashes. It seems they are taking the same route as
cygwin by "mounting" windows drives in /mnt/c (or /cygdrive/c).

\- If you just wanted bash and some posix tools, the harder but nicer way
would be to patch them to understand windows paths. It is not clear to me that
it is even possible, for example many tools assume a path that does not start
with a slash is a relative path - while "C:\" is absolute. You would also want
to make more windows apps understand forward slashes like "C:/Windows". To
make things even more complicated, there are NT native paths
"\Device\HarddiskVolume4\Users\Bill", UNC paths "\\\Server\share", and the
crazy syntax "\\\?\C:\MyReallyLongPath\File.txt".

\- I am really surprised this works in an appx container. From my little
dabbling with modern apps in Visual Studio, I've found that they are
incredibly sandboxed - no filesystem access unless you go through a file
picker, no network connections to localhost (!?), no control of top-level
windows, no loading of external DLLs. You can get around most restrictions for
sideloaded apps, but not for windows store apps. That they can now package
such a complex application as a modern app (with maybe only the linux
subsystem DLLs delivered externally) means that they are slowly moving the
modern/universal apps and traditional Win32 apps together with regards to
their powers.

\- Running a Linux kernel in windows, and then ELF executables on top (without
virtualization) is nothing new, see CoLinux or andLinux. If I understand
correctly, this new work uses a new Linux NT subsystem. It remains to be seen
if this is better (more performant) or worse (if the Linux kernel is just
another process, and it crashes, it doesn't take down the system).

\- If they actually wrote a NT subsystem for Linux, this opens a whole can of
GPL licensing worms, as you'll need to include internal NT headers. However,
they say it is closed source, so I wonder how they did it.

\- This really stands and falls with how well it is integrated in the rest of
the system. I want to install tools in "Ubuntu" via apt and use them from
cmd.exe, and vice versa. And long term, a X11/Wayland bridge would be nice
too.

~~~
icefox
Some long term thoughts:

1) Linux has won the server (web) market. Developers would like to use a Unix
box to work on their server code so they typically move to OS X. This could
prevent that switch because they can still use Windows to developer their
Linux server software.

2) Many projects start out as Linux and stay Linux and are only ported after
much time and effort to Windows. Enterprises when faced with a tool that they
want to use will also look to switch off Windows. Now rather than the cost of
switching they only have to pay to upgrade their windows boxes to use the
tool.

3) There is now a major incentive for developers to only build Linux binaries
because it will work more places. This might cause a faster drain of
developers as they eventually remove all windows specific code and can more
easily migrate elsewhere. This feels eerily similar to the OS2 story and no
doubt in the next week I expect to see more than a few articles discussing
this very thing.

4) It will be much easier for Microsoft to bring much loved Linux tools to
Windows so you can expect to see a more rapid increase of tools announced that
now work for Windows.

5) Games: What about the graphical layer? Can I write the majority of my game
as a Linux binary and only have the rendering bit left over to separately
implement for Linux/Windows? Will this spur an increase of cross platform
games?

~~~
sbarre
Your first point describes me exactly (and many other developers I know). I
grew up a Windows user, and switched to OS X because of the unix-like command
line environment that more closely matched the servers I was working with in
my job environments.

I would most likely switch back to Windows as my primary/only machine (because
I also like to play video games sometimes) if I had the same kind of unix-like
command line environment that I get in OS X.

Right now I basically need 2 computers at home to meet all my needs, but this
would allow me to reduce it to one, so I could get a much better one (instead
of the 2 mid-range ones I have now).

~~~
13of40
> I grew up a Windows user, and switched to OS X because of the unix-like
> command line environment that more closely matched the servers I was working
> with in my job environments.

Out of curiosity, why would you not just go with a Linux desktop for that?

~~~
andersen1488
Linux on the desktop is awful, and anyone who says otherwise is in denial.

~~~
kagamine
That being the opposite of my experience. While we're making bland sweeping
gestures, I have been having it easy developing on Linux (specifically Bodhi
with Moksha DE) while fixing my partner's Windows PC every week because it
fails constantly. Hell, Windows can't seem to go from location A to B and
change networks without a meltdown. It's an awful OS with awful usability, a
file explorer that is awful to use and a file system that makes development
feel like physical pain.

There, now we're even. Let's get back to EEE, and the real porblems and
advantages with this news.

------
otterley
To clarify, it sounds like what Microsoft has added to Windows 10 is a Linux
ABI.

This has been done before with other x86 OSes: FreeBSD has had 32-bit ABI
compatibility for at least a decade
([https://www.freebsd.org/doc/handbook/linuxemu.html](https://www.freebsd.org/doc/handbook/linuxemu.html)),
and the "lx branded zone" for Solaris has it as well
([https://docs.oracle.com/cd/E19455-01/817-1592/gchhy/index.ht...](https://docs.oracle.com/cd/E19455-01/817-1592/gchhy/index.html)).

~~~
melloc
You can't use lx-branded zones in Solaris anymore, but SmartOS has revived and
continued the project, and OmniOS has started porting the bits into their
distribution, too.

~~~
otterley
Oh, that's a shame. When was it removed?

~~~
bahamat
After Oracle bought Sun. It was never a part of Solaris 11. I don't know if
it's still part of Solaris 10 or not, but even if it is, it's only _barely_
usable.

But it's alive and well (and awesome) in SmartOS, with active work going on to
merge it into OmniOS, and eventually will be upstreamed to illumos-gate.

------
matt_wulfeck
microsoft is leveraging FOSS Linux to get Mac users. I think it's a real smart
move.

The author points to using grep and Xargs and some other tools to quickly
update a package. That's the key here. These bash/Linux utilities are
productivy boosters for all the Linux and Mac/bsd people out there. I can't
imagine living without them and they're necessary for any system I develop on
(which is currently a Mac).

~~~
whatever_dude
I agree. I'm (mostly) a Windows user, and the one reason I'm constantly
thinking of moving to OSX as my primary OS is the amount of command-line
tooling that is available in the system. Everything new is always there first.
I've started feeling that I was holding back by staying on Windows, even if
using Mingw daily.

This might be the thing that saves Windows as a dev machine for me. I'm a
heavy cmd/powershell user but I'd migrate to bash in an instant.

~~~
swah
Me too - but why not a Linux VM or a VPS? Its mostly for textual usage, no?

(My own answer is that cheap VPSes are 150ms away from me, and with Virtualbox
I had a few problems, always related to Windows file permissions yada yada
yada...)

~~~
matt_wulfeck
150ms sucks when you're working with multi GB files and packages. Also network
security is not ideal.

Nothing beats running and developing on localhost.

------
mrkd
Scott Hanselman has a good write-up here:
[http://www.hanselman.com/blog/DevelopersCanRunBashShellAndUs...](http://www.hanselman.com/blog/DevelopersCanRunBashShellAndUsermodeUbuntuLinuxBinariesOnWindows10.aspx)

Google Cache:
[https://webcache.googleusercontent.com/search?q=cache:http:/...](https://webcache.googleusercontent.com/search?q=cache:http://www.hanselman.com/blog/DevelopersCanRunBashShellAndUsermodeUbuntuLinuxBinariesOnWindows10.aspx)

~~~
anthk
"Of course, I have no idea how to CLOSE emacs, so I'll close the window. ;)"

What if you read the welcome screen, Mr. Scott ;) ?

~~~
rejschaap
"C-x C-c... what does that even mean?"

~~~
btreesOfSpring
<esc> : q <enter>

~~~
abiox
E37: No write since last change (add ! to override)

~~~
MichaelGG
ZQ or ZZ

~~~
nathanyo
I always use :x

------
partycoder
While I encourage people to embrace open source tools and libraries as much as
possible, I also would like to issue a word of caution on feeling too
comfortable targeting a proprietary environment such as Windows.

Some people have compared Mac OS X and Windows because of their proprietary
nature, but one key difference is that you don't run Mac OS X as a server
operating system or on the cloud. While many people develop on Mac OS X, they
might still build and deploy to a Linux server.

For Windows to support the GNU/Linux userland is to finally empower Windows as
a competitive platform for the cloud. Windows has suddenly became a viable
deployment target for a wide spectrum of software that prior to this could not
target Windows.

I am not looking forward for a lower market share of Linux (or BSD, Solaris
derivatives, to be fair) on servers or on the cloud.

~~~
nekkoru
_(...)one key difference is that you don 't run Mac OS X as a server operating
system or on the cloud._

[http://www.apple.com/osx/server/](http://www.apple.com/osx/server/)

It's actually a pretty decent server environment.

~~~
WatchDog
Am I missing something or does this only run on apple hardware, yet apple
don't make any server hardware?

~~~
creshal
They used to; nowadays you're apparently supposed to rackmount Mac Pros:

[http://www.sonnettech.com/product/rackmacpro.html](http://www.sonnettech.com/product/rackmacpro.html)

------
verytrivial
I remember seeing an ad for an PowerBook (oh, this first one one:
[http://xaharts.org/funny/Apple_Mac_OS_X_Unix_ad.html](http://xaharts.org/funny/Apple_Mac_OS_X_Unix_ad.html)
) back in 2002 (apparently) and thinking: "Wow, _now_ I want one." Outstanding
pitch. And for the last decade and a half so have a huge number busy
engineers, scientists and most recently and profoundly, web developers.
Microsoft is making a very smart move here, even if it is exceedingly late.

~~~
mbrock
I remember similar thoughts when the first MacBook (x86) came out in early
2006, as I was just starting university, and also thinking "Hmm, this is all
probably going to be huge, and I should find out how to buy Apple stock with
this ~$1200 I have... oh, no, I'll buy a MacBook for myself."

Ten years later, I'm totally bored with Apple and OS X. Especially after
trying to use Xcode and the iOS Development Cloud Platform or whatever. So
yeah, I'd probably switch to Microsoft Linux.

And I could totally play Counter-Strike and Diablo II while pausing from
coding bash scripts? Omg!

~~~
jc4p
I know it's just an example, but both of the games you mentioned have had Mac
versions for a very long time, if not initial release.

~~~
thescriptkiddie
Adding on to this, Counter-Strike (1.6, Source, and CSGO) runs natively on
Linux, and Diablo II runs absolutely perfectly under WINE.

------
AimHere
It's time that people stopped using the term 'Windows' for this operating
system. The Free Software Foundation created the bulk of the userspace, under
terms that allow anyone to share, modify and fork the programs, and then
Microsoft came along with the one last missing piece of the puzzle - the
kernel, and completed the full operating system, which, to be frank, users
find completely unusable and worthless without the free software provided by
GNU.

The kernel is an important part of the system, sure, but only one among many
important parts. We therefore think that, to give full credit to the authors,
the whole system should be termed GNU/Windows.

~~~
rsp1984
I have problems understanding your point here. What was announced was not a
new operating system but a translation layer built into Windows 10 that
translates Linux system calls to their Windows counterparts.

I also bet many people would disagree with your statement that W10 is unusable
and worthless without this feature.

The Windows kernel always existed and has evolved over the years: NT, 2000,
XP, Vista, 7, 8, 10. They didn't develop it as the "last missing piece of the
puzzle".

~~~
yohui
It's a joke:
[https://en.wikipedia.org/wiki/GNU/Linux_naming_controversy](https://en.wikipedia.org/wiki/GNU/Linux_naming_controversy)

~~~
rsp1984
I smelled it the moment I hit the reply button :)

------
icc97
I know what is being proposed is a whole lot more, but the GNU command line
tools that come with msys git are pretty extensive.

The example commands from the article are all available with the git
distribution:

> cp -a

> find | xargs | rename

> grep | xargs | sed

You can do all that - plus ssh (with ssh-agent) from the _DOS_ prompt (you
don't need PS, PuTTY or git bash).

There's vim too that comes with syntax highlighting, for which there's
solarized dark/light colour palettes for the DOS prompt [1], as well as decent
enough consolas fonts that you can use.

You can do an `ls *.exe` in the C:\Program Files\Git\usr\bin directory to see
the list of programs that are there.

Now that Windows 10 has done some 20 year late improvements to the underlying
console window [2], you can properly resize the window and the text flows
properly.

The only thing I miss are the `history` and `!` commands for which I wrote a
hacky bat file implementation of [3].

Edit: Clink [4] appears to be a fully compatible GNU history (Readline)
implementation.

Chocolatey is pretty awesome too.

[1]: [https://github.com/neilpa/cmd-colors-
solarized](https://github.com/neilpa/cmd-colors-solarized)

[2]: [https://technet.microsoft.com/en-
us/library/mt427362.aspx](https://technet.microsoft.com/en-
us/library/mt427362.aspx)

[3]: [https://ianchanning.wordpress.com/2014/10/29/dos-command-
his...](https://ianchanning.wordpress.com/2014/10/29/dos-command-history/)

[4]: [http://mridgers.github.io/clink/](http://mridgers.github.io/clink/)

~~~
imron
I've been using Git Bash (installed with Mysys Git) as my Windows command line
for years now.

It's not perfect, but I much prefer it over cygwin.

------
snambi
I have been on Unix(Mac/Linux) atleast for 8 years. A lot of developers are
buying mac books these days. At this point, even non-technical people are
buying "expensive" mac books. This directly affects microsoft bottomline.
Obviously, microsoft cannot port mac utilities into windows to reduce the
exodus of developers from windows. The stop-gap solution would be to run all
"gnu core-utils" in windows natively, the most important one being apt-get.

I believe at this point microsoft does not have the critical mass to create an
app-store. There is not enough momentum. Only Linux, Android and Apple have
successful appstores. If microsoft allows debian package manager, it can bring
back a lot of developers back to windows. Still there are many companies that
still use windows desktops and laptops.

There is potential to evolve this into a microsoft app-store that is
compatible with ubuntu. That would be a win-win for microsoft and may
potentially boost sales and slow down the decline of their OS.

~~~
manigandham
developers != mainstream

App-stores require critical mass of mainstream users which Windows still has
more of beyond anyone else. Developers follow the masses, not the other way
around.

~~~
schappim
You say that, but we're the same a--holes who say to our family: "we'll only
provide tech support for Apple devices"...

~~~
manigandham
I dont follow how this is relevant to my comment...

------
omarforgotpwd
Imagine going back in time to the 90s and telling people that in 2016
Microsoft would bend over backwards to make sure Windows could run Linux ELF
binaries natively in the kernel by converting syscalls. You'd probably be
laughed at.

~~~
keeperofdakeys
They'd laugh, because NT already had posix system calls
[http://social.technet.microsoft.com/wiki/contents/articles/1...](http://social.technet.microsoft.com/wiki/contents/articles/10224.posix-
and-unix-support-in-windows.aspx)

~~~
omarforgotpwd
POSIX calls, which have always been there but require a recompiled binary, are
different than the binary compatibility announced today. This additional step
is actually quite an impressive feat of software engineering. To think that
Microsoft would care so much about maintaining compatibility would have seemed
ridiculous just a few years ago.

~~~
cyphar
It should be noted that FreeBSD has had this for a decade AFAIK, and LX-
branded Zones have been massively improved in SmartOS.

------
azeirah
Whew, I'll finally be able to run WINE on windows! :)

~~~
bsharitt
For some older games and applications, they run on Wine better than newer
Windows, so that might actually be a useful.

------
barrkel
A performant fork - the single biggest problem with Cygwin - sounds awesome.
As does the ability to run Linux binaries directly, opening up the direct use
of binary package repos.

I wonder if I can use it via mintty instead of conhost.exe; at the very least,
I could ssh into it from Cygwin.

As always, the devil is in the details; the rough edges where support peters
out, or syscall inconsistencies creep in.

------
kiproping
> All of your Windows drives, like C: are mounted read/write directly under
> /mnt.

Its the real deal lads, congratulation Microsoft.

~~~
niutech
MSYS2 mounts C:\ under /c/ and Cygwin under /cygdrive/c/ so what's the real
deal?

~~~
xorblurb
By default, but you can tell Cygwin to use /c/ though. Really handy when you
switch between the two, and actually makes more sense (what else would be /c/
?)

------
Keyframe
Sweet baby Jesus. If this can alleviate at least half of the issues running
cygwin/babun/msys/whatnots... Namely, 64-bitness, speed, and repository
madness.

------
sp332
So how do we get it? I have a laptop set to get "Insider" updates but I don't
see the feature anywhere obvious.

~~~
entitycontext
According to Mike Harsh, a beta version is coming in an insider release "after
the Build conference." [1] During an interview Q&A, Kevin Gallo says that it
might show up in a week or two. [2]

[1] [https://blogs.windows.com/buildingapps/2016/03/30/run-
bash-o...](https://blogs.windows.com/buildingapps/2016/03/30/run-bash-on-
ubuntu-on-windows/)

[2]
[https://channel9.msdn.com/Events/Build/2016/C904](https://channel9.msdn.com/Events/Build/2016/C904)

~~~
jameslk
This comment should be at the top. It's nice that everyone has an opinion
about this announcement, but I just wanted to try it out. Unfortunately it's
not as obvious that it hasn't been released yet.

------
cabirum
Are posix permissions supported/emulated? Or are they set to 777 for all
Windows drives in /mnt like shared folders in a VM?

~~~
alternize
in the demo video
[https://channel9.msdn.com/Events/Build/2016/P488](https://channel9.msdn.com/Events/Build/2016/P488)
it's visible at 05:53 that the files all belong to root:root and have mode 777

~~~
recrof
reminds me of '90 teleshopping videos..

------
NateDad
Given that I work on a cross platform application for linux & windows... I'll
be interested to see if they try to hide some of the more annoying platform
compatibility problems.... like the fact that many linux applications assume
you can rename/delete a file while it's still open, and windows won't let you.

Also filesystem ACLs are quite different on linux and windows, it'll be
interesting to see exactly how the one maps to the other. What will chown and
chmod do?

~~~
JdeBP
> _windows won 't let you_

This is a common misconception. See
[https://news.ycombinator.com/item?id=11415366](https://news.ycombinator.com/item?id=11415366)
.

> _filesystem ACLs are quite different on linux and windows_

It's not that simple. Filesystem ACLs are different between TRUSIX-style and
NFS-style, too. Try using a TRUSIX-style setfacl on PC-BSD when the volume has
been mounted with NFS-style ACLs, some time. (-:

> _What will chown and chmod do?_

One thing that was noticeable from Microsoft's demonstration video was that
everything seemed to be owned by the superuser and have execute permissions.
That included a .gitignore and a README.md file.

------
thought_alarm
15+ years ago Microsoft shipped a UNIX subsystem for Windows NT/2k.

[https://en.m.wikipedia.org/wiki/Windows_Services_for_UNIX](https://en.m.wikipedia.org/wiki/Windows_Services_for_UNIX)

It blew my mind at the time, but it was kind of a pain and I didn't stick with
it. I don't remember why.

I guess this is about same thing, only its Linux instead of some other sort of
UNIX.

~~~
rejschaap
The article also reminded me of this. I didn't use it much because Cygwin was
a little less painful.

------
hughw
Coincidentally I've spent the past week re-learing how to develop on windows.
I wanted to avoid cygwin if possible, but the experience has been painful. I
had some hope for Chocalatey, and it seemed encouraging that MS had ported
OpenSSH over, but my first ssh to a Byobu session on Ubuntu was disastrous...
I'm sure there is some TERM parameter I can fiddle, but I don't know what or
where in 5 minutes of searching. I needed "grep", so I tried "choco search
grep", and there are a dozen choices for grep-like tools.... with GUIs,
written in Perl,... oh christ.

~~~
e12e
You might enjoy scoop ([http://scoop.sh](http://scoop.sh)):

    
    
      ~ $ scoop search grep
      main bucket:
        busybox (1.24.0-TIG-1778) --> includes 'egrep'
        gow (0.8.0) --> includes 'egrep.exe'
        grep (2.5.4)
        nim (0.11.2) --> includes 'nimgrep.exe'
        pcregrep (10.20)
        rktools2k3 (1.0) --> includes 'qgrep.exe'
      ~ $ scoop install grep
      installing grep (2.5.4)
      loading http:(...)grep-2.5.4-bin.zip from cache...
      checking hash...ok
      extracting...done
      loading (...)grep-2.5.4-dep.zip from cache...
      checking hash...ok
      extracting...done
      creating shim for grep
      grep (2.5.4) was installed successfully!
      ~ $ grep --version
      GNU grep 2.5.4
    
      Copyright (C) 2009 Free Software Foundation (...)
    

Getting colors to work is a bit of work, as windows conhost doesn't quite come
with vt100 support out-of-the box yet:

[http://www.nivot.org/blog/post/2016/02/04/Windows-10-TH2-(v1...](http://www.nivot.org/blog/post/2016/02/04/Windows-10-TH2-\(v1511\)-Console-
Host-Enhancements)

But that's just a:

    
    
      ~ $ scoop install conemu
      installing conemu (150813g)
      downloading (...)
    

Note that conemu is in the "extras" "bucket" for scoop:

    
    
      scoop bucket add extras

------
msoad
So what OS you're going to get when you run an application under this? So if I
run this:

    
    
        node -e 'console.log(require("os").type())'
    

What it's going to print?

~~~
niutech
See this screenshot showing _uname -a_ :
[https://1.bp.blogspot.com/-PTJrez4z0Jc/Vvr-
VH5DQOI/AAAAAAAFH...](https://1.bp.blogspot.com/-PTJrez4z0Jc/Vvr-
VH5DQOI/AAAAAAAFHcg/8F_2fBEG3kg-Y0aV2mURdJqk66gsoEWeg/s1600/bash.png)

~~~
drewg123
Seems less honest than the Linux env on FreeBSD, which at least puts FreeBSD
in there for uname -a. Eg:

% uname -srm FreeBSD 10.3-RELEASE amd64 % /compat/linux/bin/bash bash-4.1$
/bin/uname -srm Linux 2.6.32 i686 bash-4.1$ /bin/uname -a Linux viserion
2.6.32 FreeBSD 10.3-RELEASE #0 4b75b72(releng/10.3): Fri Mar 25 19:14:5 i686
i686 i386 GNU/Linux bash-4.1$ cat /proc/cpuinfo | grep 'model name' | head -1
model name : Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz

------
plank
Confused: can we now START or STOP bashing windows?

~~~
deagle50
After they fix highdpi scaling

~~~
insulanian
Oh yes... That's one of the reasons I switched to OSX.

~~~
deagle50
no kidding, I have a 4K monitor that looks awesome when hooked up my macbook
and terrible when hooked up to my Windows desktop

~~~
randyrand
Win10 on my dual 4ks looks great. What issues do you have?

~~~
deagle50
I'm not really sure if you're serious about this question...

Well the task manager for example, the header is rendered per pixel, the rest
of the window is a blurry mess. File Explorer window scales with DPI setting
but for some reason the fonts still render at 4k pixel size even at 175%
scaling making it very hard to read. Chrome looks like its rendering at much
lower resolution then blowing back up. Resizing a busy window chugs my GTX 980
yet the Haswell integrated GPU on my MBP 13" handles 5120x2800 pretty well on
OSX.

Why can't they just supersample the user-selected resolution then shrink back
down to 4k like OSX? Everyone already has retina assets for their app.

------
dcw303
This is good news for developers with Macs, and it has nothing to do with an
option to switch platforms.

By doing this, Microsoft are legitimising bash as an OS feature for
"developers who like unix". This has two effects on Apple:

1\. It means they will be less likely to remove their bash CLI from a future
OSX / iOS hybrid workstation OS nightmare that we all don't like to think
about.

2\. They will have to compete with Microsoft for customers who are "developers
who like unix". Competition is good for us, the users.

~~~
drakenot
I was thinking this as well. The bash version which is included with OS X is
really old[0]. They refuse to ship any software which is licensed under GPLv3.
It makes me wonder if they will reverse on that stance?

Homebrew also breaks with every major OS X release. It would be really nice to
get some 1st party support on a package manager.

I feel like Apple does the bare minimum in this area to stay POSIX compliant.
I would really like to see them feel some pressure here.

[0]
[https://www.reddit.com/r/bash/comments/393oqv/why_is_the_ver...](https://www.reddit.com/r/bash/comments/393oqv/why_is_the_version_of_bash_included_in_os_x_so_old/)

~~~
timgws
Doesn't stop you from installing homebrew, and installing a newer version of
bash though.

------
freekh
What? This is sick!? I can't wait for this to happen! Maybe I am gonna get one
of those Surface Books after all... though I am gonna miss my i3 setup... I
wonder if X (or wayland! or wayland...) can run as well... Native Emacs FTW :)

~~~
itchynose
I frigging love i3, but not a big fan of thinkpad and linux desktop combo.

I ordered a surface pro 4 and planning to run i3 in a VM with my existing
nixOS configuration. I wonder how this news will affect my workflow.

I have emacs running as a systemd service and client emacs connecting to it,
so it's quite a killer combo for development.

------
wsc981

      A team of sharp developers at Microsoft has been hard at work adapting some 
      Microsoft research technology to basically perform real time translation of 
      Linux syscalls into Windows OS syscalls.  Linux geeks can think of it 
      sort of the inverse of "wine" -- Ubuntu binaries running natively in 
      Windows.  Microsoft calls it their "Windows Subsystem for Linux".
    

Sounds a lot like Rosetta [0], which Apple used to transition people from
PowerPC to Intel.

    
    
       --- 
    

[0]:
[https://en.wikipedia.org/wiki/Rosetta_(software)](https://en.wikipedia.org/wiki/Rosetta_\(software\))

------
Stratoscope
So how does one actually install this thing?

I set up the brand new Windows 10 Pro Insider Preview 14295 from MSDN.
Hanselman's blog post says:

> After turning on Developer Mode in Windows Settings and adding the Feature,
> run you bash and are prompted to get Ubuntu on Windows from Canonical via
> the Windows Store...

OK, I turned on Developer Mode. Now what? What does "[add] the Feature" mean?

[http://www.hanselman.com/blog/DevelopersCanRunBashShellAndUs...](http://www.hanselman.com/blog/DevelopersCanRunBashShellAndUsermodeUbuntuLinuxBinariesOnWindows10.aspx)

~~~
shanselman
Builds coming soon first via the Windows Insider Program. Sign up and you'll
get it all over Windows Update soon.

~~~
Stratoscope
Thanks Scott! I've got my Insider builds turned on with the Fast level on this
test machine, so will hang tight and wait for updates.

Well, actually my "test machine" is a Windows 10 14295 VM running in
Parallels. So if this ends up working (no reason it shouldn't) I will be
running Ubuntu on Windows on OSX! :-)

~~~
kitsirota
Haha I am running Windows 10 on a macbook pro (bootcamp). So in my case it
would be ubuntu on windows on a macbook =P

------
beagle3
Can someone explain how is an "NT subsystem" or "NT personality" (which the
linux ABI is supposedly an example of) different than any other library?

Answers I've received before is "it can call the native API", but any program
can call the native API. So, what's in a subsystem?

~~~
sveiss
It's mostly a matter of layering. Think of a "subsystem" as a "pluggable
system call interface layer". The Win32 layer (mostly) sits on top of the
Native layer.

The Native API is mostly implemented by the kernel itself, ntoskrnl.exe, which
has a system call table (KiServiceTable). Most of the native API is exposed to
userspace via ntdll.dll, which calls through that system call table. This API
is available from very early boot.

The Win32 subsystem is mostly exposed by win32k.sys, which is a kernel mode
driver. It has a second system call table (W32pServiceTable) which is then
consumed by user32.dll and friends. Some parts of the Win32 user-mode API are
implemented by calling the Native API via ntdll.dll, though.

Processes which exist in the Win32 subsystem have additional kernel data
associated with them (the private state of win32k.sys for that process), had
additional win32k.sys code ran during initialization, and can therefore make
use of the services of that driver.

If you create a Native process with RtlCreateUserProcess, it won't be able to
make Win32 API calls. But it can run in environments where a Win32 process
can't -- for example, autochk.exe, which is the version of chkdsk which runs
as part of boot before the graphics driver has loaded, is a Native executable.

There's also support in the PE executable format to indicate which subsystem
to use, so the loader knows which type of process to create. Obviously, this
won't be relevant for running Linux ELF executables.

The layering isn't perfect, especially since while NT was designed to support
multiple subsystems (OS/2, Win32, Posix), Win32 is the only one which
Microsoft have historically focused on.

~~~
versteegen
So does this mean that creating a process (or forking one) can be fast if you
omit the Win32 state table and initialisation for the new process? And if so,
do you think it would be possible to get fast forking by using Native
processes instead of using the Linux emulation layer (assuming that NT
actually has an API to CoW-map an existing process' memory, which might be
internal to the Linux-on-Windows subsystem)?

------
ausjke
Ubuntu desktop can do pretty much all Windows can do these days, not to
mention mostly all I need is just a browser now. I spent 364 out of 365 days
with a Ubuntu and it works fine(yes the one day left is for Turbotax that
needs the Windows).

Maybe the real reason that MS is moving super fast towards open source
nowadays is to damage the open source goodies from within after they failed to
attack it heads on many years ago? I just don't trust MS and it's hard to
change that after so many years' hostile move from its side.

~~~
wtbob
I've been running TurboTax on Linux for over a decade now …

~~~
ausjke
how did you do it? wine or virtualbox? am I missing something?

~~~
wtbob
I use the web browser version. Some years I've had to change my user-agent
header, but I've always managed to successfully submit my federal & state
returns.

------
mark_l_watson
I am a little annoyed at myself. One of my 5 laptops is a HPStream 11 that was
running Windows 10 until a few months ago when I wiped the disk and installed
Ubuntu. Windows 10 is not bad at all, and I would have enjoyed keeping a
Windows 10 machine handy with the new Ubuntu user land support.

~~~
swampthinker
Torrent time!

~~~
emmelaich
Not necessary; just download the iso. Well, the iso maker on another Windows
machine.

------
abritishguy
I wonder how buggy thus is. For example, how do symlinks work given windows
doesn't have an equivalent that behaves the same.

~~~
sabarn01
Windows does have symlinks and hardlinks that work very similarly but are only
exposed via a built in cmd command. That said no one uses them.

~~~
wvenable
I use them. They're also heavily used by the OS itself -- the entire WinSxS
folder structure is a whole lot of symlinks.

~~~
Dylan16807
It is? I thought it was hard links.

------
nag32
Long, detailed demo ->
[https://channel9.msdn.com/Events/Build/2016/P488](https://channel9.msdn.com/Events/Build/2016/P488)

------
joeyh
[https://www.devever.net/~hl/windowsdefeat](https://www.devever.net/~hl/windowsdefeat)
seems very relevant.

Question to my mind is, are they going to manage to limit this to development
and advanced users, or will whole applications that target windows start
depending on the linux emulation to work?

~~~
recursive
You have to opt-in to the feature.

------
80x25
"But there are some imperfections still, especially around tty's an the vt100.
My beloved byobu, screen, and tmux don't quite work yet, but they're getting
close!"

If they actually fix these imperfections, that would be fantastic. It would
address a number issues that are "unfixable" in Cygwin flavors of
utilities/apps.

~~~
rspeer
It sounds like this would involve tweaking conhost.exe so that it understands
all the vt100 sequences, as well as UTF-8. (I hope they wouldn't assume
everyone's tmux setup uses only characters from codepage 437.)

If they did that, it would _also_ fix the awfulness of Python's stdout on
Windows!

~~~
anonymfus
>as well as UTF-8.

UTF-8 was always available as codepage 65001.

~~~
batat
It's terribly broken [https://social.msdn.microsoft.com/Forums/vstudio/en-
US/e4b91...](https://social.msdn.microsoft.com/Forums/vstudio/en-
US/e4b91f49-6f60-4ffe-887a-e18e39250905/possible-bugs-in-writefile-and-crt-
unicode-issues?forum=vcgeneral)

Seems to work only with WriteConsoleOutputW(), while C I/O behaves
unpredictably.

------
lazzlazzlazz
Will rendering Unicode characters still be a complete disaster? Will I need to
care about which "code page" or whatever is being used (not that that ever
seemed to help)?

~~~
mastax
I think making unicode work properly is a prerequisite to run native linux
applications, so I'm hopeful.

Personally I think they should change the terminal to unicode by default and
make the 1% of pos-ported-from-windows-95 apps `chcp` before they work.

~~~
uxp
I agree, but as someone who has to "maintain" one of those pos-ported-from-
windows-95 apps, the actual source code is long gone so it's nearly impossible
to make any meaningful changes to the application. I'd venture a guess that
most of these things that would break are in a similar boat.

That said, F-it. If updating to Server 2016 breaks it for good, we might
actually prioritize a rewrite within the next two decades.

------
BogusIKnow
It is funny how in your head, one image of a company is replace by another
over time. It does not happen instantly, but with more and more actions by the
company (open source .NET, Ubuntu on Windows,...) the image changes over time.
I found that fascinating watching myself change the image of MS in my head.

------
pratnala
Finally the year of the linux desktop then

------
Udo
Honestly, this makes me reconsider my future OS choices. I've been an OS X
user for a decade now, but getting increasingly dissatisfied with Apple's
stance on hardware and software, I have been thinking about moving to Ubuntu
for a while now. The problem with that though is the scarcity and quality of
commercial software builds on Linux. My biggest pain points are the Unreal
Engine and Unity3D IDEs right now, which technically have Linux builds
available, but in practice they just don't work.

With the availability of Unix command line tools (and maybe even GUI apps) on
Windows, this becomes a very viable platform for me as a developer. I'd still
be throwing away most of the software I purchased for OS X, but at least
Windows equivalents are available.

If Microsoft is indeed courting programmers again, this is a smart move.

------
vetinari
The important question of course is: when it will appear in Windows Server?

Incidentally, I've found the Windows 2012R2 to be my favorite OS for the
desktop from the Windows family.

------
rhabarba
It's been a couple of years since Microsoft stopped developing their Xenix
UNIX system and sold it to SCO so they could concentrate on OS/2 and DOS. It's
been some years less since Microsoft started providing Unix command-line tools
for their professional Windows series which has lately come to a halt too.

After all, there's not _that_ much ground-breaking "news" in this story.

About the technical part:

1\. I wish they wouldn't distribute it in cooperation with Canonical, a
company with a reputation that is rapidly decreasing for very good reasons.
2\. I, for one, would surely have preferred the `ksh` which came with earlier
"Unix for Windows" packages, IIRC it was the "MKS ksh", but I guess they had a
reason. 3\. I'm afraid of what this means for the PowerShell.

------
jwildeboer
TL;DR if you don't support the Linux API/ABI you are out of business. The
reality is software defined everything and it's based on Linux.

~~~
umanwizard
Apple is hardly out of business and they don't support the Linux API or ABI.

~~~
smartbit
Maybe jwildeboer talks about Cloud Native/micro-services/12 factor apps, not
client apps.

------
geertj
_System call emulation_...

The end goal of this would be to run Docker containers natively on Windows,
right?

~~~
nslindtner
Check out the docker app for Windows (Beta now). Pretty sure this is the road
they are heading.

------
andersonmvd
I wonder if Linux malware will increase, as they will be almost cross-platform
now. It's very cool, but from this perspective, that would be bad news for the
linux community -- to get the same or more eyeballs as Windows already has.

------
zmmmmm
The key question is how does the file system integration work. Cygwin has to
do all kinds of tricks to make windows file paths and things like PATH and
CLASSPATH variables work. Does Ubuntu see Windows files? If so, how? How then
does windows see the Ubuntu files? I would also be very curious if Ubuntu
executables can fork windows processes and vice versa. The magic of Cygwin is
that - with all the caveats and kludges they have to do to make it work, it
mostly pulls this stuff off. But they don't achieve in a manner that I would
have thought would be acceptable to Microsoft when shipping a product in their
own name.

~~~
maaarghk
It says in the article that they have reimplemented Linux syscalls in the
windows kernel.

------
joeclark77
This is interesting! I spent almost a whole school year (I'm a professor)
trying to use Linux as my main operating system, tried Arch, Ubuntu, Mint.
Ultimately the limiting factor was projectors. Every classroom I teach in
seems to have a different brand of projector and I just couldn't get my laptop
to work well with any of them. Windows does whatever magic is needed so that
it always "just works" with a projector, therefore, I went back. I have been
trying to raise money for a Mac because I figured it's the best compromise,
but this could change it.

------
madmax96
As a FreeBSD user, this does nothing to attract me. I dislike GNU+Linux
because it feels like a hacked together mess; now they're going to add that
poorly designed system to an even worse system? Count me out.

~~~
andor
If you weren't trolling, I'd suggest you to leave your bubble from time to
time. There are pros and cons to everything, and finding the good parts is
usually more productive.

Just for fun, here's a version of your quote from another perspective:

 _As a Linux user, FreeBSD does nothing to attract me. I dislike it because it
feels like it 's stuck in the 70's, with a mess of shell scripts for system
and service management. Now with the SCO Unix compatibility layer they added
something absolutely prehistoric to what already felt old. Count me out._

Also, how did you post this, is there a browser for FreeBSD now? ;-)

~~~
madmax96
Firefox runs fine on FreeBSD, as does chromium.

That's your opinion, and your certainly entitled to it. I value simplicity,
and IMHO it's easier for me to wrap my head around FreeBSD than Linux. I've
used Linux of course, but I consistently find that it (the userland, system
configurations) violates the rule of least surprise. If Linux works for you,
certainly use it. Just realize a lot of us UNIX guys aren't thrilled about
Linux, and aren't going to be thrilled about this subsystem because we have
different values than the Linux community.

And by the way, FreeBSD's init system solves a lot of the same problems that
systemd solves, albeit in a more transparent fashion. Zfs is also great.
FreeBSD users have enjoyed containers now for quite some time, and didn't need
Docker to do it.

Your remark about the supposed antiquity of FreeBSD reveals a fundamental
ignorance of its technologies and principles.

------
ilmiont
I wonder what implications this has for SSH for PowerShell... Microsoft were
originally planning to release native SSH in PowerShell this summer. But now
it seems redundant when you could just use Bash anyway...

~~~
kodablah
I don't think it's redundant. Many people want to remote into Windows' native
shell without having bash present.

~~~
joeyaiello
It's not redundant, and that's why our work is continuing to go forward. We're
definitely not cancelling our plans[1] to deliver native Win32 OpenSSH any
time soon.

[1]
[https://github.com/PowerShell/Win32-OpenSSH/wiki/Win32-OpenS...](https://github.com/PowerShell/Win32-OpenSSH/wiki/Win32-OpenSSH-
RoadMap)

------
partycoder
The first one to run Ubuntu on Windows on Wine gets a cookie.

More cookies for running ubuntu userland on windows on wine on emscripten.

------
jeena
I'm confused what has this list:

apt, ssh, rsync, find, grep, awk, sed, sort, xargs, md5sum, gpg, curl, wget,
apache, mysql, python, perl, ruby, php, gcc, tar, vim, emacs, diff, patch...

to do with Ubuntu?

~~~
twic
They are programs which are included in the Ubuntu distribution.

~~~
jeena
And OS X, and BSD, and OS2 and AmigaOS and probably one million other OSses.

~~~
JdeBP
Strictly speaking: _none_ of those commands were "included in the
distribution" when it came to OS/2\. There were of course ports of those
commands to OS/2, which one could install. But none of those came in the box.

I _believe_ that that was also true for AmigaDOS, even the post-Commodore
versions, but I don't have the firsthand knowledge to state it unequivocally.

------
gumby
I'm not being deliberately obtuse: I don't really understand how this helps
anyone particularly much.

(OK, I assume there's a small number of developers who develop, or at least
debug, for both systems and prefer windows as a development environment, but I
assume that number is small, at least on Microsoft's scale).

If you're developing to deploy on Linux but are more of a Windows dev, this
helps you, but that doesn't help Microsoft ship more server OS licenses.

If you're a Windows dev this is irrelevant.

If you're a linux (or posix only) dev I don't see how this helps you much. It
does help a person like me, who only uses Windows when I need some weird tool
like a compiler for an exotic embedded part or vendor-supplied FPGA tool that
only works under Windows -- again, not a large enough market t move the
needle.

Could the market be CIOs? I.e. demonstrating "hipness" in a way that can be
verified when the CIO asks the devs "does this really work the way MS claims?"

Obviously it's not opening the huge number of popular Linux desktop apps to
the Windows environment. :-(

~~~
milkytron
One of the things that excited me most about this is the ability to ssh. I
have a feeling that is going to be incredibly useful instead of having to use
PuTTY or some other client.

~~~
JdeBP
ssh is, itself, just "some other client".

I suspect that you meant some other _graphical user interface_ SSH client, as
opposed to a TUI client like ssh. Yes, a TUI SSH client is useful. I've been
using one with SFU/SFUA on a Windows 7 Ultimate machine for some years.

------
dukoid
1\. embrace

~~~
gvb
1\. Embrace is good.

2\. Extend can be good if done openly and collaboratively, as opposed to
closed and hidden.

3\. Extinguish - Here be dragons.

I'm hopeful the New Kinder Gentler Microsoft stays on steps 1. and 2. (done
collaboratively).

~~~
Grishnakh
The definition of insanity is doing the same thing and expecting a different
result. Microsoft has been trying to extinguish their competition for decades
now; what makes you think they're going to be different this time?

~~~
orf
And what makes you think they will do the same? Fact is you have no idea, and
all signs point to a more open MS that has learned that simply throwing their
weight around won't work anymore.

~~~
dohboy
You clearly don't work with Microsoft on a daily basis in a enterprise
setup... I'll fill you in. The new lock-in is Office 365 with Intune/SCCM and
Azure. We are in the extinct phase of having better management options in
Intune for Office and surrounding technologies and enterprise IT will see this
as an advantage over choosing another MDM/MAM vendor. Step one done for still
controlling productivity apps and device management. Now it's getting
developer mindshare and focus back on the Windows ecosystem. Pretty easy in
enterprise as we just did a lock-in with Office 365/Intune. They still throw
their weight around and their key/technical account managers must have missed
the memo saying to be more open for other vendors/partners. So they may look
nice but don't make the mistake of thinking there isn't a plan behind.

------
zyngaro
Now I just hope this will also be enabled in the Windows 10 build running on
the Surface.

~~~
partiallypro
It will be on every Windows 10 machine, but not Windows 8.1 on the Surface RT,
obviously.

------
wmccullough
Awful lot of hate in the comments on this one. The arguments are coming off as
petty at best. I keep seeing something analogous to:

"Microsoft finally add a temperature control knob to their toaster just like
all the others!"

Comment: But it isn't blue, these corporate behemoths don't know what they are
doing.

As a user and lover of all the ecosystems, the argument from the non-Microsoft
crowd is beginning to appear quite desperate.

------
justncase80
This is great.

For the last couple of years, as a windows user, I have just been installing
Git Scm, which includes something similar to this and have been using that for
all script / command line needs.

If this was baked into Windows so much the better! I would love it if nobody
ever wrote a single CMD or PS1 file ever again. Let's please all just converge
on bash and put this debate behind us.

~~~
JdeBP
> _Let 's please all just converge on bash_

As (I hope most) Unix/Linux users would respond: let's not.

A good thing about the Unix/Linux world is that there is a multiplicity of
shells. And this is regularly taken advantage of. I have systems (for example)
where my interactive shell is the Z shell and /bin/sh is the Almquist shell. I
have others where /bin/sh is the Korn shell.

The "Shellshock" incident should have told everyone that Bourne Again shell
everywhere, for everything, is not a good idea.

In any case, this is not a debate to be won/lost in the first place, as I hope
Unix/Linux users would also respond. There are places for shell scripts,
places for Python, places for perl, places for awk, TCL, REXX, execlineb, and
a whole lot of others. One size, one scripting language, does _not_ fit all.

Indeed, if you _do_ eventually gain all the Ubuntu command-line toolsets from
this, your options should broaden to those and more besides, not narrow to the
Bourne Again shell.

------
justncase80
Also, for windows devs not in the know check this out:

[http://cmder.net/](http://cmder.net/)

~~~
insulanian
I highly recommend it! It's making my life easier in the office.

------
homulilly
Is this still going to be using the absolutely dreadfull conhost? Because
that's the biggest shortcoming windows currently has with its interactive
command line tools, cmd.exe and powershell are both usable, not great (okay,
pretty bad honestly, but usable) when you don't consider the shitty terminal
they force you into using.

~~~
icc97
I agree conhost is terrible - but they have finally made some improvements in
Windows 10 [1]:

\- Drag-to-resize

\- Automatic text reflowing on resize

\- Ctrl + X/C/V support for cut/copy/paste

\- Selection that does line-wrapping

\- Transparency

\- A full-screen mode

    
    
      [1]: http://futurice.com/blog/a-saner-windows-command-line-part-1

~~~
homulilly
Ctrl+Key shortcuts aren't going to work in bash (at least not without breaking
other important stuff) so I'm hoping they decide to make quickedit mode more
usable someday.

Unfortunately I still think this is going to be kind of a shitshow as long as
they keep the black box nature of conhost. The terminal apps OSX and most
linux distros ship with are fairly bare-bones too and I doubt reprogrammable
256-color mode is on microsoft's roadmap.

~~~
wvenable
"I doubt reprogrammable 256-color mode is on microsoft's roadmap..."

[http://www.nivot.org/blog/post/2016/02/04/Windows-10-TH2-%28...](http://www.nivot.org/blog/post/2016/02/04/Windows-10-TH2-%28v1511%29-Console-
Host-Enhancements)

------
castratikron
I wonder how long it'll be until we see some kind of NT kernel with GNU
userland distribution (GNU/NT?).

------
ljani
Interesting! I've been following Flinux [1], but it's not ready for day to day
use. I hope this one will be soon!

[1]:
[https://github.com/wishstudio/flinux/](https://github.com/wishstudio/flinux/)

~~~
jagtesh
Flinux was the first thing in my mind when I saw this. Could this be inspired
from it? In which case, at least some sort of recognition or attribution would
have been great considering the amount of effort Flinux author has put into
it.

------
tracker1
I'm actually happy to see this... it's similar to the efforts Joyent took in
getting their docker solution in place.. and I'd be really surprised if that
isn't one of the goals for this effort.

I tend to lately have a Linux server VM on my desktop, and then SSH into it to
do linux things... not having to setup a VM is a bonus imho... Being able to
run actual docker, better still, as handling the VM's copy of docker images,
and making them accessible outside isn't always fun.

In the end, I think it's pretty cool, and scary all at once.. mainly because
too many developers take no effort to making their apps work across
platforms... not just Windows, but the BSD and Solaris variants.

------
geertj
I'm really hoping the syscall emulation will give us _fork()_ and an efficient
_poll()_. Lack of these has been the most significant Windows porting issue
for me (on Python, which otherwise has great platform abstraction).

------
seomint
"Fire and brimstone coming down from the skies! Rivers and seas boiling! Forty
years of darkness! Earthquakes, volcanoes! The dead rising from the grave!
Human sacrifice! Dogs and cats living together! Mass hysteria!"

------
soneil
I'm failing to see the difference between this, and any other VM?

Is WOW in the cpu identifiers "windows-on-windows", the shim they use for "xp
mode"?

If everything's mounted under /mnt(/c..), and the screenshot shows nothing
mounted there - Can this run just like a VM without the host fs mounted?

I'd be really curious to see; if linux attempts to access raw block devices in
/dev/, what's actually there. in the process list in windows, are all linux
processes enumerated.

For now it just looks like a linux VM with the guest fs mounted in the host,
and the host fs mounted in the guest.

~~~
JdeBP
> _I 'm failing to see the difference between this, and any other VM?_

Then you've failed to take in the point, copiously made in pretty much all of
the coverage of this (and often right at the start), that _this is not a
virtual machine_.

This is Windows NT, the operating system designed with "personality
subsystems" right from the start, gaining another subsystem that lets it run
ELF64 binaries that were compiled to run on top of the Linux kernel.

------
superobserver
So now I will be able to do what I already do on my ChromeOS device with
Crouton, but worse.

I admit that gives me a bit of encouragement since I'm shackled to Windows at
work, where I really try to make the most of it, but I'm by no means impressed
given I already have done the following to get many native GNU/Linux binaries
(as one example):

PS > Install-Package gow -Source Chocolatey

Another example: cygwin

The real limiting factor has been muxing terminals while on Windows. And
judging by the post, that certainly remains a problem.

If they could successfully bring a full Bash terminal to Windows 10, I would
actually be somewhat impressed.

------
look_lookatme
What is up with the unix-y directory structure in this screenshot?

[http://o.aolcdn.com/dims-
global/dims3/GLOB/resize/1345x666/q...](http://o.aolcdn.com/dims-
global/dims3/GLOB/resize/1345x666/quality/80/https://tctechcrunch2011.files.wordpress.com/2016/03/o92a2876.jpg)

It's been a while since I've used Windows but I'm pretty sure it doesn't have
a unix directory structure... is it the case that they map / to a folder
inside windows?

~~~
geofft
Yes, as mentioned in the article, / on the Linux side maps to
C:\Users\\...\AppData\Local\Lxss\rootfs\, and C:\ on the Windows side maps to
/mnt/c/ on the Linux side.

Think of it as an Ubuntu chroot on Windows, with C:\ bind-mounted into the
chroot.

~~~
bryanlarsen
I get the impression that it's a new filesystem, so
C:\Users\Kirkland\AppData\Local\Lxss\rootfs is a file containing a linuxy file
system that's mounted onto / in the Linux subsystem and onto
C:\Users\Kirkland\AppData\Local\Lxss\rootfs\ on the Windows subsystem.

~~~
JdeBP
It's not, though.

Windows NT was designed with multiple "personality" subsystems right from the
start. The filesystem that any given "personality" sees _is not_ the
underlying system that is seen via the "Native API". They are _all_
reinterpreted views of the NT Object Manager's namespace.

* The Win32 subsystem presents a view where C:\ in a Win32 name is mapped to \DosDevices\C:\ in a Native NT name.

* The POSIX subsystem (at least in the later SFU/SFUA) presents a view where /dev/fs/c/ in a POSIX name is mapped to \DosDevices\C:\ in a Native NT name.

* This Linux subsystem (reportedly) presents a view where /mnt/c/ in a Linux name is mapped to \DosDevices\C:\ in a Native NT name.

\DosDevices\C: is, in turn, a Object Manager symbolic link that points to
somewhere else in the Object Manager namespace. (There's also a whole
mechanism of "per-login" and "global" symbolic links that I'm glossing over.)

Win32 names relative to \ , D:., and . , and POSIX names relative to \ and . ,
are also things that are handled _within the subsystem_ (sometimes within a
set of conspirator language runtime libraries, in fact) that are mapped by
that to the NT Object Manager's namespace.

* The Win32 subsystem itself only supports _one_ current directory, the current directory _on the current drive_. The Win32 subsystem keeps a handle to that current directory open per Win32 process (and stores the handle value in the Process Environment Block in the process' address space) and remembers what string, including drive letter, it was set to.

* The current directory _on another drive_ is a fiction maintained by conspiring Win32 language runtime libraries, using a set of otherwise hidden environment variables. A Win32 name with D:. is mapped using the value of an "=D:" environment variable. See [http://unix.stackexchange.com/a/251215/5132](http://unix.stackexchange.com/a/251215/5132) for how this can make a mess with the (Win32) Bourne Again shell running on Cygwin.

* Win32 names relative to a driveless \ use a Win32-subsystem-maintained idea of a current drive letter, derived from the Win32 "current directory" string that is set, and then go through the mapping to \DosDevices\C:\ (or whatever drive letter).

* The (SFU/SFUA) POSIX subsystem doesn't need such conspiracy, as the POSIX model is to have only one current directory, too. So the POSIX subsystem keeps a handle to the current directory open per POSIX process.

* This Linux subsystem (reportedly) presents a view where / in a Linux name is mapped to \DosDevices\C:\Users\Kirkland\AppData\Local\Lxss\rootfs\ in a Native NT name.

* _Presumably_ , this Linux subsystem similarly keeps a handle to the current directory open per Linux process, and remembers its string. After all, it has to present /proc/self/cwd to Linux programs.

Every Windows NT subsystem has filename mapping mechanisms, and they all
present their own "views" of the actual native namespace of the NT operating
system kernel. This is not a new filesystem. It's another NT subsystem _with
its own view_ of the NT Object Manager's namespace, just as the other
subsystems have.

------
vram22
Microsoft also had or still has something called SFU - Services For Unix. I
know they were working on it some years ago. But that could be for some sort
of interoperability, not the same as this thing.

~~~
insulanian
I think that was removed in Win8.

------
sarthakk
I am curious to see how Microsoft execute on the implementation of the user
model for this: would user accounts used while running bash (or other
utilities) correspond to actual Windows accounts (and integrate modes like
"Run as administrator" with "sudo" calls from within the shell) or whether
accounts for these binaries would exist separately (the demo video linked in
one of the comments shows everything running as 'root' but it is a _preview_
after all). I guess we will find out.

------
ruevs
This is ancient news re-implemented. Windows NT had a POSIX layer up to about
Windows Server 2003:
[https://en.wikipedia.org/wiki/Microsoft_POSIX_subsystem](https://en.wikipedia.org/wiki/Microsoft_POSIX_subsystem)
[http://brianreiter.org/2010/08/24/the-sad-history-of-the-
mic...](http://brianreiter.org/2010/08/24/the-sad-history-of-the-microsoft-
posix-subsystem/)

------
dang
There's another big discussion at
[https://news.ycombinator.com/item?id=11388418](https://news.ycombinator.com/item?id=11388418).

------
EastSmith
Does this means that persistent* command line history will work out of the box
on Windows? If this is the case, wow, we waited and waited and waited and it
is finally here, thanks Ubuntu!

*persistent: open command line, write something, close command line, open command line, arrow up\down shows last executed command.

And yes, I know persistent command line history can be set via power shell,
but it needs to be set (i.e. not working out of the box) and it is not quite
the same.

~~~
icc97
A Scott Anselman article [1], mentions Clink [2] which appears to be a pretty
fully implemented and persistent command line history. Don't know about up /
down arrow though.

[1]:
[http://www.hanselman.com/blog/MakingABetterSomewhatPrettierB...](http://www.hanselman.com/blog/MakingABetterSomewhatPrettierButDefinitelyMoreFunctionalWindowsCommandLine.aspx)

[2]: [http://mridgers.github.io/clink/](http://mridgers.github.io/clink/)

------
patrickaljord
I guess that fixes bug #1
[https://bugs.launchpad.net/bugs/1](https://bugs.launchpad.net/bugs/1)

~~~
rhabarba
Really? Does Ubuntu come without proprietary drivers now?

------
stop1234
So wait... you still get the "cmd.exe console"? After all these decades
Microsoft Windows still does not provide a decent terminal out of the box?

~~~
JdeBP
Of course, one could phrase the question the opposite way. Many people have,
over the years.

> _After all these decades, Unix and Linux people are still limited and
> encumbered by the antique typewriter-mode way of interacting with a
> computer?_

This sword cuts both ways, remember. In many people's minds, the typewriter-
oriented way of interacting with computers -- with all of its concomitant
problems of multiple incompatible escape code sequence sets, control sequence
tearing, terminal mode enquiry from the host end, modal character encodings,
modal display, 8-bitness, 7-bitness (!), and of course all of the modem and
serial line hoops to jump through -- is something that the world _got away
from_ in the 1980s and early 1990s.

The console subsystems in Windows NT, and in OS/2 1.x before it, provided
simple manipulation of cursor and attributes without worrying about which
escape sequence set to use or without danger of escape sequence tearing. They
provided simple enquiry mechanisms for reading characters and attributes back
out of the display, and for reading the cursor. There were no worries about
"having bit #7 set", or accidentally dropping into "great runes mode". One
could use full UCS-2 (this was pre-Unicode 1.1, remember) if one wanted to
avoid worrying about code pages. The kernel didn't impose a fixed number of
devices or (at least in Windows NT) a low limit on the total number of
consoles. The input stream included both keyboard and mouse events in a single
machine-readable form, and application softwares didn't have to decode human-
readable (sic) protocols for the latter. Keyboard events comprised key press
and release information. There were no worries about BPS settings and carrier
detect.

* [http://homepage.ntlworld.com./jonathan.deboynepollard/Softwa...](http://homepage.ntlworld.com./jonathan.deboynepollard/Softwares/conapi.html)

* [http://homepage.ntlworld.com./jonathan.deboynepollard/Softwa...](http://homepage.ntlworld.com./jonathan.deboynepollard/Softwares/conapi/)

All of these were 1980s advances on the state of the art with respect to
typewriter-oriented interfaces, and from them in the same decade we got a
whole range of TUI programs (even on MS/PC/DR-DOS) whose textual user
interfaces did things like incorporate the mouse, draw UI widgets with actual
box/line/arrow glyphs, react to modifier keys as they were pressed and
released (the most memorable perhaps being a press and release of the [ALT]
key activating the menu bar), and save and restore what was displayed "behind"
a window/dialogue box. So one should understand the non-Unix non-Linux world's
amazement at people who bemoan the lack of systems _inferior to even that_.

 _And after that in the 1980s_ , they will tell you, _we gave you the ability
to have graphics with the text, multiple fonts, more than 16 colours, a cross-
application clipboard, a unified message queue, message passing between
different programs, and so forth_.

There's another "after all these decades" question that could be shot back, as
well.

> _After all these decades, it 's only in 2011 that the Unix and Linux worlds
> finally got a workable mouse event protocol for their typewriter user
> interface? The OS/2 MOU subsystem could handle 16-bit row and column
> positions, without any of these problems and in the same recognition that
> consoles were no longer 80 by 25, in 1987!_

* [http://www.edm2.com/index.php/OS2_API:DataType:MOUEVENTINFO](http://www.edm2.com/index.php/OS2_API:DataType:MOUEVENTINFO)

* [http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Ex...](http://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h2-Extended-coordinates)

* [http://superuser.com/a/413835/38062](http://superuser.com/a/413835/38062)

* [https://groups.google.com/d/msg/vim_use/lo6PLRUu2Gg/MDcpLf1P...](https://groups.google.com/d/msg/vim_use/lo6PLRUu2Gg/MDcpLf1PDZ8J)

* [http://leonerds-code.blogspot.co.uk/2012/04/wide-mouse-suppo...](http://leonerds-code.blogspot.co.uk/2012/04/wide-mouse-support-in-libvterm.html)

There is no "Microsoft cannot do a decent terminal (like we can)" high ground
for you to claim.

------
jegoodwin3
Something similar was available years ago on sourceforge:

[https://sourceforge.net/projects/line/](https://sourceforge.net/projects/line/)

("Line is not an emulator")

Hard to tell from the article, but I'd guess they just made an MS version of
what this project does. The "mapping syscalls" sounds like implementing the
ABI, similar to how Line did it.

------
mpnordland
I just can't see them being willing to support all the different and weird
configurations (like space bar heating) that exist. I don't believe I have a
weird configuration, but I've run into old bugs that nobody wants to fix
before, so I really don't think I'll switch to Windows. I just can't imagine
that it will be any easier in the long run.

------
bdcravens
Looking at Hanselman's blog on this, was excited to see Redis running.
Presumably this makes the Rails on Windows story a bit better?

~~~
shanselman
Absolutely. As Rails would then be running on Linux.

I code ruby running in this system (some stuff has issues, it's beta, and I'm
doing Sinatra) but using Visual Studio Code as my editor.

~~~
TheRealDunkirk
Now we're talking. I don't expect it'll ever be as smooth to develop with
Rails under Windows as it is under actual Linux, but if it were as good as OS
X, I'd say this was a success. But, then again, maybe this subsystem really
will make it feel native. As a matter of fact, this was the only use case I
could come up with to test the implementation of this announcement. I'd like
to think that I speak for enough people to make it worthwhile to suggest that
you should do a writeup on your experiences with this. I'm strongly
reconsidering letting my main machine re-upgrade to 10 to try it, but it works
really nicely for gaming right now, without any other cruft. ;-)

~~~
shanselman
This is actual Linux (minus the kernel) so it should work 99% the same as
under Ubuntu when doing usermode stuff.

------
mmagin
First they ignore you, then they laugh at you, then they fight you, then
err... Microsoft doing lots of Linux stuff to remain relevant.

------
spectaclepiece
It's like i you had two friends your whole life, you needed one and you really
liked the other but they lived in different cities and all of a sudden they
move in to the same flat.

I am sure there is a firestorm of opinions in the hundreds of comments below
this textbox but frankly I just want to say that this was the best fucking
news I have had all year.

------
filtersweeo
If this has shared home directories, I will literally tongue kiss any
Microsoft employee that requests said service.

------
beamatronic
Is this a cheap ploy by Microsoft to get me to stop fighting that Windows 10
upgrade? If so, it worked!

------
tobias3
I wonder if they implemented a copy-on-write fork syscall in NT. Otherwise it
will be slower (and use a lot more memory) in some scenarios.

Edit: And cow fork only makes sense if there is memory over-commit. So to be
fully featured it would need a separate memory subsystem with memory over-
commit.

~~~
quotemstr
No, you don't need overcommit for COW fork. You can fully commit the writable
pages of the new process. Yes, that uses a bit of pagefile space, but disk
space is cheap, and this approach works fine. You can (and should, if you care
about robustness) turn off overcommit on Linux too.

------
tkubacki
Wondering if ansible will work... If done right - I fell desktop linux and OSX
market share will shrink

------
shostack
I'm a Win10 user who is learning Ruby and RoR on Ubuntu setup with
Virtualbox/Vagrant/Chef with Git Bash as my terminal.

Is there any real benefit to me switching over to this approach aside from
what I'm guessing is better performance since it is native and not a VM?

------
giis
Does it comes with patented 'sudo' command? [http://www.linux-
magazine.com/Online/News/Microsoft-Patents-...](http://www.linux-
magazine.com/Online/News/Microsoft-Patents-Sudo)

------
hackguru
What does this mean for PowerShell?

~~~
joeyaiello
See my reply on the other thread:
[https://news.ycombinator.com/item?id=11392734](https://news.ycombinator.com/item?id=11392734)

------
leishulang
Just like IE finally giving its way to W3C, Windows is finally giving its way
to POSIX.

------
apricot
Microsoft is embracing Ubuntu. That's the first step.

[https://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish](https://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish)

------
poofyleek
How do they handle various NTFS related issues? [https://cygwin.com/cygwin-ug-
net/using-specialnames.html](https://cygwin.com/cygwin-ug-net/using-
specialnames.html)

~~~
bryanlarsen
I'm reading between the lines, but it looks like the linux subsystem is using
a separate file system. So you'll have the usual problems when using files
from /mnt/c, but other files are mounted in a unixy file system of some sort.
The Ubuntu file system is mounted onto your Windows subsystem at
C:\Users\<user>\AppData\Local\Lxss\rootfs\, according to the article.

~~~
poofyleek
I'm guessing you are right. The usual problems with /mnt/c. I was wondering
about rootfs being per user as well. On a server that may be a problem, but
perhaps not on a laptop. It sounds like this is not meant to be the basis for
production level deployments, but useful for development.

------
bigger_cheese
If it can run GCC and EMACS I'm pretty happy. At the moment I have to use
Msys.

Are Ubuntu's libraries available. Could you theoretically produce a statically
linked binary under Windows and then run it natively in 'real' linux

~~~
mdip
emacs and gcc - Yes - they actually demoed emacs in the keynote and gcc in the
later discussion at
[https://channel9.msdn.com/Events/Build/2016/P488?ocid=player](https://channel9.msdn.com/Events/Build/2016/P488?ocid=player)).

So many tools require compiling/building in Cygwin and it'll be quite
convenient to just be able to do that without the extra layer.

As for Ubuntu's libraries - Aptitude is there and you can apt-get quite a bit.
I believe you _could_ \-- in some cases -- static link and run in "real"
linux. They were pretty insistent that this is "real Ubuntu" \-- basically
they've done the reverse of Wine, mapping Linux calls to Win API equivalents,
so that might open up the scenario you're thinking about.

------
T-A
Nice chat / Q&A about this here:
[https://channel9.msdn.com/Events/Build/2016/C906](https://channel9.msdn.com/Events/Build/2016/C906)

------
ctstover
I've seen plenty of windows centric IT departments that would try to ban this
from being installed. This act of admission will just be to iconoclastic for
all those really enterprisey entrenched forces. You know the type.

------
voltagex_
Kevin Gallo just announced that there'll be more information live at Build at
4:30pm PDT.

[https://channel9.msdn.com/?wt.mc_id=build_hp](https://channel9.msdn.com/?wt.mc_id=build_hp)

------
nxzero
It is possible this is the beginning of the end for Window and Linux too.
Basically the strategy would be to get all the user to switch to a priority
(aka propriety) version of Linux, much like Google has done with Android.

~~~
creshal
Canonical has been trying that for a long time, what with Ubuntu having a huge
semi-proprietary code base not shared with any other distribution (Mir, Unity,
own font rendering, Launpad/bzr for development, …).

~~~
nxzero
Obviously, Canonical isn't Microsoft, though who knows, anything is possible;
maybe Google will acquire Canonical.

------
meursault334
This seems like it could be pretty amazing for developing and testing some of
our backend computer vision tools directly in Windows.

What would be really amazing would be if you could use CUDA and cuDNN from
Ubuntu executables in Windows 10.

------
jwr
It's basically what WINE has been doing for years, but the other way around.

------
bensummers
[https://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish](https://en.wikipedia.org/wiki/Embrace,_extend_and_extinguish)

------
ageofwant
I've been waiting for MS to announce MSLinux for the last 5 years. Its hard
for me to understand why they just don't roll their own distribution and port
their common suits to it.

------
caf
Is this operating at the libc level, or is it running the Ubuntu glibc package
and emulating at the syscall level?

If the latter, it would be interesting to see how things like futex are
implemented.

------
jessegreathouse
Last time we heard linux was coming to Windows, what we got was Powershell. I
remain cautiously optimistic because Im hoping this doesn't lead to the same
disapppointment.

------
hatelove85911
Best news coming from Microsoft. I had been struggled for a long time for
being stuck in the windows OS on my working PC, hope it's going to be mature
and stable ASAP

------
jhwhite
My heart skipped a beat when I saw that that ssh is going to be available. And
tmux is being worked on!

But will I be able to change shells? Will I be able to put zsh with oh-my-zsh
on it?

~~~
icc97
ssh is already available natively if you install msys git

~~~
shanselman
And there's openssh as a Windows binary that will eventually ship with Windows
in the future.
[https://github.com/PowerShell/Win32-OpenSSH/releases](https://github.com/PowerShell/Win32-OpenSSH/releases)

------
wyldfire
> But there are some imperfections still, especially around tty's an the vt100

Yeah, it would be excellent if something like gnome-terminal worked well with
this linux ABI.

------
altendo
I'm interested in the security implications that this will bring. Extra
features bring extra potential attack vectors, and this is one doozy of a
feature.

------
janvdberg
There are roughly two ways to differently phrase what has happened:

1\. "A multi-billion dollar corporation with almost an omni presence on the
desktop computer was seeing it was missing something that was readily
available with other competing solutions, and decided to nitpick the greatest
parts of those competitors and incorporate it in their own solution. If you
can't beat 'em join 'em strategy."

2."Computing and software is becoming more fluid, and an OS doesn't have clear
boundaries as it used to have but it is just made up of whatever the best
ideas are, ideas that are expressed by software and thus interconnect via
API's and can be glued together to make the best possible solution to fit your
needs. And that big multi-billion dollar company wants the best solution."

(If you like that last idea, I have news for you. This is exactly the idea
behind GNU/Linux, and it already exists. So you know, instead of being excited
and giddy for all this you could just install Ubuntu.)

And this is where the sticky part is. The openness of GPL software makes way
for their current Microsoft approach, but it also bites itself in the butt. By
using bash in such a way and incorporating this Free and Open software within
this closed OS is suffocating the ideas of GPL and diluting its purpose.
Because Microsoft is not GPL-ing its own code base (sure, small parts), it's
just using the best parts and sticking to its own strategy. It's a smart,
clever, and tactically strong move and it will be very successful. But GPL
thrives and exists because of other GPL software, and this approach works and
creates beautiful things (take how GCC made may for Linux, which made way for
a gazillion other tools etc.). There is a viral aspect to the GPL that will be
completely cut off. I believe GPL software in a non-GPL environment have a
harder time in reaching their potential.

But most people will just look at it from a user perspective and think: 'hey,
I get best of both worlds'. But they forget that this software only got this
far because of exactly this license. It's a fundamental and integral part of
it's success.

Since what's happening was completely unheard throughout the 90's and 00's I
don't think both sides would have guessed this would ever happen. But it did.
Just like a couple of weeks ago Microsoft decided to create its own Linux
version to support SQL server on Linux. So even stranger things might happen
and I'm trying to keep an open mind.That being said I really think the nature
of software is and should be fluid and so it should be able to be stitched
together to create what you need. But this only work really well, if all parts
of the 'quilt' follow the same rules.

------
executesorder66
It's really cool that this can be done. But why would you not run Ubuntu on
Linux? What is the advantage of running it on a windows kernel?

------
emmelaich
Fantastic! Curious to know how tight it is tied to Ubuntu. Presumably very
little or none. Also, would it require Windows 10 Pro? I suspect so.

------
israrkhan
I hope this will make porting Linux application to windows a breeze ( fork,
and other syscalls that do not have equivalent windows APIs).

------
niutech
How does it differ from CoLinux from 2004?
[http://www.colinux.org](http://www.colinux.org)

~~~
quotemstr
It isn't. This idea has been tried many, many times before. (Most recently,
midipix.) It always fails, because a subsystem-isolated program is _too_
isolated from the rest of the system.

------
newman314
I wonder if this means that I can natively ssh into Windows via this method.
Anyone know if daemon/services are permitted eg sshd?

------
rocky1138
Is this better, the same, or worse than git bash?

~~~
tdicola
Completely different. Git bash is based on msys which is a suite of Linux/Unix
tools ported to compile and run natively on Windows. This is taking actual
Linux programs and running them as-is on Windows. Wherever the Linux programs
make system calls to the Linux kernel, etc. there is a shim layer from MS that
translates those calls into Windows system calls. It's not going to be 100%
perfect compatibility with every app, but will probably support a lot more
stuff than msys.

------
jagermo
Does anyone See any possible security problems with that Setup?

It looks so promising and fun, i hope you can secure all that additonal
capabilities.

------
rhabarba
By the way, for those who are curious: there already have been native (non-
msys) Windows versions of Vim, ls etc. for years.

------
Bjartr
Reminds me of andLinux[1]

[1] [http://www.andlinux.org/](http://www.andlinux.org/)

------
rcurry
I'm just blown away by how much Microsoft is changing their direction these
days. These are heady times, for sure.

------
kelvin0
<tears of joy> It's not a VM ... it's natively running on Win10 </tears of
joy>

------
gooseyard
can someone confirm whether this is derived from MSR's Drawbridge research?
([http://research.microsoft.com/en-
us/projects/drawbridge/](http://research.microsoft.com/en-
us/projects/drawbridge/))

~~~
zzzcpan
No, the whole thing was created from scratch. Linux processes even live in a
separate address space and are not showing up in a task manager at the moment.
At least that's what they said. You should watch both videos posted here
somewhere.

------
msellout
If they had announced this on April 1st, the media attention might have been
even better.

------
tomc1985
Embrace, extend, extinguish...

------
daigoba66
I bet this is also a step towards having a proper SSH server running on
Windows.

------
bluegreyred
Embrace, extend, extinguish.

------
bithush
Does anyone know if this will allow me to run GBD in tui mode on Windows?

------
paramk
So does this mean sooner or later we will be seeing the end of Cygwin ?

------
discordance
On the plus, Rails won't be such a pain to install on Windows now.

------
abawany
Apparently I wasn't the first one to think of this: 2016, the year that Linux
finally takes off on the desktop.

[https://twitter.com/search?q=year+linux+desktop](https://twitter.com/search?q=year+linux+desktop)

~~~
JdeBP
... except that:

* Linux is the part that's being replaced, with the Windows NT kernel and this subsystem.

* The people promoting this are not aiming it at GUI programs. ([https://news.ycombinator.com/item?id=11391961](https://news.ycombinator.com/item?id=11391961))

* The desktop seen on the screen will still be Windows Explorer.

So it's "Linux on the desktop", except in every particular. (-:

~~~
abawany
Fair point - it was a "clever" and shallow comment on my part for which I
paid.

I am not particularly a Windows fan either and have been using Linux since the
early 90s - the Linux desktop has always been quite adequate for my needs so
it is personally hard for me to see why it is difficult for people to adopt
Linux on the desktop. The only reasons I can see are sub-optimal driver
support, some Windows application that keeps them locked (for me it is OneNote
and its support for handwriting), or general fear.

------
prirun
I won't be running Ubuntu on Windows 10, because I'd never run Windows 10.
It's like inviting Microsoft to take up permanent residence with me, and
eventually, I'm sure _I 'll_ be the one paying for the privilege.

------
rajahafify
Can unix fork() be used?

------
stantona
Is this a sign that Windows is moving towards a linux kernel?

------
sebringj
Now if they can just run XCode, we are on to something.

------
bluejekyll
Does this imply better POSIX compliance by MS as well?

------
antaviana
Will Linux programs also work on Windows Nano Server?

~~~
justincormack
I dont think so, it is the minimal system, Linux emulation is not needed.

------
ericmo
I was excited until I reached the Windows Store part.

------
valine
So does this mean I can compile Swift on widows?

------
shmerl
So it's like Wine in reverse. Is it FOSS?

~~~
HeadlessChild
"Microsoft calls it their "Windows Subsystem for Linux". (No, it's not open
source at this time.)"

~~~
shmerl
Sounds like they might open it. But probably it won't be as useful as Wine
which is portable to POSIX systems. May be it can benefit ReactOS or
something.

What could be good though is MS backing the Wine project. But I guess it goes
too much against their lock-in DNA.

------
dikaiosune
Once I can have the Arch/AUR repos in Windows, it will no longer be my year of
Linux on the desktop. Watching eagerly, but not sold yet.

------
PaulHoule
It's official... cygwin is dead.

~~~
quotemstr
Not even close. Maybe when I can call CreateWindow from a POSIX process.

------
gchokov
Windows is going absolutely nowhere.

------
awqrre
Hopefully this will fail and they will switch to GNU Linux and ditch
Windows... that would be a long time dream come true.

------
neves
How do I get it? I want it now!

------
davesque
They should call it Winux :P.

------
nocdib
FINALLY, a successor to Wubi!

------
shiftoutbox
Wow Microsoft, what's next jails with a manager called Plumber . Zing !

------
indiv0
Great! I've been waiting for the day I can `rm -rf system32`.

------
hathym
Will cygwin die?

------
diebir
April fools.

Coming next: Windows 11 will use Linux kernel.

~~~
k__
Well we are close. But I thought the 1st of April idea was to make the joke on
1st and reveal it after that date. Not to make a joke in March and tell people
it was a joke on 1st of April...

------
homero
Sick

------
zymhan
"Linux geeks can think of it sort of the inverse of "wine" \-- Ubuntu binaries
running natively in Windows. Microsoft calls it their "Windows Subsystem for
Linux"."

I find it amazing that you can have such a functional Ubuntu environment by
translating system calls. Microsoft does have the advantage of Linux being
open-source I suppose, while the Wine project had to reverse engineer DLLs. Or
have you supply them on your own.

~~~
jdub
Windows NT was designed from the start to have modular subsystems. It was most
infamously used to provide a POSIX subsystem which really only checked boxes
on government acquisition forms. :-)

The reason WINE went with the library emulation route is because: (a) the
Windows kernel doesn't have a stable system call layer, and (b) the Win32 API
is massive anyway.

Windows has an easier time emulating Linux at the very lowest levels because
Linux has an ABI stable system call layer. If you emulate those, you can run
ANY Linux binary.

It also means Microsoft doesn't have to ship or support hundreds of Open
Source projects. They ship the syscall layer, and distributions ship the user
layer.

~~~
JdeBP
This makes it seem that the POSIX subsystem _only ever_ did that, which is not
true at all. A better statement is at
[https://news.ycombinator.com/item?id=11392369](https://news.ycombinator.com/item?id=11392369)
.

------
frik
Is this part of a patent deal between Microsoft and Canonical? Or why would
Canonical help them - that' s the only explanation that makes sense. We all
know how it works out for companies sleeping in bed with a huge corporation...
either the buy you, do an inside job trojan horse style, or compete against
you. (Cyanogen, Nokia, Xamarin, Yahoo, Sun, RedHat, Google, Apple, etc) If
they buy Canonical and/or RedHat, I would drop Ubuntu/RedHat in a second and
would advise everyone to switch to Debian or another independent community
driven distro.

------
yarou
This is neat. Many moons ago, I remember using Interix and SFU on Windows XP
(also tried coLinux and of course Cygwin and mingw as they became available).
What I did notice with SFU/Interix is that they were extremely sluggish, when
compared to an actual POSIX system. It will be interesting to see the
performance of this on Windows 10.

------
frozenport
I don't get it. What's the use case for a few core utilities running natively?

~~~
typon
It's not a 'few' core utilities. It's any packages available on Ubuntu.

~~~
frozenport
All the CLI packages I want that are on Ubuntu are also on Windows. I don't
see Windows users dying for lack of applications...

------
elcct
That will be really nice. I only use Windows for Music and for development I
use virtual machines. I would love to develop things "natively" in Windows.

------
sickbeard
Now windows users can learn bash cmd line and switch completely!

~~~
rhabarba
As a Windows and BSD user, I completely switched to the superior ksh.

------
eip
[http://i.imgur.com/y6clspP.jpg](http://i.imgur.com/y6clspP.jpg)

------
agumonkey
wusybox

------
hydromet
"Resistance Is Futile"

------
technimad
OMG.

------
dba7dba
Title of the article made me think, bash on Windows? Why is that news?

------
rosalinekarr
Glad to see everyone taking the title so literally, "_Bash_ on Windows."

------
jasonjei
This is totally reminiscent of the Apple integrating the NeXT code base (and
inheriting BSD by way of it). If they can integrate Linux as a first-class
citizen in Windows, I will totally be sold on Windows as an OS platform.

Can you imagine the day you'd be able to link a library built in Linux with a
Windows native app?

------
hodwik
How in God's green earth did Canonical think helping Microsoft with this was a
good idea for the Linux community?

~~~
josephpmay
-It solidifies Bash as the dev. shell of choice

-It facilitates app cross comparability

-For Canonical, it reinforces the idea that Ubuntu == Linux, which is really good for their bottom line

-I wouldn't be surprised if Microsoft forked over a solid amount of cash

~~~
rhabarba
As a dev, I don't use the screwed up bash on any system I work on. It just
doesn't work.

------
xaduha
> Windows 10 users

> Can open the Windows Start menu

> And type "bash" [enter]

> Which opens a cmd.exe console

Right... Bash is a shell, but your interaction with it is controlled by a
terminal program. Unless there are some real changes to cmd.exe t̶h̶e̶n̶
̶i̶t̶'̶s̶ ̶n̶o̶t̶ ̶t̶h̶a̶t̶ ̶i̶m̶p̶r̶e̶s̶s̶i̶v̶e̶ . You can compile a native
bash and other utils now yourself, it's not that hard.

EDIT: It's more like a Linuxulator from BSD, which is certainly cool.

~~~
AlexeyBrin
You seem to completely miss the point of what they did. It is not a simple
Bash recompilation for Windows. It is a way to run Linux (Ubuntu) binaries on
Windows.

~~~
TheRealDunkirk
Well I, for one, think he has a point. Part of what makes the shell so useful
on Linux is, say, highlight-to-select. When the CMD.EXE doesn't understand
line breaks in copied text, it's substantially crippled. You need a proper
terminal to take advantage of a proper shell. They go hand-in-hand.

~~~
Guvante
Nothing about what they implemented prevents you from using a different
terminal.

Also cmd.exe on Windows 10 does support line breaks in copied text from what
my minor test just showed.

