One thing I really don't get is why the whole Ubuntu on Windows is such a hyped feature? I've been using Cygwin for 10 years or so now, which has pretty much all of the tools and stuff from the OSS world, so what is so much better with running native Ubuntu binaries? Can the native Ubuntu binaries even interact with native Windows binaries (for example, piping output to eachother etc)? I'm guessing I'm missing something big..?The one big thing about Cygwin is that it's an emulation layer. For the most part, that's rather meaningless, but there is one notable exception which is very, very disturbing.
GNU tools (or pretty much every Unix software) assume that you can fork() rather cheaply. It copies the page table, marks it COW, and brings another process into existence, that's it.
But Windows does not expose this functionality in its ordinary, publicly accessible API (although the kernel could very well do it). Instead, it can only spawn fresh processes with their own, separate set of pages. Which means that in order for programs that rely on fork to work, Cygwin has to do an awful lot of work, copying around memory between processes, and it effectively doubles the pressure on the page manager (because... no sharing pages). This is why GNU tools suck so much, it's why people start to puke when someone innocently writes "to build, simply run ./configure" -- running ./configure takes about 30 times as long as on a Linux machine, for no directly obvious reason.
Now, with this native Ubuntu-compatible Unix layer, forking means simply that, forking. No copying around stuff, no sucks. This is big win.
That, and of course you can directly use the up-to-date packages intended to run under present-day Ubuntu, rather than some UnxUtils or GnuWin32 packages from around 2008.
The interaction between Unix and Windows processes is... uh... limited. Let's use that word. But the point is, you can run native executables which can access the file system, and they don't suck.