The biggest issue I have had with their subsystem is that of the file system (NTFS). The fact that I can't have long paths and can't soft link seem ridiculous.
NTFS has a functional equivalent to soft links in the form of reparse points, although I don't know to what degree that feature is exposed in the UI, if at all. Last time I looked into it (admittedly, years ago) they could only be created via the command line. Not sure what you mean by "can't have long paths" though, NTFS allows you to programmatically create paths up to 32,767 code points long:
Windows seems to have a certain hard limit on file path characters (a max of 160) which they seem to have recently removed [0] - So while my point is technically moot it's not enabled by default.
As for soft links, a lot of linux tools create soft links (ln -s from to) and generally that fails on NTFS (I tried installing a bunch of npm modules and all had this specific issue)[1].
It's a max of 260, and it's a Win32 subsystem limitation, not the limitation of NT OS or NTFS file system - and even in Win32 there are escape hatches for it, it's just that you need to know of them and use them explicitly to get such support.
With respect to symlinks - NTFS supports them, but there are subtle semantic differences with POSIX. WSL does actually support symlinks (i.e. you can do ln -s), it's various other behavior around them that breaks, like trying to untar a file that contains symlinks.
The team said that they're working on a custom implementation of symlinks that would provide proper behavior (but wouldn't be seen as a symlink from Win32).
I think the problem here is that Linux NTFS drivers are all a pile of reverse-engineered hacks, so obscure features are overlooked or not fully implemented.
Now, Microsoft should be in a position to put something better into their WSL, but that might entail the risk that someone else will hack that implementation and provide good drivers for everyone, something they clearly don't want (or they would have provided open specs for NTFS support by now).
Correct me if I'm wrong, but you should be able to loopback-mount a "proper" file system (e.g. ext4) from a file on NTFS, and then you'll have no limits other than what ext4 imposes. Of course, you then lose easy interop with the filesystem from Windows side, but that is the inherent trade-off here.
WSL doesn't actually run a Linux kernel; it emulates the syscalls and process environment Linux offers and provides a binary loader. It's WINE in reverse.
So there's no ext4 driver, and no concept of loopback mounts.
Ah, indeed (although it's not quite WINE in reverse, since WINE emulates userspace calls, not kernel syscalls).
I see that there's considerable demand for this exact thing in their bug tracker already. If they go for a low-hanging fruit here, it'd be FUSE support - and that should give us ext2, at least.