Over the years working with developers on all major desktop platforms, I’ve observed an interesting pattern. Much of the web development tool ecosystem is built on and around open-source projects, which traditionally favour Linux. So when a .NET developer, running Windows, jumps into working with Node / Golang / Python, they are immediately disadvantaged by tooling barriers and lack of community content and support.
Windows creates constant friction for OSS-based web devs to work fluidly.
This does not affect macOS, thanks to its Unix underpinnings. But many developers do prefer to use Windows as their primary desktop OS - be it because of other work they are doing in Microsoft-backed environments, or just because gaming. Whatever the preferred OS, the work needs to happen. But it does take extra effort on Windows.
We, as DevOps practitioners, will do whatever is needed to build as good of a web dev experience possible in the Microsoft ecosystem. But I feel this experience will always lag behind that of working on Linux or macOS, just due to the sheer size of the ecosystem shared by, and targeting, the other two dominant platforms.
- Everyone™ either already uses, or wants to use, Docker.
- Also, many devs use VirtualBox, because this free virtualization platform is what a lot of the tooling and community knowledge are centered around.
- But, on Windows, Docker needs Hyper-V.
- But! Hyper-V is incompatible with Virtualbox.
- But!! Virtualbox has the broadest ecosystem of getting shit done in a fun automated way (Vagrant, basically).
Lisa needs bracesDocker needs Hyper-V…
There are ways of making it better.
- Use docker-toolbox. Yes, this is a legacy solution, but it will allow you to get around the Hyper-V requirement, and use Vagrant and Virtualbox for other needs.
- Write tooling around it that is cross-platform. Use cross-platform task runners. We’ve had good success with go-task
- Write toolchains to wrap your workflows into, and run them in Docker. This gives the added benefit of portability of your development environment across machines and even platforms.
There exist other ways to ease the path of a Windows web dev, which I will explore in future posts. Holler @boomstik on twitter with your thoughts, comments and ideas.