This is part of a series on moving from desktop Linux back to Windows.
In short: I would not have moved back to Windows had it not been for the Windows Subsystem for Linux (WSL).
It has made the move from Linux back to Windows so much easier because I can still do the things that I’ve been doing for years, and do every day, quick and easy and familiar: installing and updating development environments (Python, Go, nodejs), databases (PostgreSQL); interacting with source control (git); running apps and tests; running docker clients; etc. So many of the technologies I work with day to date are “Linux/Mac first”, or maybe more accurately “Windows… last”. That was a big motivator for me moving off of Windows in the first place.
WSL is, for me, a game changer when it comes to the local development experience on Windows.
What a world we live in.
What is WSL?
WSL, in short, lets you install Linux environments on Windows without using a virtual machine. Jessie Frazelle has a great write-up on how it works under the hood. For installing and using WSL, the docs are great, too.
What can you do in WSL?
You can run Linux/Mac-first programming environments
You can install and run services, such as PostgreSQL.
You can call Windows binaries from Linux, and vice versa. Here’s a ridiculous example that you’d never do in real life because the
win key or launchy both make running windows binaries so easy, but hey, what the heck:
Note: you need Windows 10 PRO to run Docker for Windows!
You can use a terminal manager like ConEmu — for me, kinda just like iTerm on Mac or Terminal on Ubuntu — and create tabs to your heart’s content (and you can even mix-n-match with linux, cmd, and powershell terminals; and, yes, you can do it all with keyboard shortcuts)
You can, of course, tmux
You can edit your code in your favorite editor (VS Code is a Windows favorite) and run it on Linux.
There are, of course, shortcomings and bugs (but how cool is it that WSL itself is on GitHub?!).
I haven’t used it enough in anger yet, and admittedly have not used it heavily enough to have hit any absolute blockers (I’m sure they exist). Though I have brought several of my personal programming projects from Ubuntu onto Windows — all using Go, PostgreSQL, and gulp — and it was all straightforward. Except gulp (natch), b/c of some npm weirdness that took me as long to resolve as it did to bring over the Go apps and databases.
Thus far, though, I am very happy with the local development experience on Windows, thanks in large part to WSL.