abnercoimbre
Bill Strong
This means you can use the linux version of emacs, vim or etc with full support for the linux commands without the emulation. It means you can run llvm and/or gcc to compile your code for linux. You can use all the normal commands of a linux system such as grep and awk, on your Windows 10 machine, natively, without having to share folders to work on files.
I'm wary of the terms "natively" and "without the emulation". To clarify this is just an Ubuntu image running in userspace as a program on your desktop. It will not be a graphical desktop (Russ Alexander notes they are "only working command line"). The way you can run your Ubuntu binaries is because of some real-time translation of Linux system calls into Windows system calls. If you know "Wine", then it'd be the inverse of that. By definition there is some overhead, although it may be negligible if your developer toolset doesn't stress the system.
Reviewers are warning some things won't work properly once released, and there will be limitations, but that's to be expected. Also keep in mind this will be a very self-contained thing relying on the Windows Subsystem for Linux (WSL) introduced in build 14251. You cannot automate Windows commands with bash scripts, for example, or run bash within PowerShell or something.
It's a promising program, but not a complete Linux system. As long as that's understood, I feel it'll be nice to to avoid switching operating systems if unnecessary, avoid re-compiling some of your helpful command-line utilities, etc. It's just not that much of a game changer as people make it out to be?
-Abner
So, to be clear, this is intended for command line use, and that is the focus of Microsoft. However, there are plenty of instances documented of users running graphical tools through an Xserver->XClient.
When I spoke of "natively", I was speaking of Hardware Virtualization. I guess I didn't make that clear. Some of the reasons I like this solution better are:
1) Full use of available memory. In a VM, you select an amount that you believe you will use, then if you end up using more, you need to reboot. This is not needed with Ubuntu on Windows.
2) Access to disks. With a VM, you are micromanaging folders and drives that can be seen from the VM. Sharing folders doesn't always work reliably. USB devices don't always work reliably. With Ubuntu on Windows, if Windows can see it, so can Bash.
3) You reduce the over head of running the full Linux kernel on top of the Virtualization layer on top of the Windows kernel.
4) It is like Wine.
5) It is the benefit of the Linux/Unix environment with the portability of Windows drivers. Not everyone has driver troubles with Linux, but enough do that this might be enough for many.
6) Microsoft has expressed interest in bringing other "flavors" to choose from, after they are done with the Ubuntu version. So if you like Centos, or Alpine, you may get your wish.