It’s no secret that web development tooling have been steadily trending towards use of open-source software over the last decade. At conferences and meetups, we’ve seen Lenovos and Toshibas being edged out by Macbooks of every kind, and even the occasional non-Apple laptop is not unlikely to be running some flavour of Linux (as happens to be the case with my Thinkpad).
I recently started working with a large team of web developers who are - for the most part - Windows-based, and this led me to a surprising discovery: much of the open-source web development tool ecosystem is just paaainful to use on Windows. Open-source projects, which traditionally and practically favour Linux, treat the Microsoft system as an afterthought, if at all. So when a .NET developer attempts to jump into working with Node / Golang / Python, they are immediately disadvantaged by tooling barriers and lack of community content and support.
Every step of the way, Windows creates friction for web developers who choose to build web products using modern open-source technologies.
Thanks to its Unix underpinnings, macOS has become an almost de-facto standard in this space. But many developers do prefer to use Windows as their primary desktop OS - for a multitude of very valid reasons, or just due to personal tastes, or simply because gaming.
The practice of DevOps teaches us to build bridges. And so we shall certainly do whatever is necessary 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, those other two dominant platforms.
EveryoneMost of us either already are, or are soon going to be, using this little tool known as 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…
If you wish, here is another shining example of the hoops one needs to jump through to get some Node.js action on Windows. I won’t post more because the Interwebs are ripe with them (or just talk to some Node developers who happen to use Windows).
What can we do today to improve this?
- Automate everything. In place of PowerShell scripts, use task runners. While the venerable
makecan be installed on Windows, it’s a bit of a ceremony, so try some alternative, cross-platform task runners. We are successfully using go-task.
- Write tooling around Docker, and try to run as much of your toolchain in containers as possible. Standardise on an image that will work identically across platforms. Encourage yourself and your team to think “container-first”.
- (reluctantly) use docker-toolbox. Yes, this is a legacy solution, but at least it will get around the Hyper-V requirement, and enable use of Vagrant and Virtualbox.
docker-toolbox’s days, however, are probably numbered.
Other ways exist to ease the path of a Windows web dev, which I will explore in future posts. In the meantime, reach out to @boomstik on twitter with your thoughts, comments and ideas.