data codes through eyeglasses

An Ode to Windows Subsystem for Linux (WSL)

I’ve always been enjoying running my Linux-based development workflows on a Windows machine with Windows Subsystem for Linux (WSL). Even on a day when I don’t do any development work, I would still open up my Windows Terminal to run the sudo apt update and sudo apt upgrade -y command. Keeping my Linux system up-to-date manually somehow gives me a sense of blissfulness.

I’ve always been more comfortable working with UNIX-based environments. I got in touch with Linux when I was attending my pre-U programme. I installed it on my desktop PC and used it as my daily driver. Then I started to meddle with Hackintosh to try out macOS. When I started working, the first personal laptop that I got myself with was a MacBook Pro. Throughout my days with Linux, Hackintosh and my first MacBook Pro, I just had to make sure that the machines are configure with dual boot (or triple boot when I started to use Hackintosh) for Windows. I always had to reboot the machine to switch between the OSes for apps or tools exclusive on each of them.

When Microsoft announced WSL a few years ago, I was so excited about it. Back then, my MacBook Pro was aging and I was looking to get a new laptop. But the then-current generation of MacBook Pro with the touch bar was really deterring me from getting one due to various issues other buyers were experiencing. I was considering to get a laptop that comes natively with Linux, but pretty much all major laptop brands here in Malaysia shipped their products bundled with Windows. Having dealt with hardware drivers on Linux on desktop machines in the past, I was concerned about the same issue on a laptop, given how limited after-market hardware customisation can be done on a laptop machine. So the release of WSL bridged my needs for using my UNIX-based development workflows on a Windows laptop and saved me from the difficulty in selecting the right laptop to purchase.

The version 2 of WSL was released not long after the first version of WSL was released. WSL2 has also been an improvement for my workflow. I find it noticeably faster then its predecessor. Microsoft’s partnership and collaboration with the Docker team to port Docker for Windows to be powered by WSL2 instead of Hyper-V or VirtualBox also gave Docker for Windows a performance boost. The seamless integration of Visual Studio Code within WSL also makes the development flow much smoother.

Building on top of WSL, Microsoft also recently released Windows Subsystem for Android (WSA). Although it is not officially available in Malaysia, a fan of WSL like me would figure out a way to get their hands on it. Given that Android is based on Linux, the possibility of having Android running in the Windows environment, just like how Linux can through WSL has long been speculated. WSA could make mobile apps development much easier for developers. At the time of writing, I’m still tinkering with my WSL and WSA to establish a smooth Flutter development workflow involving the two. The possibility to have these workflows running harmoniously and seamlessly simply excites me.

I really appreciate and applaud Microsoft’s effort in embracing Linux and FOSS in general, as opposed to strictly opposing them years before. As a result of this change of their stance, we get good stuffs like WSL, Docker for Windows, Visual Studio Code, and many of the enhancements on GitHub etc. It makes the experience as a developer much more pleasant for me.

Leave a Reply

Your email address will not be published.