The practicality is that you now install Linux via the Windows Store instead of having to download VirtualBox (or run Hyper-V), download an ISO file, proceed with setup with mount points etc, you have the necessary guest tools, configure the host port re Routing (is this possible in Hyper-V? I’ve only used it with qemu) plus a bunch of other things. It’s even easier, especially if you only use it to run a service or container now and then.
A GPU is handy for just about anything that uses machine learning, as well as for running an IDE from Linux itself (because it’s a bit faster and more comfortable than a VM with a virtual GPU).
For example, for network traffic, (was that possible?) it is possible to bind a port to localhost on the host. For example, on Windows I was able to point the browser to localhost and access the Linux server. Since localhost is private (secure origin etc), it saves an obscure HTTPS setting to do the same with an internal IP of a virtual machine, or you have to write a forward self-starting SSH port script.
In terms of FS, I haven’t had any issues with WSL2 (on an SSD, maybe that matters). I’ve cracked my WSL1 metadata store before, but WSL2 can’t do it that way. You may lose performance if you quickly create a lot of small files on a dynamically growing disk (npm install/build shipping/dotnet restore), I haven’t had any issues with it so I can’t say.
What matters is where you save the files: if you store your code and tools on Windows, and access them from Linux, your toolkit has to go through many more layers than if you install your code and tools in a VM and via an interface The graphical user makes minor updates. If you clone your code to %userprofile%Repos and then go there from WSL and build, you are sure to run into problems, not least because you have to go through Windows Defender that way. If I do it in reverse (clone in WSL2 to $HOME/Repos and move from Windows GUI to that folder) the performance is much better in my experience. You should also do this because the average IDE only mods some files and the compiler has to go through the entire source tree. IntelliJ and VS Code have native support for the second method which works well.
WSL2 also integrates directly with Docker for Windows, something I still see often for Windows developers who want to run Docker but don’t want to learn Linux.
“Lifelong zombie fanatic. Hardcore web practitioner. Thinker. Music expert. Unapologetic pop culture scholar.”