With Summer coming to a close I decided to take another surf on the WSL (Windows Subsystem for Linux) wave and in short was not disappointed. Technically there are two flavors of WSL, WSL 1 and WSL 2. WSL 1 is a translation layer that takes Linux system calls and converts them into Windows ones. It also tends to be more performant when working in the Windows file system. WSL 2 uses a full real Linux kernel and has poorer performance in the Windows file system but great performance when working in the Linux one. Due to its full Linux kernel, WSL 2 supports a far wider range of Linux applications including large complex ones; in general, WSL 2 is going to be the right choice for most use cases, especially software development, and that’s the version I am using.
WSL offers a wide range of Linux distributions. Most of which are freely available in the Windows Store; there are also great commercial options including Pengwin by Whitewater Foundry, a Debian-based distribution that comes bundled with a cornucopia of quality-of-life utilities pre-installed both to make using WSL more enjoyable and to make installing common development stacks and GUI applications straightforward. I’ve tried both Pengwin and Ubuntu and ended up sticking with Ubuntu for the purposes of this post. You might note that the Linux distro will only show half of your system’s physically installed RAM. That is by design so as not to overwhelm the host system, but you can override it in the .wslconfig
file.
Now that you are all set up on the calm seas of WSL, you might be wondering what exactly we are going to do here other than run a neofetch
and marvel at the glory of our system? The answer is simple. Whatever development work you would’ve done on a regular Linux system. Any Linux packages you would’ve used such as asdf
, rbenv
and pyenv
are available and installable in exactly the same way they are on any other Linux system, because WSL is a Linux system.
Once you have your dependencies installed, the next step is to configure your development environment and that means your editor. I am nowhere near brave enough to impose my editor preferences upon you, however, JetBrains is amazing and has great support for WSL in all of their IDEs. Sorry, I couldn’t resist. If you are looking for a free editor with great WSL support and don’t already have a preference, Microsoft’s Visual Studio Code has excellent pre-configured support for WSL, is widely used and is well-supported.
After about a week of running WSL as my primary development environment, I am going to stick with it for a while and see where things go. What about you? Have you ridden the waves of WSL? What was your experience? Let me know on LinkedIn. Also, if you need some ETL or automation for your organization, take a look at Alice.