I’m making a video game prototype that uses an online authorative server to process game logic. To develop this server-side program, I want to use my familiarity with Linux. I’ve worked with Ubuntu and Arch linux for over 10 years. I like Linux and open source tools, and I want to bring such a development environment to my Windows-based OS so I don’t have to reboot. There are three approaches one could take to achieve this:

  • Virtual machine (VM) running a Linux distro of choice.
  • Docker container running Linux distro of choice.
  • Windows Subsystem for Linux (WSL) running Linux distro of choice.

Windows Subsystem for Linux (WSL)

I am curious about the Windows Subsystem for Linux, so set about using this first.

WSL is surprising. You can find yourself running Ubuntu *within* Windows in only a few minutes. I was thrilled. However, I did encounter some issues with a few packages that failed to install or build and learned just as quickly about the limitations of WSL. While this WSL option is valuable and comes with many things that you might expect, I did find that the limitations of working within WSL slowed me down and added a layer of complexity in solves that you don’t get with other options.

If you want to give it a try yourself, here are the steps to get started:

  1. Open Turn Windows features on or off.
  2. Enable Windows Subsystem for Linux.
  3. Restart your computer.
  4. Install Ubuntu app from the Windows Store (note: there is a pop-up for signing up to a Microsoft Account if you are not signed in, you can safely close this and your download will continue normally).

Further Reading

Here are some articles I came across regarding WSL setup, or general dev setup on Windows.

Ben Roberts’ quick and easy guide: https://www.roberts999.com/posts/2018/11/wsl-coding-windows-ubuntu

John Woodruff’s setup guide: https://dev.to/johnbwoodruff/epic-development-environment-using-windows-subsystem-forlinux-5f0n

Warning: Do not change Linux files using Windows apps and tools: https://devblogs.microsoft.com/commandline/do-not-change-linux-files-using-windows-apps-and-tools/

WSL FAQ: https://docs.microsoft.com/en-us/windows/wsl/faq

(old) Aaron Stannard’s guide for setting up Python dev environment on Windows using Cygwin: http://www.aaronstannard.com/how-to-setup-a-proper-python-environment-on-windows/

Conclusion, for now…

With improvements and fixes coming for WSL there is more to learn. However, from the responses to questions about development in UserVoice and elsewhere, there are clear indications that WSL is unlikely to receive the level of attention in updates and development as the other options, serving as a nifty bonus feature but not exactly what I want. For this reason I am reluctant to continue with WSL for a development environment.

In the next part of this series, I will be trying out Virtualbox with Vagrant.